Chapter 17. Using USES Macros

Table of Contents

17.1. An Introduction to USES

USES macros make it easy to declare requirements and settings for a port. They can add dependencies, change building behavior, add metadata to packages, and so on, all by selecting simple, preset values.

Each section in this chapter describes a possible value for USES, along with its possible arguments. Arguments are appended to the value after a colon (:). Multiple arguments are separated by commas (,).

Example 1. Using Multiple Values
USES=	bison perl
Example 2. Adding an Argument
USES=	tar:xz
Example 3. Adding Multiple Arguments
USES=	drupal:7,theme
Example 4. Mixing it All Together
USES=	pgsql:9.3+ cpe python:2.7,build

17.2. 7z

Possible arguments: (none), p7zip, partial

Extract using 7z(1) instead of bsdtar(1) and sets EXTRACT_SUFX=.7z. The p7zip option forces a dependency on the 7z from archivers/p7zip if the one from the base system is not able to extract the files. EXTRACT_SUFX is not changed if the partial option is used, this can be used if the main distribution file does not have a .7z extension.

17.3. ada

Possible arguments: (none), 6, 12, (run)

Depends on an Ada-capable compiler, and sets CC accordingly. Defaults to use gcc6-aux from ports.

17.4. autoreconf

Possible arguments: (none), build

Runs autoreconf. It encapsulates the aclocal, autoconf, autoheader, automake, autopoint, and libtoolize commands. Each command applies to ${AUTORECONF_WRKSRC}/configure.ac or its old name, ${AUTORECONF_WRKSRC}/configure.in. If configure.ac defines subdirectories with their own configure.ac using AC_CONFIG_SUBDIRS, autoreconf will recursively update those as well. The :build argument only adds build time dependencies on those tools but does not run autoreconf. A port can set AUTORECONF_WRKSRC if WRKSRC does not contain the path to configure.ac.

17.5. blaslapack

Possible arguments: (none), atlas, netlib (default), gotoblas, openblas

Adds dependencies on Blas / Lapack libraries.

17.6. bdb

Possible arguments: (none), 48, 5 (default), 6

Add dependency on the Berkeley DB library. Default to databases/db5. It can also depend on databases/db48 when using the :48 argument or databases/db6 with :6. It is possible to declare a range of acceptable values, :48+ finds the highest installed version, and falls back to 4.8 if nothing else is installed. INVALID_BDB_VER can be used to specify versions which do not work with this port. The framework exposes the following variables to the port:

BDB_LIB_NAME

The name of the Berkeley DB library. For example, when using databases/db5, it contains db-5.3.

BDB_LIB_CXX_NAME

The name of the Berkeley DBC++ library. For example, when using databases/db5, it contains db_cxx-5.3.

BDB_INCLUDE_DIR

The location of the Berkeley DB include directory. For example, when using databases/db5, it will contain ${LOCALBASE}/include/db5.

BDB_LIB_DIR

The location of the Berkeley DB library directory. For example, when using databases/db5, it contains ${LOCALBASE}/lib.

BDB_VER

The detected Berkeley DB version. For example, if using USES=bdb:48+ and Berkeley DB 5 is installed, it contains 5.

databases/db48 is deprecated and unsupported. It must not be used by any port.

17.7. bison

Possible arguments: (none), build, run, both

Uses devel/bison By default, with no arguments or with the build argument, it implies bison is a build-time dependency, run implies a run-time dependency, and both implies both run-time and build-time dependencies.

17.8. budgie

Possible arguments: (none)

Provide support for the Budgie desktop environment. Use USE_BUDGIE to select the components needed for the port. See Using Budgie for more information.

17.9. cabal

Ports should not be created for Haskell libraries, see Haskell Libraries for more information.

Possible arguments: (none), hpack, nodefault

Sets default values and targets used to build Haskell software using Cabal. A build dependency on the Haskell compiler port (lang/ghc) is added. If there is some other version of GHC already listed in the BUILD_DEPENDS variable (for example, lang/ghc810), it would be used instead. If the hpack argument is given, a build dependency on devel/hs-hpack is added and hpack is invoked at configuration step to generate .cabal file. If the nodefault argument is given, the framework will not try to pull the main distribution file from the Hackage. This argument is implicitly added if USE_GITHUB or USE_GITLAB is present.

The framework provides the following variables:

CABAL_REVISION

Haskell packages hosted on Hackage may have revisions. Set this knob to an integer number to pull in revised package description.

USE_CABAL

If the software uses Haskell dependencies, list them in this variable. Each item should be present on Hackage and be listed in form packagename-0.1.2. Dependencies can have revisions too, which are specified after the _ symbol. Automatic generation of the dependency list is supported, see Building Haskell Applications with cabal.

CABAL_FLAGS

List of flags to be passed to cabal-install during the configuring and building stage. The flags are passed verbatim. This variable is usually used to enable or disable flags that are declared in the .cabal file. Pass foo to enable the foo flag and -foo to disable it.

CABAL_EXECUTABLES

List of executable files installed by the port. Default value: ${PORTNAME}. Consult the .cabal file of the project being ported to get a list of possible values for this variable. Each value corresponds to an executable stanza in the .cabal file. Items from this list are automatically added to pkg-plist.

SKIP_CABAL_PLIST

If defined, do not add items from ${CABAL_EXECUTABLES} to pkg-plist.

opt_USE_CABAL

Adds items to ${USE_CABAL} depending on opt option.

opt_CABAL_EXECUTABLES

Adds items to ${CABAL_EXECUTABLES} depending on opt option.

opt_CABAL_FLAGS

If opt is enabled, append the value to ${CABAL_FLAGS}. Otherwise, append -value to disable the flag. Note that this behavior is slightly different from the plain CABAL_FLAGS as it does not accept values starting with -.

CABAL_WRAPPER_SCRIPTS

A subset of ${CABAL_EXECUTABLES} containing Haskell programs to be wrapped into a shell script that sets *_datadir environment variables before running the program. This also causes the actual Haskell binary to be installed under libexec/cabal/ directory. This knob is needed for Haskell programs that install their data files under share/ directory.

FOO_DATADIR_VARS

List of extra Haskell packages, whose data files should be accessible by the executable named FOO. The executable should be a part of ${CABAL_WRAPPER_SCRIPTS}. Haskell packages listed there should not have a version suffix.

CABAL_PROJECT

Some Haskell projects may already have a cabal.project file, which is also generated by the ports framework. If that is the case, use this variable to specify what to do with the original cabal.project. Setting this variable to remove will cause the original file to be removed. Setting this variable to append will:

  1. Move the original file to cabal.project.${PORTNAME} during the extract stage.

  2. Concatenate the original cabal.project.${PORTNAME} and the generated cabal.project into a single file after the patch stage. Using append makes it possible to perform patching on the original file before it gets merged.

17.10. cargo

Possible arguments: (none)

Uses Cargo for configuring, building, and testing. It can be used to port Rust applications that use the Cargo build system. For more information see Building Rust Applications with cargo.

17.11. charsetfix

Possible arguments: (none)

Prevents the port from installing charset.alias. This must be installed only by converters/libiconv. CHARSETFIX_MAKEFILEIN can be set to a path relative to WRKSRC if charset.alias is not installed by ${WRKSRC}/Makefile.in.

17.12. cmake

Possible arguments: (none), insource, noninja, run, testing

Use CMake for configuring the port and generating a build system.

By default an out-of-source build is performed, leaving the sources in WRKSRC free from build artifacts. With the insource argument, an in-source build will be performed instead. This argument should be an exception, used only when a regular out-of-source build does not work.

By default Ninja (devel/ninja) is used for the build. In some cases this does not work correctly. With the noninja argument, the build will use regular make for builds. This argument should only be used if a Ninja-based build does not work.

With the run argument, a run dependency is registered in addition to a build dependency.

With the testing argument, a test-target is added that uses CTest. When running tests the port will be re-configured for testing and re-built.

For more information see Using cmake.

17.13. compiler

Possible arguments: (none), env (default, implicit), C++17-lang, C++14-lang, C++11-lang, gcc-C++11-lib, C++11-lib, C++0x, c11, nestedfct, features

Determines which compiler to use based on any given wishes. Use C++17-lang if the port needs a C++17-capable compiler, C++14-lang if the port needs a C++14-capable compiler, C++11-lang if the port needs a C++11-capable compiler, gcc-C++11-lib if the port needs the g++ compiler with a C++11 library, or C++11-lib if the port needs a C++11-ready standard library. If the port needs a compiler understanding C++0X, C11 or nested functions, the corresponding parameters should be used.

Use features to request a list of features supported by the default compiler. After including bsd.port.pre.mk the port can inspect the results using these variables:

  • COMPILER_TYPE: the default compiler on the system, either gcc or clang

  • ALT_COMPILER_TYPE: the alternative compiler on the system, either gcc or clang. Only set if two compilers are present in the base system.

  • COMPILER_VERSION: the first two digits of the version of the default compiler.

  • ALT_COMPILER_VERSION: the first two digits of the version of the alternative compiler, if present.

  • CHOSEN_COMPILER_TYPE: the chosen compiler, either gcc or clang

  • COMPILER_FEATURES: the features supported by the default compiler. It currently lists the C++ library.

17.14. cpe

Possible arguments: (none)

Include Common Platform Enumeration (CPE) information in package manifest as a CPE 2.3 formatted string. See the CPE specification for details. To add CPE information to a port, follow these steps:

  1. Search for the official CPE entry for the software product either by using the NVD’s CPE search engine or in the official CPE dictionary (warning, very large XML file). Do not ever make up CPE data.

  2. Add cpe to USES and compare the result of make -V CPE_STR to the CPE dictionary entry. Continue one step at a time until make -V CPE_STR is correct.

  3. If the product name (second field, defaults to PORTNAME) is incorrect, define CPE_PRODUCT.

  4. If the vendor name (first field, defaults to CPE_PRODUCT) is incorrect, define CPE_VENDOR.

  5. If the version field (third field, defaults to PORTVERSION) is incorrect, define CPE_VERSION.

  6. If the update field (fourth field, defaults to empty) is incorrect, define CPE_UPDATE.

  7. If it is still not correct, check Mk/Uses/cpe.mk for additional details, or contact the Ports Security Team <ports-secteam@FreeBSD.org>.

  8. Derive as much as possible of the CPE name from existing variables such as PORTNAME and PORTVERSION. Use variable modifiers to extract the relevant portions from these variables rather than hardcoding the name.

  9. Always run make -V CPE_STR and check the output before committing anything that changes PORTNAME or PORTVERSION or any other variable which is used to derive CPE_STR.

17.15. cran

Possible arguments: (none), auto-plist, compiles

Uses the Comprehensive R Archive Network. Specify auto-plist to automatically generate pkg-plist. Specify compiles if the port has code that need to be compiled.

17.16. desktop-file-utils

Possible arguments: (none)

Uses update-desktop-database from devel/desktop-file-utils. An extra post-install step will be run without interfering with any post-install steps already in the port Makefile. A line with @desktop-file-utils will be added to the plist. Only use this macro if the port provides a .desktop file which contains a MimeType entry.

17.17. desthack

Possible arguments: (none)

Changes the behavior of GNU configure to properly support DESTDIR in case the original software does not.

17.18. display

Possible arguments: (none), ARGS

Set up a virtual display environment. If the environment variable DISPLAY is not set, then Xvfb is added as a build dependency, and CONFIGURE_ENV is extended with the port number of the currently running instance of Xvfb. The ARGS parameter defaults to install and controls the phase around which to start and stop the virtual display.

17.19. dos2unix

Possible arguments: (none)

The port has files with line endings in DOS format which need to be converted. Several variables can be set to control which files will be converted. The default is to convert all files, including binaries. See Simple Automatic Replacements for examples.

  • DOS2UNIX_REGEX: match file names based on a regular expression.

  • DOS2UNIX_FILES: match literal file names.

  • DOS2UNIX_GLOB: match file names based on a glob pattern.

  • DOS2UNIX_WRKSRC: the directory from which to start the conversions. Defaults to ${WRKSRC}.

17.20. drupal

Possible arguments: 7, module, theme

Automate installation of a port that is a Drupal theme or module. Use with the version of Drupal that the port is expecting. For example, USES=drupal:7,module says that this port creates a Drupal 7 module. A Drupal 7 theme can be specified with USES=drupal:7,theme.

17.21. ebur128

Possible arguments: (none), build, lib, run, test

Adds a dependency on audio/ebur128. It allows to transparently depend on the rust or legacy variants by using DEFAULT_VERSIONS in make.conf. For instance, to use the legacy version, use DEFAULT_VERSIONS+=ebur128=legacy

When no arguments are used, the behavior is the same as if the lib argument was provided. The rest of the arguments provide the corresponding category of dependency.

17.22. eigen

Possible arguments: 2, 3, build (default), run

Add dependency on math/eigen.

17.23. elfctl

Possible arguments: (none)

Change an ELF binary’s feature control note by setting ELF_FEATURES.

Example 5. Uses=elfctl
USES=           elfctl
ELF_FEATURES=	featurelist:path/to/file1 \
		featurelist:path/to/file1 \
		featurelist:path/to/file2

The format of featurelist is described in elfctl(1). The file paths are relative to ${BUILD_WRKSRC}.

17.24. erlang

Possible arguments: (none), enc, rebar, rebar3

Adds a build and run time dependency on lang/erlang. Depending on the argument, it adds additional build dependencies. enc adds a dependency on devel/erlang-native-compiler, rebar adds a dependency on devel/rebar and rebar3 adds a dependency on devel/rebar3.

In addition, the following variables are available to the port:

  • ERL_APP_NAME: Erlang app name as installed in Erlang’s lib dir (minus version)

  • ERL_APP_ROOT: Root directory for this Erlang app

  • REBAR_CMD: Path to the "rebar" command

  • REBAR3_CMD: Path to the "rebar3" command

  • REBAR_PROFILE: Rebar profile

  • REBAR_TARGETS: Rebar target list (usually compile, maybe escriptize)

  • ERL_BUILD_NAME: Build name for rebar3

  • ERL_BUILD_DEPS: List of BUILD_DEPENDS in category/portname format

  • ERL_RUN_DEPS: List of RUN_DEPENDS in category/portname format

  • ERL_DOCS: List of documentation files and directories

17.25. fakeroot

Possible arguments: (none)

Changes some default behavior of build systems to allow installing as a user. See https://wiki.debian.org/FakeRoot for more information on fakeroot.

17.26. fam

Possible arguments: (none), fam, gamin

Uses a File Alteration Monitor as a library dependency, either devel/fam or devel/gamin. End users can set WITH_FAM_SYSTEM to specify their preference.

17.27. firebird

Possible arguments: (none), 25

Add a dependency to the client library of the Firebird database.

17.28. fonts

Possible arguments: (none), fc, fontsdir (default), none

Adds a runtime dependency on tools needed to register fonts. Depending on the argument, add a @fc ${FONTSDIR} line, @fontsdir ${FONTSDIR} line, or no line if the argument is none, to the plist. FONTSDIR defaults to ${PREFIX}/share/fonts/${FONTNAME} and FONTNAME to ${PORTNAME}. Add FONTSDIR to PLIST_SUB and SUB_LIST

17.29. fortran

Possible arguments: gcc (default)

Uses the GNU Fortran compiler.

17.30. fuse

Possible arguments: 2 (default), 3

The port will depend on the FUSE library and handle the dependency on the kernel module depending on the version of FreeBSD.

17.31. gem

Possible arguments: (none), noautoplist

Handle building with RubyGems. If noautoplist is used, the packing list is not generated automatically.

This implies USES=ruby.

17.32. gettext

Possible arguments: (none)

Deprecated. Will include both gettext-runtime and gettext-tools.

17.33. gettext-runtime

Possible arguments: (none), lib (default), build, run

Uses devel/gettext-runtime. By default, with no arguments or with the lib argument, implies a library dependency on libintl.so. build and run implies, respectively a build-time and a run-time dependency on gettext.

17.34. gettext-tools

Possible arguments: (none), build (default), run

Uses devel/gettext-tools. By default, with no argument, or with the build argument, a build time dependency on msgfmt is registered. With the run argument, a run-time dependency is registered.

17.35. ghostscript

Possible arguments: X, build, run, nox11

A specific version X can be used. Possible versions are 7, 8, 9, and agpl (default). nox11 indicates that the -nox11 version of the port is required. build and run add build- and run-time dependencies on Ghostscript. The default is both build- and run-time dependencies.

17.36. gl

Possible arguments: (none)

Provides an easy way to depend on GL components. The components should be listed in USE_GL. The available components are:

egl

add a library dependency on libEGL.so from graphics/libglvnd

gbm

Add a library dependency on libgbm.so from graphics/mesa-libs

gl

Add a library dependency on libGL.so from graphics/libglvnd

glesv2

Add a library dependency on libGLESv2.so from graphics/libglvnd

glew

Add a library dependency on libGLEW.so from graphics/glew

glu

Add a library dependency on libGLU.so from graphics/libGLU

glut

Add a library dependency on libglut.so from graphics/freeglut

opengl

Add a library dependency on libOpenGL.so from graphics/libglvnd

17.37. gmake

Possible arguments: (none)

Uses devel/gmake as a build-time dependency and sets up the environment to use gmake as the default make for the build.

17.38. gnome

Possible arguments: (none)

Provides an easy way to depend on GNOME components. The components should be listed in USE_GNOME. The available components are:

  • atk

  • atkmm

  • cairo

  • cairomm

  • dconf

  • esound

  • evolutiondataserver3

  • gconf2

  • gconfmm26

  • gdkpixbuf

  • gdkpixbuf2

  • glib12

  • glib20

  • glibmm

  • gnomecontrolcenter3

  • gnomedesktop3

  • gnomedocutils

  • gnomemenus3

  • gnomemimedata

  • gnomeprefix

  • gnomesharp20

  • gnomevfs2

  • gsound

  • gtk-update-icon-cache

  • gtk12

  • gtk20

  • gtk30

  • gtkhtml3

  • gtkhtml4

  • gtkmm20

  • gtkmm24

  • gtkmm30

  • gtksharp20

  • gtksourceview

  • gtksourceview2

  • gtksourceview3

  • gtksourceviewmm3

  • gvfs

  • intlhack

  • intltool

  • introspection

  • libartlgpl2

  • libbonobo

  • libbonoboui

  • libgda5

  • libgda5-ui

  • libgdamm5

  • libglade2

  • libgnome

  • libgnomecanvas

  • libgnomekbd

  • libgnomeprint

  • libgnomeprintui

  • libgnomeui

  • libgsf

  • libgtkhtml

  • libgtksourceviewmm

  • libidl

  • librsvg2

  • libsigc++12

  • libsigc++20

  • libwnck

  • libwnck3

  • libxml++26

  • libxml2

  • libxslt

  • metacity

  • nautilus3

  • orbit2

  • pango

  • pangomm

  • pangox-compat

  • py3gobject3

  • pygnome2

  • pygobject

  • pygobject3

  • pygtk2

  • pygtksourceview

  • referencehack

  • vte

  • vte3

The default dependency is build- and run-time, it can be changed with :build or :run. For example:

USES=		gnome
USE_GNOME=	gnomemenus3:build intlhack

See Using GNOME for more information.

17.39. go

Ports should not be created for Go libs, see Go Libraries for more information.

Possible arguments: (none), N.NN, N.NN-devel, modules, no_targets, run

Sets default values and targets used to build Go software. A build dependency on the Go compiler port is added, port maintainers can set version required. By default the build is performed in GOPATH mode. If Go software uses modules, the modules-aware mode can be switched on with modules argument. no_targets will setup build environment like GO_ENV, GO_BUILDFLAGS but skip creating extract and build targets. run will also add a run dependency on the Go compiler port.

The build process is controlled by several variables:

GO_MODULE

The name of the application module as specified by the module directive in go.mod. In most cases, this is the only required variable for ports that use Go modules.

GO_PKGNAME

The name of the Go package when building in GOPATH mode. This is the directory that will be created in ${GOPATH}/src. If not set explicitly and GH_SUBDIR or GL_SUBDIR is present, GO_PKGNAME will be inferred from it. It is not needed when building in modules-aware mode.

GO_TARGET

The packages to build. The default value is ${GO_PKGNAME}. GO_TARGET can also be a tuple in the form package:path where path can be either a simple filename or a full path starting with ${PREFIX}.

GO_TESTTARGET

The packages to test. The default value is ./…​ (the current package and all subpackages).

CGO_CFLAGS

Additional CFLAGS values to be passed to the C compiler by go.

CGO_LDFLAGS

Additional LDFLAGS values to be passed to the C compiler by go.

GO_BUILDFLAGS

Additional build arguments to be passed to go build.

GO_TESTFLAGS

Additional build arguments to be passed to go test.

See Building Go Applications for usage examples.

17.40. gperf

Possible arguments: (none)

Add a buildtime dependency on devel/gperf if gperf is not present in the base system.

17.41. grantlee

Possible arguments: 5, selfbuild

Handle dependency on Grantlee. Specify 5 to depend on the Qt5 based version, devel/grantlee5. selfbuild is used internally by devel/grantlee5 to get their versions numbers.

17.42. groff

Possible arguments: build, run, both

Registers a dependency on textproc/groff if not present in the base system.

17.43. gssapi

Possible arguments: (none), base (default), heimdal, mit, flags, bootstrap

Handle dependencies needed by consumers of the GSS-API. Only libraries that provide the Kerberos mechanism are available. By default, or set to base, the GSS-API library from the base system is used. Can also be set to heimdal to use security/heimdal, or mit to use security/krb5.

When the local Kerberos installation is not in LOCALBASE, set HEIMDAL_HOME (for heimdal) or KRB5_HOME (for krb5) to the location of the Kerberos installation.

These variables are exported for the ports to use:

  • GSSAPIBASEDIR

  • GSSAPICPPFLAGS

  • GSSAPIINCDIR

  • GSSAPILDFLAGS

  • GSSAPILIBDIR

  • GSSAPILIBS

  • GSSAPI_CONFIGURE_ARGS

The flags option can be given alongside base, heimdal, or mit to automatically add GSSAPICPPFLAGS, GSSAPILDFLAGS, and GSSAPILIBS to CFLAGS, LDFLAGS, and LDADD, respectively. For example, use base,flags.

The bootstrap option is a special prefix only for use by security/krb5 and security/heimdal. For example, use bootstrap,mit.

Example 6. Typical Use
OPTIONS_SINGLE=	GSSAPI
OPTIONS_SINGLE_GSSAPI=	GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE

GSSAPI_BASE_USES=	gssapi
GSSAPI_BASE_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_HEIMDAL_USES=	gssapi:heimdal
GSSAPI_HEIMDAL_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_MIT_USES=	gssapi:mit
GSSAPI_MIT_CONFIGURE_ON=	--with-gssapi=${GSSAPIBASEDIR} ${GSSAPI_CONFIGURE_ARGS}
GSSAPI_NONE_CONFIGURE_ON=	--without-gssapi

17.44. gstreamer

Possible arguments: (none)

Provides an easy way to depend on GStreamer components. The components should be listed in USE_GSTREAMER. The available components are:

  • a52dec

  • aalib

  • amrnb

  • amrwbdec

  • aom

  • assrender

  • bad

  • bs2b

  • cairo

  • cdio

  • cdparanoia

  • chromaprint

  • curl

  • dash

  • dtls

  • dts

  • dv

  • dvd

  • dvdread

  • editing-services

  • faac

  • faad

  • flac

  • flite

  • gdkpixbuf

  • gl

  • gme

  • gnonlin

  • good

  • gsm

  • gtk4

  • gtk

  • hal

  • hls

  • jack

  • jpeg

  • kate

  • kms

  • ladspa

  • lame

  • libav

  • libcaca

  • libde265

  • libmms

  • libvisual

  • lv2

  • mm

  • modplug

  • mpeg2dec

  • mpeg2enc

  • mpg123

  • mplex

  • musepack

  • neon

  • ogg

  • opencv

  • openexr

  • openh264

  • openjpeg

  • openmpt

  • opus

  • pango

  • png

  • pulse

  • qt

  • resindvd

  • rsvg

  • rtmp

  • shout2

  • sidplay

  • smoothstreaming

  • sndfile

  • sndio

  • soundtouch

  • soup

  • spandsp

  • speex

  • srtp

  • taglib

  • theora

  • ttml

  • twolame

  • ugly

  • v4l2

  • vorbis

  • vpx

  • vulkan

  • wavpack

  • webp

  • webrtcdsp

  • x264

  • x265

  • x

  • ximagesrc

  • zbar

17.45. guile

Possible arguments: (none), X.Y, flavors, build, run, alias, conflicts

Adds a dependency on Guile. By default this is a library dependency on the appropriate libguile*.so, unless overridden by the build and/or run option. The alias option configures BINARY_ALIAS appropriately (see Use BINARY_ALIAS).

The default version is set by the usual DEFAULT_VERSIONS mechanism; if the default version is not one of the listed versions, then the latest available listed version is used.

Applications using Guile are normally built for only a single Guile version. However, extension or library modules should use the flavors option to build with multiple flavors.

For more information see Using Guile.

17.46. horde

Possible arguments: (none)

Add buildtime and runtime dependencies on devel/pear-channel-horde. Other Horde dependencies can be added with USE_HORDE_BUILD and USE_HORDE_RUN. See Horde Modules for more information.

17.47. iconv

Possible arguments: (none), lib, build, patch, translit, wchar_t

Uses iconv functions, either from the port converters/libiconv as a build-time and run-time dependency, or from the base system. By default, with no arguments or with the lib argument, implies iconv with build-time and run-time dependencies. build implies a build-time dependency, and patch implies a patch-time dependency. If the port uses the WCHAR_T or //TRANSLIT iconv extensions, add the relevant arguments so that the correct iconv is used. For more information see Using iconv.

17.48. imake

Possible arguments: (none), env, notall, noman

Add devel/imake as a build-time dependency and run xmkmf -a during the configure stage. If the env argument is given, the configure target is not set. If the -a flag is a problem for the port, add the notall argument. If xmkmf does not generate a install.man target, add the noman argument.

17.49. kde

Possible arguments: 5

Add dependency on KDE components. See Using KDE for more information.

17.50. kmod

Possible arguments: (none), debug

Fills in the boilerplate for kernel module ports, currently:

  • Add kld to CATEGORIES.

  • Set SSP_UNSAFE.

  • Set IGNORE if the kernel sources are not found in SRC_BASE.

  • Define KMODDIR to /boot/modules by default, add it to PLIST_SUB and MAKE_ENV, and create it upon installation. If KMODDIR is set to /boot/kernel, it will be rewritten to /boot/modules. This prevents breaking packages when upgrading the kernel due to /boot/kernel being renamed to /boot/kernel.old in the process.

  • Handle cross-referencing kernel modules upon installation and deinstallation, using @kld.

  • If the debug argument is given, the port can install a debug version of the module into KERN_DEBUGDIR/KMODDIR. By default, KERN_DEBUGDIR is copied from DEBUGDIR and set to /usr/lib/debug. The framework will take care of creating and removing any required directories.

17.51. ldap

Possible arguments: (none), <version>, client, server

Registers a dependency on net/openldap. It uses the specific <version> (without the dot notation) if set. Otherwise it tries to find the currently installed version. If necessary it falls back to the default version found in bsd.default-versions.mk. client specifies a runtime dependency on the client library. This is also the default. server specifies a runtime dependency on the server.

The following variables can be accessed by the port:

IGNORE_WITH_OPENLDAP

This variable can be defined if the ports does not support one or more versions of OpenLDAP.

WITH_OPENLDAP_VER

User defined variable to set OpenLDAP version.

OPENLDAP_VER

Detected OpenLDAP version.

17.52. lha

Possible arguments: (none)

Set EXTRACT_SUFX to .lzh

17.53. libarchive

Possible arguments: (none)

Registers a dependency on archivers/libarchive. Any ports depending on libarchive must include USES=libarchive.

17.54. libedit

Possible arguments: (none)

Registers a dependency on devel/libedit. Any ports depending on libedit must include USES=libedit.

17.55. libtool

Possible arguments: (none), keepla, build

Patches libtool scripts. This must be added to all ports that use libtool. The keepla argument can be used to keep .la files. Some ports do not ship with their own copy of libtool and need a build time dependency on devel/libtool, use the :build argument to add such dependency.

17.56. linux

Possible arguments: c6, c7

Ports Linux compatibility framework. Specify c6 to depend on CentOS 6 packages. Specify c7 to depend on CentOS 7 packages. The available packages are:

  • allegro

  • alsa-plugins-oss

  • alsa-plugins-pulseaudio

  • alsalib

  • atk

  • avahi-libs

  • base

  • cairo

  • cups-libs

  • curl

  • cyrus-sasl2

  • dbusglib

  • dbuslibs

  • devtools

  • dri

  • expat

  • flac

  • fontconfig

  • gdkpixbuf2

  • gnutls

  • graphite2

  • gtk2

  • harfbuzz

  • jasper

  • jbigkit

  • jpeg

  • libasyncns

  • libaudiofile

  • libelf

  • libgcrypt

  • libgfortran

  • libgpg-error

  • libmng

  • libogg

  • libpciaccess

  • libsndfile

  • libsoup

  • libssh2

  • libtasn1

  • libthai

  • libtheora

  • libv4l

  • libvorbis

  • libxml2

  • mikmod

  • naslibs

  • ncurses-base

  • nspr

  • nss

  • openal

  • openal-soft

  • openldap

  • openmotif

  • openssl

  • pango

  • pixman

  • png

  • pulseaudio-libs

  • qt

  • qt-x11

  • qtwebkit

  • scimlibs

  • sdl12

  • sdlimage

  • sdlmixer

  • sqlite3

  • tcl85

  • tcp_wrappers-libs

  • tiff

  • tk85

  • ucl

  • xorglibs

17.57. llvm

Possible arguments: (none), XY, min=XY, max=XY, build, run, lib

Adds a dependency on LLVM. By default this is a build dependency unless overridden by the run or lib options. The default version is the one set in LLVM_DEFAULT. A specific version can be specified as well. The minimum and maximum versions can be specified with the min and max parameters respectively. The ports framework export the following variables to the port:

LLVM_VERSION

Version chosen from the arguments to llvm.mk

LLVM_PORT

Chosen llvm port

LLVM_CONFIG

llvm-config of the chosen port

LLVM_LIBLLVM

libLLVM.so of the chosen port

LLVM_PREFIX

Installation prefix of the chosen port

17.58. localbase

Possible arguments: (none), ldflags

Ensures that libraries from dependencies in LOCALBASE are used instead of the ones from the base system. Specify ldflags to add -L${LOCALBASE}/lib to LDFLAGS instead of LIBS. Ports that depend on libraries that are also present in the base system should use this. It is also used internally by a few other USES.

17.59. lua

Possible arguments: (none), XY, XY+, -XY, XY-ZA, module, flavors, build, run, env

Adds a dependency on Lua. By default this is a library dependency, unless overridden by the build and/or run option. The env option prevents the addition of any dependency, while still defining all the usual variables.

The default version is set by the usual DEFAULT_VERSIONS mechanism, unless a version or range of versions is specified as an argument, for example, 51 or 51-54.

Applications using Lua are normally built for only a single Lua version. However, library modules intended to be loaded by Lua code should use the module option to build with multiple flavors.

For more information see Using Lua.

17.60. luajit

Possible arguments: (none), X

Adds a dependency on luajit runtime. A specific version X can be used. Possible versions are luajit, luajit-devel, luajit-openresty

After including bsd.port.options.mk or bsd.port.pre.mk the port can inspect these variables:

LUAJIT_VER

The selected luajit version

LUAJIT_INCDIR

The path to luajit’s header files

LUAJIT_LUAVER

Which luajit spec version is selected (2.0 for luajit, else 2.1)

For more information see Using Lua.

17.61. lxqt

Possible arguments: (none)

Handle dependencies for the LXQt Desktop Environment. Use USE_LXQT to select the components needed for the port. See Using LXQt for more information.

17.62. magick

Possible arguments: (none), X, build, nox11, run, test

Add a library dependency on ImageMagick. A specific version X can be used. Possible versions are 6 and 7 (default). nox11 indicates that the -nox11 version of the port is required. build, run and test add build-, run-time and test dependencies on ImageMagick.

17.63. makeinfo

Possible arguments: (none)

Add a build-time dependency on makeinfo if it is not present in the base system.

17.64. makeself

Possible arguments: (none)

Indicates that the distribution files are makeself archives and sets the appropriate dependencies.

17.65. mate

Possible arguments: (none)

Provides an easy way to depend on MATE components. The components should be listed in USE_MATE. The available components are:

  • autogen

  • caja

  • common

  • controlcenter

  • desktop

  • dialogs

  • docutils

  • icontheme

  • intlhack

  • intltool

  • libmatekbd

  • libmateweather

  • marco

  • menus

  • notificationdaemon

  • panel

  • pluma

  • polkit

  • session

  • settingsdaemon

The default dependency is build- and run-time, it can be changed with :build or :run. For example:

USES=		mate
USE_MATE=	menus:build intlhack

17.66. meson

Possible arguments: (none)

Provide support for Meson based projects. For more information see Using meson.

17.67. metaport

Possible arguments: (none)

Sets the following variables to make it easier to create a metaport: MASTER_SITES, DISTFILES, EXTRACT_ONLY, NO_BUILD, NO_INSTALL, NO_MTREE, NO_ARCH.

17.68. minizip

Possible arguments: (none), ng

Adds a library dependency on archivers/minizip or archivers/minizip-ng respectively.

17.69. mysql

Possible arguments: (none), version, client (default), server, embedded

Provide support for MySQL If no version is given, try to find the current installed version. Fall back to the default version, MySQL-5.6. The possible versions are 55, 55m, 55p, 56, 56p, 56w, 57, 57p, 80, 100m, 101m, and 102m. The m and p suffixes are for the MariaDB and Percona variants of MySQL. server and embedded add a build- and run-time dependency on the MySQL server. When using server or embedded, add client to also add a dependency on libmysqlclient.so. A port can set IGNORE_WITH_MYSQL if some versions are not supported.

The framework sets MYSQL_VER to the detected MySQL version.

17.70. mono

Possible arguments: (none), nuget

Adds a dependency on the Mono (currently only C#) framework by setting the appropriate dependencies.

Specify nuget when the port uses nuget packages. NUGET_DEPENDS needs to be set with the names and versions of the nuget packages in the format name=version. An optional package origin can be added using name=version:_origin_.

The helper target, buildnuget, will output the content of the NUGET_DEPENDS based on the provided packages.config.

17.71. motif

Possible arguments: (none)

Uses x11-toolkits/open-motif as a library dependency. End users can set WANT_LESSTIF in make.conf to use x11-toolkits/lesstif as dependency instead of x11-toolkits/open-motif. Similarly setting WANT_OPEN_MOTIF_DEVEL in make.conf will add a dependency on x11-toolkits/open-motif-devel

17.72. ncurses

Possible arguments: (none), base, port

Uses ncurses, and causes some useful variables to be set.

17.73. nextcloud

Possible arguments: (none)

Adds support for Nextcloud applications by adding a run time dependency on www/nextcloud.

17.74. ninja

Possible arguments: (none), build, make (default), run

If build or run arguments are specify, it respectively adds a build or run time dependency on devel/ninja. If make or no arguments are provided, use ninja to build the port instead of make. make implies build. If the variable NINJA_DEFAULT is set to samurai, then the dependencies are set on devel/samurai instead.

17.75. nodejs

Possible arguments: (none), build, run, current, lts, 10, 14, 16, 17.

Uses nodejs. Adds a dependency on www/node*. If a supported version is specified then run and/or build must be specified too.

17.76. objc

Possible arguments: (none)

Add objective C dependencies (compiler, runtime library) if the base system does not support it.

17.77. octave

Possible arguments: (none), env

Uses math/octave. env loads only one OCTAVE_VERSION environmental variable.

17.78. openal

Possible arguments: al, soft (default), si, alut

Uses OpenAL. The backend can be specified, with the software implementation as the default. The user can specify a preferred backend with WANT_OPENAL. Valid values for this knob are soft (default) and si.

17.79. pathfix

Possible arguments: (none)

Look for Makefile.in and configure in PATHFIX_WRKSRC (defaults to WRKSRC) and fix common paths to make sure they respect the FreeBSD hierarchy. For example, it fixes the installation directory of pkgconfig’s .pc files to ${PREFIX}/libdata/pkgconfig. If the port uses `USES=autoreconf, Makefile.am will be added to PATHFIX_MAKEFILEIN automatically.

If the port USES=cmake it will look for CMakeLists.txt in PATHFIX_WRKSRC. If needed, that default filename can be changed with PATHFIX_CMAKELISTSTXT.

17.80. pear

Possible arguments: env

Adds a dependency on devel/pear. It will setup default behavior for software using the PHP Extension and Application Repository. Using the env arguments only sets up the PEAR environment variables. See PEAR Modules for more information.

17.81. perl5

Possible arguments: (none)

Depends on Perl. The configuration is done using USE_PERL5.

USE_PERL5 can contain the phases in which to use Perl, can be extract, patch, build, run, or test.

USE_PERL5 can also contain configure, modbuild, or modbuildtiny when Makefile.PL, Build.PL, or Module::Build::Tiny’s flavor of Build.PL is required.

USE_PERL5 defaults to build run. When using configure, modbuild, or modbuildtiny, build and run are implied.

See Using Perl for more information.

17.82. pgsql

Possible arguments: (none), X.Y, X.Y+, X.Y-, X.Y-Z.A

Provide support for PostgreSQL. Port maintainer can set version required. Minimum and maximum versions or a range can be specified; for example, 9.0-, 8.4+, 8.4-9.2.

By default, the added dependency will be the client, but if the port requires additional components, this can be done using WANT_PGSQL=component[:target]; for example, WANT_PGSQL=server:configure pltcl plperl. The available components are:

  • client

  • contrib

  • docs

  • pgtcl

  • plperl

  • plpython

  • pltcl

  • server

17.83. php

Possible arguments: (none), phpize, ext, zend, build, cli, cgi, mod, web, embed, pecl, flavors, noflavors

Provide support for PHP. Add a runtime dependency on the default PHP version, lang/php81.

phpize

Use to build a PHP extension. Enables flavors.

ext

Use to build, install and register a PHP extension. Enables flavors.

zend

Use to build, install and register a Zend extension. Enables flavors.

build

Set PHP also as a build-time dependency.

cli

Needs the CLI version of PHP.

cgi

Needs the CGI version of PHP.

mod

Needs the Apache module for PHP.

web

Needs the Apache module or the CGI version of PHP.

embed

Needs the embedded library version of PHP.

pecl

Provide defaults for fetching PHP extensions from the PECL repository. Enables flavors.

flavors

Enable automatic PHP flavors generation. Flavors will be generated for all PHP versions, except the ones present in IGNORE_WITH_PHP.

noflavors

Disable automatic PHP flavors generation. Must only be used with extensions provided by PHP itself.

Variables are used to specify which PHP modules are required, as well as which version of PHP are supported.

USE_PHP

The list of required PHP extensions at run-time. Add :build to the extension name to add a build-time dependency. Example: pcre xml:build gettext

IGNORE_WITH_PHP

The port does not work with PHP of the given version. For possible values look at the content of _ALL_PHP_VERSIONS in Mk/Uses/php.mk.

When building a PHP or Zend extension with :ext or :zend, these variables can be set:

PHP_MODNAME

The name of the PHP or Zend extension. Default value is ${PORTNAME}.

PHP_HEADER_DIRS

A list of subdirectories from which to install header files. The framework will always install the header files that are present in the same directory as the extension.

PHP_MOD_PRIO

The priority at which to load the extension. It is a number between 00 and 99.

For extensions that do not depend on any extension, the priority is automatically set to 20, for extensions that depend on another extension, the priority is automatically set to 30. Some extensions may need to be loaded before every other extension, for example www/php56-opcache. Some may need to be loaded after an extension with a priority of 30. In that case, add PHP_MOD_PRIO=XX in the port’s Makefile. For example:

USES=		php:ext
USE_PHP=	wddx
PHP_MOD_PRIO=	40

These variables are available to use in PKGNAMEPREFIX or PKGNAMESUFFIX:

PHP_PKGNAMEPREFIX

Contains php_XY_- where XY is the current flavor’s PHP version. Use with PHP extensions and modules.

PHP_PKGNAMESUFFIX

Contains -php_XY_ where XY is the current flavor’s PHP version. Use with PHP applications.

PECL_PKGNAMEPREFIX

Contains php_XY_-pecl- where XY is the current flavor’s PHP version. Use with PECL modules.

With flavors, all PHP extensions, PECL extensions, PEAR modules must have a different package name, so they must all use one of these three variables in their PKGNAMEPREFIX or PKGNAMESUFFIX.

17.84. pkgconfig

Possible arguments: (none), build (default), run, both

Uses devel/pkgconf. With no arguments or with the build argument, it implies pkg-config as a build-time dependency. run implies a run-time dependency and both implies both run-time and build-time dependencies.

17.85. pure

Possible arguments: (none), ffi

Uses lang/pure. Largely used for building related pure ports. With the ffi argument, it implies devel/pure-ffi as a run-time dependency.

17.86. pyqt

Possible arguments: (none), 4, 5

Uses PyQt. If the port is part of PyQT itself, set PYQT_DIST. Use USE_PYQT to select the components the port needs. The available components are:

  • core

  • dbus

  • dbussupport

  • demo

  • designer

  • designerplugin

  • doc

  • gui

  • multimedia

  • network

  • opengl

  • qscintilla2

  • sip

  • sql

  • svg

  • test

  • webkit

  • xml

  • xmlpatterns

These components are only available with PyQT4:

  • assistant

  • declarative

  • help

  • phonon

  • script

  • scripttools

These components are only available with PyQT5:

  • multimediawidgets

  • printsupport

  • qml

  • serialport

  • webkitwidgets

  • widgets

The default dependency for each component is build- and run-time, to select only build or run, add _build or _run to the component name. For example:

USES=		pyqt
USE_PYQT=	core doc_build designer_run

17.87. pytest

Possible arguments: (none), 4

Introduces a new dependency on devel/pytest. It defines a do-test target which will run the tests properly. Use the argument to depend on a specific devel/pytest version. For ports using devel/pytest consider using this instead of a specific do-test target. The framework exposes the following variables to the port:

PYTEST_ARGS

Additional arguments to pytest (defaults to empty).

PYTEST_IGNORED_TESTS

lists of pytest -k patterns of tests to ignore (defaults to empty). For tests which are not expected to pass, such as ones requiring a database access.

PYTEST_BROKEN_TESTS

lists of pytest -k patterns of tests to ignore (defaults to empty). For broken tests which require fixing.

In addition the following variables may be set by the user:

PYTEST_ENABLE_IGNORED_TESTS

Enable tests which are otherwise ignored by PYTEST_IGNORED_TESTS.

PYTEST_ENABLE_BROKEN_TESTS

Enable tests which are otherwise ignored by PYTEST_BROKEN_TESTS.

PYTEST_ENABLE_ALL_TESTS

Enable tests which are otherwise ignored by PYTEST_IGNORED_TESTS and PYTEST_BROKEN_TESTS.

17.88. python

Possible arguments: (none), X.Y, X.Y+, -X.Y, X.Y-Z.A, patch, build, run, test

Uses Python. A supported version or version range can be specified. If Python is only needed at build time, run time or for the tests, it can be set as a build, run or test dependency with build, run, or test. If Python is also needed during the patch phase, use patch. See Using Python for more information.

PYTHON_NO_DEPENDS=yes can be used when the variables exported by the framework are needed but a dependency on Python is not. It can happen when using with USES=shebangfix, and the goal is only to fix the shebangs but not add a dependency on Python.

17.89. qmail

Possible arguments: (none), build, run, both, vars

Uses mail/qmail. With the build argument, it implies qmail as a build-time dependency. run implies a run-time dependency. Using no argument or the both argument implies both run-time and build-time dependencies. vars will only set QMAIL variables for the port to use.

17.90. qmake

Possible arguments: (none), norecursive, outsource, no_env, no_configure

Uses QMake for configuring. For more information see Using qmake.

17.91. qt

Possible arguments: 5, 6, no_env

Add dependency on Qt components. no_env is passed directly to USES= qmake. See Using Qt for more information.

17.92. qt-dist

Possible arguments: (none) or 5 and (none) or 6 and (none) or one of 3d, 5compat, base, charts, connectivity, datavis3d, declarative, doc languageserver, gamepad, graphicaleffects, imageformats, locat ion, lottie, multimedia, networkauth, positioning, quick3d, quickcontrols2, quickcontrols, quicktimeline, remoteobjects, script, scxml `, `sensors, serialbus, serialport, shadertools, speech, svg, tools, translations, virtualkeyboard, wayland, webchannel, webengine, webglplugin, websockets, webview, x11extras, xmlpatterns.

Provides support for building Qt 5 and Qt 6 components. It takes care of setting up the appropriate configuration environment for the port to build.

Example 7. Building Qt 5 Components

The port is Qt 5’s networkauth component, which is part of the networkauth distribution file.

PORTNAME=	networkauth
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5
Example 8. Building Qt 6 Components

The port is Qt 6’s websockets component, which is part of the websockets distribution file.

PORTNAME=       websockets
PORTVERSION=    ${QT6_VERSION}

USES=           qt-dist:6

If PORTNAME does not match the component name, it can be passed as an argument to qt-dist.

Example 9. Building Qt 5 Components with Different Names

The port is Qt 5’s gui component, which is part of the base distribution file.

PORTNAME=	gui
DISTVERSION=	${QT5_VERSION}

USES=		qt-dist:5,base

17.93. readline

Possible arguments: (none), port

Uses readline as a library dependency, and sets CPPFLAGS and LDFLAGS as necessary. If the port argument is used or if readline is not present in the base system, add a dependency on devel/readline

17.94. ruby

Possible arguments: (none), build, extconf, run, setup

Provide support for Ruby related ports. (none) without arguments adds runtime dependency on lang/ruby. build adds a dependency on lang/ruby at build time. extconf states that the port uses extconf.rb to configure. run adds a dependency on lang/ruby at run time. This is also the default. setup states that the port uses setup.rb to configure and build.

The user may have the following variables defined:

RUBY_VER

Alternative short version of ruby in the form of `x.y'.

RUBY_DEFAULT_VER

Set to (e.g.) 2.7 to use ruby27 as the default version.

RUBY_ARCH

Set the architecture name (e.g. i386-freebsd7).

The following variables are exported to be used by the port:

RUBY

Set to full path of ruby. If set, the values of the following variables are automatically obtained from the ruby executable: RUBY_ARCH, RUBY_ARCHLIBDIR, RUBY_LIBDIR, RUBY_SITEARCHLIBDIR, RUBY_SITELIBDIR, RUBY_VER and RUBY_VERSION

RUBY_VER

Set to the alternative short version of ruby in the form of `x.y'.

RUBY_EXTCONF

Set to the alternative name of extconf.rb (default: extconf.rb).

RUBY_EXTCONF_SUBDIRS

Set to list of subdirectories, if multiple modules are included.

RUBY_SETUP

Set to the alternative name of setup.rb (default: setup.rb).

17.95. samba

Possible arguments: build, env, lib, run

Handle dependency on Samba. env will not add any dependency and only set up the variables. build and run will add build-time and run-time dependency on smbd. lib will add a dependency on libsmbclient.so. The variables that are exported are:

SAMBAPORT

The origin of the default Samba port.

SAMBAINCLUDES

The location of the Samba header files.

SAMBALIBS

The directory where the Samba shared libraries are available.

17.96. scons

Possible arguments: (none)

Provide support for the use of devel/scons. See Using scons for more information.

17.97. shared-mime-info

Possible arguments: (none)

Uses update-mime-database from misc/shared-mime-info. This uses will automatically add a post-install step in such a way that the port itself still can specify there own post-install step if needed. It also add an @shared-mime-info entry to the plist.

17.98. shebangfix

Possible arguments: (none)

A lot of software uses incorrect locations for script interpreters, most notably /usr/bin/perl and /bin/bash. The shebangfix macro fixes shebang lines in scripts listed in SHEBANG_REGEX, SHEBANG_GLOB, or SHEBANG_FILES.

SHEBANG_REGEX

Contains one extended regular expressions, and is used with the -iregex argument of find(1). See USES=shebangfix with SHEBANG_REGEX.

SHEBANG_GLOB

Contains a list of patterns used with the -name argument of find(1). See USES=shebangfix with SHEBANG_GLOB.

SHEBANG_FILES

Contains a list of files or sh(1) globs. The shebangfix macro is run from ${WRKSRC}, so SHEBANG_FILES can contain paths that are relative to ${WRKSRC}. It can also deal with absolute paths if files outside of ${WRKSRC} require patching. See USES=shebangfix with SHEBANG_FILES.

Currently Bash, Java, Ksh, Lua, Perl, PHP, Python, Ruby, Tcl, and Tk are supported by default.

There are three configuration variables:

SHEBANG_LANG

The list of supported interpreters.

_interp__CMD

The path to the command interpreter on FreeBSD. The default value is ${LOCALBASE}/bin/interp.

_interp__OLD_CMD

The list of wrong invocations of interpreters. These are typically obsolete paths, or paths used on other operating systems that are incorrect on FreeBSD. They will be replaced by the correct path in _interp__CMD.

These will always be part of interp__OLD_CMD: "/usr/bin/env _interp" /bin/interp /usr/bin/interp /usr/local/bin/interp.

_interp__OLD_CMD contain multiple values. Any entry with spaces must be quoted. See Specifying all the Paths When Adding an Interpreter to USES=shebangfix.

The fixing of shebangs is done during the patch phase. If scripts are created with incorrect shebangs during the build phase, the build process (for example, the configure script, or the Makefiles) must be patched or given the right path (for example, with CONFIGURE_ENV, CONFIGURE_ARGS, MAKE_ENV, or MAKE_ARGS) to generate the right shebangs.

Correct paths for supported interpreters are available in _interp__CMD.

When used with USES=python, and the aim is only to fix the shebangs but a dependency on Python itself is not wanted, use PYTHON_NO_DEPENDS=yes.

Example 10. Adding Another Interpreter to USES=shebangfix

To add another interpreter, set SHEBANG_LANG. For example:

SHEBANG_LANG=	lua
Example 11. Specifying all the Paths When Adding an Interpreter to USES=shebangfix

If it was not already defined, and there were no default values for _interpOLD_CMD and _interpCMD the Ksh entry could be defined as:

SHEBANG_LANG=	ksh
ksh_OLD_CMD=	"/usr/bin/env ksh" /bin/ksh /usr/bin/ksh
ksh_CMD=	${LOCALBASE}/bin/ksh
Example 12. Adding a Strange Location for an Interpreter

Some software uses strange locations for an interpreter. For example, an application might expect Python to be located in /opt/bin/python2.7. The strange path to be replaced can be declared in the port Makefile:

python_OLD_CMD=	/opt/bin/python2.7
Example 13. USES=shebangfix with SHEBANG_REGEX

To fix all the files in ${WRKSRC}/scripts ending in .pl, .sh, or .cgi do:

USES=	shebangfix
SHEBANG_REGEX=	./scripts/.*\.(sh|pl|cgi)

SHEBANG_REGEX is used by running find -E, which uses modern regular expressions also known as extended regular expressions. See re_format(7) for more information.

Example 14. USES=shebangfix with SHEBANG_GLOB

To fix all the files in ${WRKSRC} ending in .pl or .sh, do:

USES=	shebangfix
SHEBANG_GLOB=	*.sh *.pl
Example 15. USES=shebangfix with SHEBANG_FILES

To fix the files script/foobar.pl and script/*.sh in ${WRKSRC}, do:

USES=	shebangfix
SHEBANG_FILES=	scripts/foobar.pl scripts/*.sh

17.99. sqlite

Possible arguments: (none), 2, 3

Add a dependency on SQLite. The default version used is 3, but version 2 is also possible using the :2 modifier.

17.100. ssl

Possible arguments: (none), build, run

Provide support for OpenSSL. A build- or run-time only dependency can be specified using build or run. These variables are available for the port’s use, they are also added to MAKE_ENV:

OPENSSLBASE

Path to the OpenSSL installation base.

OPENSSLDIR

Path to OpenSSL’s configuration files.

OPENSSLLIB

Path to the OpenSSL libraries.

OPENSSLINC

Path to the OpenSSL includes.

OPENSSLRPATH

If defined, the path the linker needs to use to find the OpenSSL libraries.

If a port does not build with an OpenSSL flavor, set the BROKEN_SSL variable, and possibly the BROKEN_SSL_REASON__flavor_:

BROKEN_SSL=	libressl
BROKEN_SSL_REASON_libressl=	needs features only available in OpenSSL

17.101. tar

Possible arguments: (none), Z, bz2, bzip2, lzma, tbz, tbz2, tgz, txz, xz, zst, zstd

Set EXTRACT_SUFX to .tar, .tar.Z, .tar.bz2, .tar.bz2, .tar.lzma, .tbz, .tbz2, .tgz, .txz, .tar.xz, .tar.zst or .tar.zstd respectively.

17.102. tcl

Possible arguments: version, wrapper, build, run, tea

Add a dependency on Tcl. A specific version can be requested using version. The version can be empty, one or more exact version numbers (currently 84, 85, or 86), or a minimal version number (currently 84+, 85+ or 86+). To only request a non version specific wrapper, use wrapper. A build- or run-time only dependency can be specified using build or run. To build the port using the Tcl Extension Architecture, use tea. After including bsd.port.pre.mk the port can inspect the results using these variables:

  • TCL_VER: chosen major.minor version of Tcl

  • TCLSH: full path of the Tcl interpreter

  • TCL_LIBDIR: path of the Tcl libraries

  • TCL_INCLUDEDIR: path of the Tcl C header files

  • TK_VER: chosen major.minor version of Tk

  • WISH: full path of the Tk interpreter

  • TK_LIBDIR: path of the Tk libraries

  • TK_INCLUDEDIR: path of the Tk C header files

17.103. terminfo

Possible arguments: (none)

Adds @terminfo to the plist. Use when the port installs *.terminfo files in ${PREFIX}/share/misc.

17.104. tex

Possible arguments: (none)

Provide support for tex. Loads all the default variables for TEX related ports and does not add any dependency on any ports.

Variables are used to specify which TEX modules are required.

USE_TEX

The list of required TEX extensions at run-time. Add :build to the extension name to add a build-time dependency, :run to add runtime dependency, :test for test time dependency, :extract for extract time dependency. Example: base texmf:build source:run

Current possible arguments are as follows:

  • base

  • texmf

  • source

  • docs

  • web2c

  • kpathsea

  • ptexenc

  • basic

  • tlmgr

  • texlua

  • texluajit

  • synctex

  • xpdfopen

  • dvipsk

  • dvipdfmx

  • xdvik

  • gbklatex

  • formats

  • tex

  • latex

  • pdftex

  • jadetex

  • luatex

  • ptex

  • xetex

  • xmltex

  • texhash

  • updmap

  • fmtutil

17.105. tk

Same as arguments for tcl

Small wrapper when using both Tcl and Tk. The same variables are returned as when using Tcl.

17.106. uidfix

Possible arguments: (none)

Changes some default behavior (mostly variables) of the build system to allow installing this port as a normal user. Try this in the port before using USES=fakeroot or patching.

17.107. uniquefiles

Possible arguments: (none), dirs

Make files or directories 'unique', by adding a prefix or suffix. If the dirs argument is used, the port needs a prefix (and only a prefix) based on UNIQUE_PREFIX for standard directories DOCSDIR, EXAMPLESDIR, DATADIR, WWWDIR, ETCDIR. These variables are available for ports:

  • UNIQUE_PREFIX: The prefix to be used for directories and files. Default: ${PKGNAMEPREFIX}.

  • UNIQUE_PREFIX_FILES: A list of files that need to be prefixed. Default: empty.

  • UNIQUE_SUFFIX: The suffix to be used for files. Default: ${PKGNAMESUFFIX}.

  • UNIQUE_SUFFIX_FILES: A list of files that need to be suffixed. Default: empty.

17.108. vala

Possible arguments: build, lib, no_depend

Adds build or library dependencies on lang/vala. The no_depend argument is reserved for lang/vala itself.

17.109. varnish

Possible arguments: 4 (default), 6, 7

Handle dependencies on Varnish Cache. Adds a dependency on www/varnish*.

17.110. webplugin

Possible arguments: (none), ARGS

Automatically create and remove symbolic links for each application that supports the webplugin framework. ARGS can be one of:

  • gecko: support plug-ins based on Gecko

  • native: support plug-ins for Gecko, Opera, and WebKit-GTK

  • linux: support Linux plug-ins

  • all (default, implicit): support all plug-in types

  • (individual entries): support only the browsers listed

These variables can be adjusted:

  • WEBPLUGIN_FILES: No default, must be set manually. The plug-in files to install.

  • WEBPLUGIN_DIR: The directory to install the plug-in files to, default PREFIX/lib/browser_plugins/WEBPLUGIN_NAME. Set this if the port installs plug-in files outside of the default directory to prevent broken symbolic links.

  • WEBPLUGIN_NAME: The final directory to install the plug-in files into, default PKGBASE.

17.111. xfce

Possible arguments: (none), gtk2

Provide support for Xfce related ports. See Using Xfce for details.

The gtk2 argument specifies that the port requires GTK2 support. It adds additional features provided by some core components, for example, x11/libxfce4menu and x11-wm/xfce4-panel.

17.112. xorg

Possible arguments: (none)

Provides an easy way to depend on X.org components. The components should be listed in USE_XORG. The available components are:

Table 1. Available X.Org Components
NameDescription

dmx

DMX extension library

fontenc

The fontenc Library

fontutil

Create an index of X font files in a directory

ice

Inter Client Exchange library for X11

libfs

The FS library

pciaccess

Generic PCI access library

pixman

Low-level pixel manipulation library

sm

Session Management library for X11

x11

X11 library

xau

Authentication Protocol library for X11

xaw

X Athena Widgets library

xaw6

X Athena Widgets library

xaw7

X Athena Widgets library

xbitmaps

X.Org bitmaps data

xcb

The X protocol C-language Binding (XCB) library

xcomposite

X Composite extension library

xcursor

X client-side cursor loading library

xdamage

X Damage extension library

xdmcp

X Display Manager Control Protocol library

xext

X11 Extension library

xfixes

X Fixes extension library

xfont

X font library

xfont2

X font library

xft

Client-sided font API for X applications

xi

X Input extension library

xinerama

X11 Xinerama library

xkbfile

XKB file library

xmu

X Miscellaneous Utilities libraries

xmuu

X Miscellaneous Utilities libraries

xorg-macros

X.Org development aclocal macros

xorg-server

X.Org X server and related programs

xorgproto

xorg protocol headers

xpm

X Pixmap library

xpresent

X Present Extension library

xrandr

X Resize and Rotate extension library

xrender

X Render extension library

xres

X Resource usage library

xscrnsaver

The XScrnSaver library

xshmfence

Shared memory 'SyncFence' synchronization primitive

xt

X Toolkit library

xtrans

Abstract network code for X

xtst

X Test extension

xv

X Video Extension library

xvmc

X Video Extension Motion Compensation library

xxf86dga

X DGA Extension

xxf86vm

X Vidmode Extension

17.113. xorg-cat

Possible arguments: app, data, doc, driver, font, lib, proto, util, xserver and (none) or one off autotools (default), meson

Provide support for building Xorg components. It takes care of setting up common dependencies and an appropriate configuration environment needed. This is intended only for Xorg components.

The category has to match upstream categories.

The second argument is the build system to use. autotools is the default, but meson is also supported.

17.114. zip

Possible arguments: (none), infozip

Indicates that the distribution files use the ZIP compression algorithm. For files using the InfoZip algorithm the infozip argument must be passed to set the appropriate dependencies.


Last modified on: February 12, 2024 by Fernando Apesteguía