Chapter 15. Values of USES

Table 15.1. Values of USES
FeatureArgumentsDescription
ada(none), 47Depends on an Ada-capable compiler, and sets CC accordingly. Defaults to a gcc 4.9 based compiler, use :47 to use the older gcc 4.7 based one.
autoreconf(none), buildRuns autoreconf. It encapsulates the aclocal, autoconf, autoheader, automake, autopoint, and libtoolize commands. Each command applies to ${CONFIGURE_WRKSRC}/configure.ac or its old name, ${CONFIGURE_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.
bison(none), build, run, bothUses 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.
charsetfix(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.
cmake(none), outsource, runUses CMake for configuring and building. With the outsource argument, an out-of-source build will be performed. With the run argument, a run-time dependency is registered. For more information see Section 6.5.4, “Using cmake.
compiler(none), c++0x, c++11-lang, gcc-c++11-lib, c++11-lib, c11, openmp, nestedfct, featuresDetermines which compiler to use based on any given wishes. Use 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, and c++11-lib if the port also needs a C++11-ready standard library. If the port needs a compiler understanding C++0X, C11, OpenMP, or nested functions, the corresponding parameters can 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.

cpe(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 .

  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.

cran(none), auto-plistUses the Comprehensive R Archive Network. Specify auto-plist to automatically generate pkg-plist.
desktop-file-utils(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. Lines will be inserted into the plist to run update-desktop-database on package install or removal.
desthack(none)Changes the behavior of GNU configure to properly support DESTDIR in case the original software does not.
display(none), ARGSSet 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.
dos2unix(none)The port has files with line endings in DOS format which need to be converted. Three variables can be set to control which files will be converted. The default is to convert all files, including binaries. See Section 4.4.3, “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.

drupal6, 7, module, themeAutomate 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:6,module says that this port creates a Drupal 6 module. A Drupal 7 theme can be specified with USES=drupal:7,theme.
execinfo(none)Add a library dependency on devel/libexecinfo if libexecinfo.so is not present in the base system.
fam(none), fam, gaminUses 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.
fmake(none)Uses devel/fmake as a build-time dependency.
fortrangcc (default), ifortUses the Fortran compiler from either GNU or Intel.
fuse(none)The port will depend on the FUSE library and handle the dependency on the kernel module depending on the version of FreeBSD.
geckolibxul (default), firefox, seamonkey, thunderbird, build, XY, XY+Add a dependency on different gecko based applications. If libxul is used, it is the only argument allowed. When the argument is not libxul, the firefox, seamonkey, or thunderbird arguments can be used, along with optional build and XY/XY+ version arguments.
gettext(none), lib (default), build, runUses devel/gettext. 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 xgettext.
gmake(none), liteUses devel/gmake, or devel/gmake-lite if the lite argument is used, as a build-time dependency and sets up the environment to use gmake as the default make for the build.
gperf(none)Add a buildtime dependency on devel/gperf if gperf is not present in the base system.
gssapi(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 15.1. 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

horde(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 Section 6.14.4.1, “Horde Modules” for more information.
iconv(none), lib, build, patch, translit, wchar_tUses iconv functions, either from the port converters/libiconv as a build-time and run-time dependency, or from the base system on 10-CURRENT after a native iconv was committed in 254273. 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 Section 6.22, “Using iconv.
imake(none), env, notall, nomanAdd 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.
kmod(none)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.

lha(none)Set EXTRACT_SUFX to .lzh
libtool(none), keepla, buildPatches 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.
lua(none), XY+, XY, build, runAdds a dependency on Lua. By default this is a library dependency, unless overridden by the build or run option. The default version is 5.2, unless set by the XY parameter (for example, 51 or 52+).
makeinfobuild (default), run, bothAdd the corresponding dependencies on makeinfo.
makeself(none)Indicates that the distribution files are makeself archives and sets the appropriate dependencies.
mono(none)Adds a dependency on the Mono (currently only C#) framework by setting the appropriate dependencies.
motif(none)Uses x11-toolkits/open-motif as a library dependency. End users can set WANT_LESSTIF for the dependency to be on x11-toolkits/lesstif instead of x11-toolkits/open-motif.
ncurses(none), base, portUses ncurses, and causes some useful variables to be set.
ninja(none)Uses ninja to build the port. End users can set NINJA_VERBOSE for verbose output.
objc(none)Add objective C dependencies (compiler, runtime library) if the base system does not support it.
openalal, soft (default), si, alutUses 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.
pathfix(none)Look for Makefile.in and configure in the port's associated sources and fix common paths to make sure they respect the FreeBSD hierarchy. If the port uses automake, set PATHFIX_MAKEFILEIN to Makefile.am if needed.
pear(none)Adds a dependency on devel/pear. It will setup default behavior for software using the PHP Extension and Application Repository. See Section 6.14.4, “PEAR Modules” for more information.
perl5(none)Depends on Perl. These variables can be set:
  • PERL_VERSION: Full version of Perl to use, or the default if not set

  • PERL_ARCH: Directory name of architecture dependent libraries, defaults to mach

  • PERL_PORT: Name of the Perl port to be installed, the default is derived from PERL_VERSION

  • SITE_PERL: Directory name for site specific Perl packages

  • USE_PERL5: Phases in which to use Perl, can be extract, patch, build, install, or run. It can also be configure, modbuild, or modbuildtiny when Makefile.PL, Build.PL, or the Module::Build::Tiny flavor of Build.PL is required. If there is a .packlist referencing ${STAGEDIR}, then fixpacklist must be used to patch it. It defaults to build run.

pgsql(none), X.Y, X.Y+, X.Y-

Provide support for PostgreSQL. Maintainer can set version required. Minimum and maximum versions can be specified; for example, 9.0-, 8.4+.

Add PostgreSQL component dependency, using WANT_PGSQL=component[:target]. for example, WANT_PGSQL=server:configure pltcl plperl For the full list use make -V _USE_PGSQL_DEP.

pkgconfig(none), build (default), run, bothUses 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.
pure(none), ffiUses lang/pure. Largely used for building related pure ports. With the ffi argument, it implies devel/pure-ffi as a run-time dependency.
qmail(none), build, run, both, varsUses 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.
qmake(none), norecursive, outsourceUses QMake for configuring. For more information see Section 6.11.3, “Using qmake.
readline(none), portUses 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
scons(none)Provide support for the use of devel/scons
shared-mime-info(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 insert lines into the plist for package install and removal to run update-mime-data with the correct arguments.
shebangfix(none)A lot of software uses incorrect locations for script interpreters, most notably /usr/bin/perl and /bin/bash. This fixes shebang lines in scripts listed in SHEBANG_FILES. Currently Bash, Java, Perl, PHP, Python, Ruby, Tcl, and Tk are supported by default. To support another interpreter, set SHEBANG_LANG, lua_OLD_CMD and lua_CMD. For example SHEBANG_LANG=lua, then lua_OLD_CMD=/usr/bin/lua and lua_CMD=${LOCALBASE}/bin/lua.
tar(none), Z, bz2, bzip2, lzma, tbz, tgz, txz, xzSet EXTRACT_SUFX to .tar, .tar.Z, .tar.bz2, .tar.bz2, .tar.lzma, .tbz, .tgz, .txz or .tar.xz respectively.
tclPORTAdd a dependency on Tcl. The PORT parameter can be either tcl or tk. Either a version or wrapper dependency can be appended using PORT:version or PORT:wrapper. 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+). A build- or run-time only dependency can be specified using PORT,build or PORT,run. 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

tkSame as arguments for tclSmall wrapper when using both Tcl and Tk. The same variables are returned as when using Tcl.
twisted(none), ARGSAdd a dependency on twistedCore. The list of required components can be specified as a value of this variable. ARGS can be one of:
  • build: add twistedCore or any specified component as build dependency.

  • run: add twistedCore or any specified component as run dependency.

Besides build and run, one or more other supported twisted components can be specified. Supported values are listed in Uses/twisted.mk.
uidfix(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 adding NEED_ROOT=yes
uniquefiles(none), dirsMake files or directories 'unique', by adding a prefix or suffix. If the dirs argument is used, the port needs a prefix (a 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.

webplugin(none), ARGSAutomatically 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.

zip(none), infozipIndicates 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.
zope(none)Uses www/zope. Mostly used for building zope related ports. ZOPE_VERSION can be used by a port to indicate that a specific version of zope shall be used.

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.