bsd.port.mk man page on MirBSD

Man page or keyword search:  
man Server   6113 pages
apropos Keyword Search (all sections)
Output format
MirBSD logo
[printable version]

BSD.PORT.MK(5)		     BSD Reference Manual		BSD.PORT.MK(5)

NAME
     bsd.port.mk - ports tree master Makefile fragment

SYNOPSIS
     .include <bsd.port.mk>

DESCRIPTION
     bsd.port.mk holds all the standard routines used by the ports tree. Some
     variables and targets are for its internal use only. The rest is docu-
     mented here.

     Other BSD variants, as well as older versions of bsd.port.mk, include
     other targets and variables. Conversion methods are outlined here.

     This is not quite complete; a few variables and targets are not yet docu-
     mented. Mostly because undocumented stuff has fuzzy semantics, and it
     hasn't been decided yet how to define it.

TARGETS
     {build,run,all}-dir-depends
		   Print all dependencies for a port in order to build it, run
		   it, or both. The output is formatted as package specifica-
		   tion pairs, in a form suitable for tsort(1).

     full-{build,run,all}-depends
		   Print all dependencies a package depends upon for building,
		   running, or both, as a list of package names.

     {build,lib,run}-depends-list
		   Print a list of first level package specifications a port
		   depends as build dependencies, library dependencies, or run
		   dependencies.

     print-{build,run}-depends
		   User convenience target that displays the result of
		   full-{build,run}-depends in a more readable way.

     {pre,do,post}-*
		   Most standard targets can be specialized according to a
		   given port's needs. If defined, the pre-* hook will be in-
		   voked before running the normal action; the do-* hook will
		   be invoked instead of the normal action; the post-* hook
		   will be invoked after the normal action. Specialization
		   hooks exist for build, configure, distpatch, extract, fake,
		   fetch, install, package, patch, regress. See individual
		   targets for exceptions.

     addsum	   Complete the ${CHECKSUM_FILE} record of checksums with
		   files that have been added since makesum. Complain if any-
		   thing does not match.

     build, all	   Default target. Build the port. Essentially invoke

		   env -i ${MAKE_ENV} ${MAKE_PROGRAM} ${MAKE_FLAGS} \
			   -f ${MAKE_FILE} ${ALL_TARGET}

     build-depends
		   Verify the ports mentioned in BUILD_DEPENDS, by checking
		   the corresponding packages are actually installed, and in-
		   stall the missing ports by recursing through the ports
		   tree. Invoked right after creating the working directory.

     checkpatch	   Debugging version of the patch target that simulates invok-
		   ing patch(1).
     checksum	   Check distribution archives and distribution patches con-
		   trol sum against the results recorded in ${CHECKSUM_FILE},
		   using the cryptographic signature utilities listed in
		   ${PREFERRED_CIPHERS}. Normally ${ALLFILES} are checksummed,
		   unless IGNOREFILES is set to a list of files to ignore. In-
		   voking checksum with REFETCH=true will try to fetch a ver-
		   sion with the correct checksum from the OpenBSD main ar-
		   chive site in the case of a checksum mismatch. NO_CHECKSUM
		   can be used to avoid all checksumming steps.

     clean	   Clean ports contents. By default, it will clean the work
		   directory. It can be invoked as mmake clean='[depends bulk
		   work fake flavours dist install sub package packages]'.

		   work	     Clean work directory.

		   bulk	     Clean bulk cookie.

		   depends   Recurse into dependencies.

		   flavours  Clean all work directories.

		   dist	     Clean distribution files.

		   install   Uninstall package.

		   package   Remove package file (and copies in
			     ${CDROM_PACKAGES} and ${FTP_PACKAGES}).

		   readmes   Clean files generated through the readme targets
			     (html files).

		   sub	     With install or package, clean subpackages as
			     well.

		   packages  Short-hand for 'sub package'.

     clean-depends
		   Short hand for mmake clean=depends.

     configure	   Configure the port. Might be a void operation. Unless over-
		   ridden, configure creates the ${WRKBUILD} directory, runs
		   ${SCRIPTDIR}/configure if it exists, and runs whatever con-
		   figuration methods are recorded in CONFIGURE_STYLE.

     depends	   Check all the port's dependencies, that is: build-depends,
		   lib-depends, run-depends, regress-depends.

     describe	   Prints a one-line index entry of the port, suitable for
		   ${PORTSDIR}/INDEX.

     distclean	   Short-hand for mmake clean=dist.

     distpatch	   Apply distribution patches only. See patch and PATCH_CASES
		   for details.

     extract	   Extract the distribution files under ${WRKDIR} (but see
		   EXTRACT_ONLY). Refer to EXTRACT_CASES for a complete
		   description. Do not use pre-extract and do-extract hooks.

     fake	   Do a fake port installation, that is, simulate the port in-
		   stallation under ${WRKINST}. There is no do-fake and
		   post-fake hooks. fake actually uses pre-fake, pre-install,
		   do-install and post-install. Described in a separate sec-
		   tion below.

     fetch	   Fetch the distribution files and patchfiles, using
		   ${FETCH_CMD}. Each file of the DISTFILES and PATCHFILES
		   lists is retrieved, if necessary, from the list of sites in
		   MASTER_SITES. If a filename ends with a ':0' to ':9' exten-
		   sion, it will be retrieved from MASTER_SITES0 to
		   MASTER_SITES9 instead. The ports framework uses
		   ${DISTDIR}/${DIST_SUBDIR} (aliased to ${FULLDISTDIR}) to
		   cache the ports distribution files and patch files. Note
		   that this framework is also used by mirroring scripts,
		   which will also retrieve SUPDISTFILES, to fill with supple-
		   mentary distribution files which are not needed for every
		   configuration. See ALLFILES, CDROM_SITE, DISTDIR,
		   DISTFILES, DIST_SUBDIR, FETCH_CMD, FETCH_MANUALLY,
		   FETCH_SYMLINK_DISTFILES, FULL_DISTDIR, MASTER_SITES,
		   MASTER_SITES0, ..., MASTER_SITES9, PATCH_FILES,
		   SUPDISTFILES, REFETCH.

     install	   Install the package after building. See the description of
		   THE FAKE FRAMEWORK for the non-intuitive details of the way
		   {pre,do,post}-install hooks are actually used by the ports
		   tree.

     lib-depends   Verify that the library dependencies a port needs are actu-
		   ally there, by checking the library specifications.

     lib-depends-check
		   Verify that the LIB_DEPENDS hold all shared libraries used
		   for the port. See library-specs(7).

     license-check
		   Check that PERMIT_PACKAGE_* settings match: if any depen-
		   dency has a more restrictive setting, warn about it. This
		   warning is advisory, because the automated license checking
		   cannot figure out which ports were used only for building
		   and did not taint the current port.

     link-categories
		   Create symbolic links in other directories that correspond
		   to the port's CATEGORIES. Note that this does not affect
		   bulk package building, since those links don't appear in
		   the upper-level Makefiles. See also unlink-categories.

     makesum	   Create the ${CHECKSUM_FILE} list of recorded checksums by
		   running the cryptographic fingerprints sha1, md5 and rmd160
		   on ${ALLFILES} minus ${IGNOREFILES}. NO_CHECKSUM can be
		   used to avoid all checksumming steps.

     manpages-check
		   Verify that makewhatis(8) can do a correct job with the
		   port's manpages.

     package	   Build a port package (or packages in MULTI_PACKAGES cases)
		   from the fake installation. Involves creating packaging in-
		   formation from templates (see COMMENT, SED_PLIST,
		   SUBST_VARS among others) and invoking pkg_create(1) for
		   each package in the MULTI_PACKAGES list. If
		   ${PERMIT_PACKAGE_FTP} is set to 'Yes', copies built pack-
		   ages into ${FTP_PACKAGES}, using hard links if possible. If
		   ${PERMIT_PACKAGE_CDROM} is set to 'Yes', copies built pack-
		   ages into ${CDROM_PACKAGES}, using hard links if possible.

     patch	   Apply distribution and OpenBSD specific patches. Because of
		   historical accident, patch does not follow the exact same
		   scheme other standard targets do. Namely, patch invokes
		   pre-patch (if defined), do-patch, and post-patch, but the
		   default do-patch target invokes distpatch directly. So, if
		   the do-patch target is overridden, it should still begin by
		   calling mmake distpatch, before applying OpenBSD specific
		   patches. Accordingly, the exact sequence of hooks is:
		   pre-patch, do-distpatch, post-distpatch, do-patch,
		   post-patch. If ${PATCHDIR} exists, the files described
		   under PATCH_LIST will be applied under WRKDIST.

     readmes	   Create an html description of packages, including comments,
		   description, and dependencies.

     rebuild	   Force rebuild of the port.

     regress	   Run regression tests for the port. Essentially depend on a
		   correct build and invoke

		   env -i ${MAKE_ENV} ${MAKE_PROGRAM} ${REGRESS_FLAGS} \
			   -f ${MAKE_FILE} ${REGRESS_TARGET}

		   If a port needs some other ports installed to run regres-
		   sion tests, use REGRESS_DEPENDS. If a port needs special
		   configuration or build options to enable regression test-
		   ing, define a 'regress' FLAVOUR.

     regress-depends
		   Verify packages needed for regression tests, using the same
		   scheme as build-depends. Only invoked when regression tests
		   are run, or explicitly through depends.

     reinstall	   Force reinstallation of a port, by first cleaning the old
		   installation.

     repackage	   For rebuilding of the packages of a port, by first removing
		   the old packages.

     run-depends   Verify the ports mentioned in RUN_DEPENDS, by checking the
		   corresponding packages are actually installed, and install
		   the missing ports by recursing through the ports tree. In-
		   voked right before installing the package.

     show	   Invoked as mmake show=name, show the contents of ${name}.
		   Invoked as mmake show="name1 name2 ...", show the contents
		   of ${name1} ${name2} ..., one variable value per line.
		   Mostly used from recursive makes, or to know the contents
		   of another port's variables without guessing wrongly.

     unlink-categories
		   Remove symbolic links in other directories that correspond
		   to the port's CATEGORIES. See also link-categories.

     update-patches
		   Create or update patches for a port, using diff(1) between
		   file and file.orig, based on file.orig existence. In order
		   to generate a patch, the original file needs to be named
		   file.orig and file edited. After the target is invoked, the
		   patches are placed under the patches/ directory. It moves
		   existing patches from patch-file to patch-file.orig

     update-plist, plist
		   Update the packing lists for a port, using the fake instal-
		   lation and the existing packing lists. update-plist should
		   produce mostly correct PLIST, PFRAG.shared and
		   PFRAG.no-shared files, handling shared libraries, GNU
		   info(1) files, setuid files, and empty directories. It
		   moves existing files to PLIST.orig, PFRAG.shared.orig and
		   PFRAG.no-shared.orig. If the generated lists include files
		   and directories that shouldn't be included, comment these
		   like this:

		   @comment unwanted-file
		   @comment @dirrm unwanted-dir

		   Subsequent calls to update-plist will automatically recog-
		   nize and handle such lines correctly.

		   update-plist does not handle flavour situations yet, so
		   beware.

USER SETTINGS
     These variables should not be modified by individual ports. You can add
     them to the command line, set them as (exported) environment variables,
     or put them into mmake.cfg(5) to tune various options.

     BATCH	   Set to 'Yes' to avoid ports that require user-interaction
		   Use in conjunction with INTERACTIVE to simplify bulk-
		   package builds. (See IGNORE).

     BIN_PACKAGES  If set to 'Yes', the package target will trust a package
		   built in the repository to be up-to-date, and will not re-
		   build it if the work directory is absent. See also BULK,
		   TRUST_PACKAGES.

     BULK	   If set to 'Yes', successful package builds and installa-
		   tions will clean their working directories, after invoking
		   any targets mentioned in BULK_TARGETS. Can be set on a
		   per-${PKGPATH} basis. For instance, setting
		   BULK_misc/screen=No will override any BULK=Yes passed on
		   the command line. See BULK_COOKIES_DIR, BIN_PACKAGES,
		   TRUST_PACKAGES.

     BULK_COOKIES_DIR
		   Used to store cookies for successful bulk-package builds,
		   defaults to ${PORTSDIR}/Bulk.

     CDROM_PACKAGES
		   Base location where packages suitable for a CDROM (see
		   PERMIT_PACKAGE_CDROM) will be placed (default:
		   ${PKGREPOSITORY}/CDROM)

     COPTS	   Supplementary options appended to ${CFLAGS} for building.
		   Since most ports ignore the COPTS convention, they are ac-
		   tually told to use ${CFLAGS} ${COPTS} as CFLAGS.

     CXXOPTS	   Supplementary options appended to ${CXXFLAGS} for building.

     ECHO_MSG	   Used to display '===> Configuring for foo' and similar in-
		   formative messages. Override to turn off, for instance.

     FETCH_CMD	   Command used to fetch distribution files for this port. De-
		   faults to ftp(1). Can be used to go through excessively
		   paranoid firewalls.

     FETCH_SYMLINK_DISTFILES
		   Set to 'Yes' to link distribution files off CDROM_SITE in-
		   stead of copying them.

     FTP_PACKAGES  Base location where packages suitable for ftp (see
		   PERMIT_PACKAGE_FTP) will be placed (default:
		   ${PKGREPOSITORY}/FTP)

     INTERACTIVE   Set to 'Yes' to skip all non-interactive ports. Used in
		   conjunction with BATCH to simplify bulk-package builds.

     NO_CHECKSUM   Set to 'Yes' to avoid checksum, makesum, and addsum actions
		   entirely. Beware of the full implications of this mechan-
		   ism, namely that it disables entirely the basic authentica-
		   tion mechanisms of the ports tree.

     NO_DEPENDS	   Don't verify build of dependencies. Do not use in any ports
		   Makefile. This is only meant as a user convenience when,
		   e.g., you just want to browse through a given port's source
		   and do not wish to trigger the build of dependencies.

     NO_IGNORE	   If set to 'Yes', avoid ignoring a port for the usual rea-
		   sons. Use, for instance, for fetching all distribution
		   files, or for fixing a broken port. See also IGNORE.

     PKG_DBDIR	   Path to package installation records. Defaults to
		   /var/db/pkg.

     PKGREPOSITORY
		   Location for packages built (default ${PORTSDIR}/Packages).

     REFETCH	   If set to true, checksum will analyze ${CHECKSUM_FILE}, and
		   try retrieving files with the correct checksum off
		   ftp.openbsd.org, in the directory
		   /pub/OpenBSD/distfiles/$cipher/$value/$file.

     REPORT_PROBLEM
		   A command which is run when a port build fails during a re-
		   cursive run, i.e. when running mmake in a subdirectory or
		   for a whole category. The default is to abort the build;
		   during bulk builds, the port name is written to a file in
		   ${PORTSDIR} called Failed, and the build is continued at
		   the next port.

     SUDO	   If set to sudo(8) in mmake.cfg(5), the ports tree will only
		   invoke root's privileges for the parts that really require
		   it.

     TEMPLATES	   Base location for the templates used in the readmes target.

     TRUST_PACKAGES
		   If set to 'Yes', dependency mechanisms will assume the da-
		   tabase of installed packages is correct. See also
		   BIN_PACKAGES, BULK.

     WARNINGS	   If set to 'Yes', add CDIAGFLAGS to CFLAGS and CXXDIAGFLAGS
		   to CXXFLAGS.

PORT MAKEFILE VARIABLES
     Note that some variables are marked as 'read-only', which means that they
     shouldn't ever be changed.

     show	   Invoked as mmake show=name, show the contents of ${name}.
		   Invoked as mmake show="name1 name2 ...", show the contents
		   of ${name1} ${name2} ..., one variable value per line.

     ALLFILES	   List of all files that need to be retrieved by fetch, with
		   master site selection extension removed. Read-only.

     ALL_TARGET	   Target used to build software. Default is 'all'. Can be set
		   to empty, to yield a package's default target.

     ARCH	   Current machine architecture (read-only).

     AUTOCONF	   Location of the autoconf binary if needed. Defaults to au-
		   toconf (though mmake autoreconf might be more appropriate).

     AUTOCONF_DIR  Where to invoke autoconf if ${CONFIGURE_STYLE} includes au-
		   toconf. Defaults to ${WRKSRC}.

     AUTOCONF_NEW  For 'CONFIGURE_STYLE=autoconf', specify which version of
		   autoconf to use. 'no' selects the older version 2.13, 'yes'
		   selects the current version from the 2.5x series. If auto-
		   conf must be run manually, MODGNU_AUTOCONF_DEPS can be used
		   to specify what packages to depend upon.

     AUTOCONF_VERSION
		   Manually set the autoconf version to use. Please note that
		   this variable is deprecated in MirPorts, and AUTOCONF_NEW
		   (see above) should be used.

     AUTOGEN	   For 'CONFIGURE_STYLE=autogen', set the name of the
		   autogen.sh file to call. The default is to use a standard
		   version from the MirPorts infrastructure.

     BROKEN	   Define only for broken ports, set to reason the port is
		   broken. See also NO_IGNORE.

     BSD_INSTALL_{PROGRAM,SCRIPT,DATA,MAN}[_DIR]
		   Macros passed to mmake and configure invocations. Set based
		   on corresponding INSTALL_* variables.

     BUILD_DEPENDS
		   List of other ports the current port needs to build
		   correctly. Each item has the form
		   '[legacy]:[pkgspec]:directory[,-subpackage][,flavour
		   ...][:target]'. 'target' defaults to 'install' if it is not
		   specified. 'legacy' used to be a file to check. The ports
		   tree now uses 'pkgspec' instead, as a package that must be
		   installed prior to the build. 'directory' is set relative
		   to ${PORTSDIR}. 'subpackage' is an optional subpackage
		   name, to install instead of the default main package name.
		   'flavour ...' is a comma separated list of flavours. By de-
		   fault, the dependency will build the default flavour. Build
		   and lib dependencies are checked at the beginning of the
		   extract stage.

		   Build dependencies that are not the default package or
		   install target will be processed in a subdirectory of the
		   working directory, specifically, in ${WRKDIR}/directory.

     BULK_FLAGS	   Flags to pass to build each target in BULK_TARGETS.

     BULK_TARGETS  Targets to run after each bulk package build before clean-
		   ing up the working directory. Empty defaults. Can be set on
		   a per-${PKGPATH} basis, e.g., BULK_TARGETS_${PKGPATH}=...

     BZIP2	   Name of the bzip2 binary.

     B_R_DEPENDS   List of other ports the current port needs to build and run
		   correctly. The contents of this variable is internally sim-
		   ply added to the BUILD_DEPENDS and RUN_DEPENDS variables,
		   see there for reference.

     CATEGORIES	   List of descriptive categories into which this port falls.
		   Mandatory. See link-categories, unlink-categories.

     CDIAGFLAGS	   Flags appended to CFLAGS if WARNINGS is set.

     CDROM_SITE	   Path to a local database that holds distribution files
		   (usually a CD-ROM or other similar media), used to retrieve
		   distribution files before going to the network. Defaults to
		   /cdrom/distfiles. Set to empty to avoid checking any path.
		   Distribution files are still copied or linked (see
		   FETCH_SYMLINK_DISFILES) into DISTDIR if they are found
		   under CDROM_SITE.

     CFLAGS	   Default flags passed to the compiler for building. Many
		   ports ignore it. See also COPTS, CDIAGFLAGS.

     CHECKSUM_FILE
		   Location for this port's checksums, used by addsum,
		   checksum, and makesum. Defaults to distinfo.

     CLEANDEPENDS  If set to 'Yes', 'mmake clean' will also clean dependen-
		   cies. Can be overridden on a per-${PKGPATH} basis, by set-
		   ting CLEANDEPENDS_${PKGPATH}.

     COMMENT	   Comment used for the package, and in the INDEX.

     COMMENT-foo   Comment used for sub package foo in a multi-package set up.

     COMMENT-vanilla
		   Comment used for a flavoured package, if the non-flavoured
		   comment is inappropriate.

     COMMENT-foo-vanilla
		   Comment used for a sub-, flavoured package.

     COMES_WITH	   (deprecated) The first release where the port was made part
		   of the standard OpenBSD distribution. Normally not used in
		   MirPorts.

     CONFIGURE_ARGS
		   Arguments to pass to configure script. Defaults are empty,
		   except for gnu-style configure, where prefix and sysconfdir
		   are set.

     CONFIGURE_ENV
		   Basic environment passed to configure script (path and lib-
		   tool setup). gnu-style configure adds a lot more variables.

     CONFIGURE_SCRIPT
		   Set to name of script invoked by configure target, if ap-
		   propriate. Should be relative to ${WRKSRC}.

     CONFIGURE_SHARED
		   Set to --enable-shared or --disable-shared, depending on
		   whether the architecture supports shared libraries. Should
		   be appended to CONFIGURE_ARGS, for ports that build dynamic
		   libraries and whose configure script supports these op-
		   tions.

     CONFIGURE_STYLE
		   Set to style of configuration that needs to happen.

		   bmake     Run make obj as configure script and make depend
			     at pre-build time.

		   perl	     Assume perl(1) ExtUtils::MakeMaker(3p) style.
			     This is the style used by most Perl modules with
			     a Makefile.PL.

		   p5	     Same as perl, but does not create any targets,
			     just the variables.

		   modbuild  Perl modules using Module::Build(3), i.e. with a
			     Build.PL file.

		   gnu	     Assume gnu configure style.

		   dest	     Add this if the port does not handle DESTDIR
			     correctly, and needs to be configured to add
			     DESTDIR to prefixes (see also DESTDIRNAME).

		   old	     Add this if the port is an older autoconf port
			     that does not recognise --sysconfdir.

		   autoconf  autoheader and autoconf needs to be rerun first
			     (implies gnu). Before running the two, the auto-
			     conf infrastructure is updated to MirLibtool.

		   no-autoheader
			     (with autoconf) Do not run autoheader. Use this
			     for broken ports if autoheader aborts with an er-
			     ror message.

		   automake  automake may need to be rerun. Please note that
			     you still must do this manually. Otherwise, au-
			     tomake will be explicitly disabled.

		   autogen   Run autogen.sh before invoking configure. Normal-
			     ly, this script runs aclocal, automake,
			     autoheader, and autoconf. If AUTOGEN is not set,
			     an autogen.sh script from the MirPorts infras-
			     tructure is run.

		   imake     assume the port configures using X11 ports
			     Imakefile framework.

		   noman     (with imake) The port has no man pages the
			     Imakefile should try installing.

		   simple    There is a configure script, but it does not fit
			     the normal gnu configure conventions.

     CVS_DIST*	   Enables an operation mode where the distfile is fetched
		   from CVS. The following variables can be set by the user:

		   CVS_DISTDATE	 The value of the -D option to cvs checkout.
				 Optional, but either this or CVS_DISTTAGS
				 must be specified.

		   CVS_DISTFILE	 The file name prefix. Optional (derived from
				 CVS_DISTMODS), unless more than one module is
				 checked out.

		   CVS_DISTMODS	 Module(s) to check out, separated by whi-
				 tespace.

		   CVS_DISTREPO	 Repository to check out from, i.e. the value
				 of the -d option to cvs. If it does not start
				 with a colon, CVSREADONLYFS is set automati-
				 cally, which is not compatible with the
				 OpenBSD version of anoncvssh.

		   CVS_DISTTAGS	 The value of the -r option to cvs checkout.
				 Optional, but either this or CVS_DISTDATE
				 must be specified.

		   For the full documentation for these variables, see
		   cvs-distfiles(7).

		   WRKDIST is set automatically to ${WRKDIR}/${CVS_DISTMODS}.
		   PKGNAME defaults to ${_CVS_DISTF:R}-${DASH_VER}.

     CXXDIAGFLAGS  Flags appended to CXXFLAGS if WARNINGS is set.

     CXXFLAGS	   Default flags passed to the C++ compiler for building. Many
		   ports ignore it.

     DASH_VER	   A numeric, decimal, value that is the last component of
		   ${PKGNAME} without any flavour or subpackage extensions.
		   This replaces the former "package patchlevel". Default is
		   0.

     DEF_UMASK	   Correct value of umask for the port to build and package
		   correctly. Tested against the actual umask at fake time.
		   Default is 022. Don't override.

     DESTDIR	   See DESTDIRNAME.

     DESTDIRNAME   Name of variable to set to ${WRKINST} while faking. Usually
		   DESTDIR. To be used in the rare cases where a port heeds
		   DESTDIR in a few directories and needs to be configured
		   with 'gnu dest', so that those few directories do not get
		   in the way.

     DISTDIR	   Directory where all ports distribution files and patchfiles
		   are stashed. Defaults to ${PORTSDIR}/Distfiles. Override if
		   distribution files are stored elsewhere. Always use
		   FULLDISTDIR to refer to ports' distribution files location,
		   as it takes an eventual DIST_SUBDIR into account.

     DISTFILES	   The main port's distribution files (the actual software
		   source, except for binary-only ports). Will be retrieved
		   from the MASTER_SITES (see fetch), checksummed and extract-
		   ed (see checksum, extract). DISTFILES normally holds a list
		   of files, possibly with ':0' to ':9' appended to select a
		   different MASTER_SITES. See also SUPDISTFILES.

     DISTNAME	   Name used to identify the port. See DISTFILES and PKGNAME.

     DISTORIG	   Suffix used by distpatch to rename original files. Defaults
		   to .bak.orig. Distinct from .orig to avoid confusing
		   update-patches.

     DIST_SUBDIR   Optional subdirectory of ${DISTDIR} where the current
		   port's distribution files and patchfiles will be located.
		   See target fetch.

     EMUL	   List of binary emulations (kernel personalities) the
		   software needs. Only necessary for binary-only software. If
		   the necessary binary emulation is turned off or not avail-
		   able, the port is ignored.

     ERRORS	   List of errors found while parsing the port's Makefile.
		   Display the errors before making any target, and if any er-
		   ror starts with "Fatal:", do not make anything. For in-
		   stance:

			 .if !defined(COMMENT)
			 ERRORS+="Fatal: Missing comment"
			 .endif

     EXTRACT_CASES
		   In the normal extraction stage (when EXTRACT_ONLY is not
		   empty), this is the contents of a case statement, used to
		   extract files. Fragments are automatically appended to ex-
		   tract tar and zip archives, so that the default case is
		   equivalent to the following shell fragment:

		   set -e
		   cd ${WRKDIR}
		   for archive in ${EXTRACT_ONLY}
		   do
		       case $$archive in
			   *.zip)
			     unzip -q ${FULLDISTDIR}/$$archive -d ${WRKDIR};;
			   *.tar.bz2)
			     bzip2 -dc ${FULLDISTDIR}/$$archive | tar xf -;;
			   *.shar.gz|*.shar.Z|*.sh.Z|*.sh.gz)
			     gzcat ${FULLDISTDIR}/$$archive | /bin/sh;;
			   *.shar|*.sh)
			     /bin/sh ${FULLDISTDIR}/$$archive;;
			   *.tar)
			     tar xf ${FULLDISTDIR}/$$archive;;
			   *)
			     gzip -dc ${FULLDISTDIR}/$$archive | tar xf -;;
		       esac
		   done

     EXTRACT_ONLY  Set if not all ${DISTFILES} should be extracted at
		   do-extract stage. Default value is ${DISTFILES}.

     EXTRACT_SUFX  Used to set DISTFILES default value to
		   ${DISTNAME}${EXTRACT_SUFX}. Default value is .tar.gz.

     FAKE	   Automatically set to 'Yes' for most ports (and all new
		   ports). Indicates that the port, using FAKE_FLAGS magic,
		   will properly fake installation into ${WRKINST}, to be
		   packaged and properly installed from the package. Set to
		   'No' in very rare cases, and during port creation.

     FAKE_FLAGS	   Flags passed to ${MAKE_PROGRAM} on fake invocation. By de-
		   fault, ${DESTDIRNAME}=${WRKINST}.

     FAKE_TARGET   Target build by ${MAKE_PROGRAM} on fake invocation. De-
		   faults to ${INSTALL_TARGET}.

     FAKEOBJDIR	   If non empty, used as a base for the fake area. The real
		   fake directory ${WRKINST} is created there. Can be set on a
		   per-${PKGPATH} basis. For instance, setting
		   FAKEOBJDIR_www/mozilla=/tmp/obj will affect only the mozil-
		   la port.

     FETCH_MANUALLY
		   Some ports' distfiles cannot be fetched automatically for
		   licensing reasons. In this case, set FETCH_MANUALLY to a
		   list of strings that will be displayed, one per line, e.g.,

		   FETCH_MANUALLY= "You must fetch foo-1.0.tgz"
		   FETCH_MANUALLY+="from http://www.fubar.com/ manually,"
		   FETCH_MANUALLY+="after reading and agreeing to the license."
		   Automatically sets IS_INTERACTIVE if some distribution
		   files are missing.

     FILESDIR	   Location of other files related to the current ports. (de-
		   fault: files.${ARCH} or files).

     FLAVOUR	   The port's current options. Set by the user, and tested by
		   the port to activate wanted functionalities.

     FLAVOURS	   List of all flavours keywords a port may match. Used to
		   sort FLAVOUR into a canonical order to build the package
		   name, or to select the packing-list, and as a quick validi-
		   ty check. See also PSEUDO_FLAVOURS.

     FLAVOUR_EXT   Canonical list of flavours being set for the current build,
		   dash-separated. See FULLPKGNAME.

     FULLPKGNAME   Full name of the main created package, taking flavours into
		   account. Defaults to ${PKGNAME}${FLAVOUR_EXT}.

     FULLPKGNAME-foo
		   Full package name for sub-package foo, if the default value
		   is not appropriate.

     FULLPKGPATH   Path to the current port's directory, relative to
		   ${PORTSDIR}, including flavours and subpackages. Read-only.

     GMAKE	   Location of the gnu make binary, if needed. Defaults to
		   gmake.

     HOMEPAGE	   Set to a link to the homepage of the software, if applica-
		   ble.

     IGNOREFILES   Set to the list of files that cannot be checksummed. For
		   use by ports which fetch dynamically generated archives
		   that can't be checksummed. Avoid using IGNOREFILES whenever
		   possible.

     LIB_DEPENDS   Libraries this port depends upon. These are also always
		   build dependencies, and added to BUILD_DEPENDS automatical-
		   ly, if required. Each item has the form
		   'lib_specs:[pkgspec]:directory[,-subpackage][,flavour
		   ...][:target]'. Similar to BUILD_DEPENDS, except for
		   'lib_specs', which is a comma-separated list of 'lib_spec'
		   of the form: 'libname.[version.[subversion]]'. See
		   library-specs(7) for more details.

		   On architectures that use dynamic libraries, LIB_DEPENDS is
		   also used as a run-time dependency, and recorded in the
		   package as such.

     FULLDISTDIR   Complete path to directory where ${DISTFILES} and ${PATCH-
		   FILES} will be located, to be used in hand-crafted extrac-
		   tion targets (read-only).

     IGNORE	   The port is ignored and ${IGNORE} is printed if defined.
		   Usually set to the reason the port is ignored. See also
		   BATCH, BROKEN, IGNORE_SILENT, INTERACTIVE, IS_INTERACTIVE,
		   NOT_FOR_ARCHS, NO_IGNORE, ONLY_FOR_ARCHS, USE_X11.

     IGNORE_SILENT
		   If set to 'Yes', do not print anything when ignoring a
		   port.

     INSTALL_{PROGRAM,SCRIPT,DATA,MAN}[_DIR]
		   Macros to use to install a program, a script, data, or a
		   man page (or the corresponding directory), respectively.

     INSTALL_TARGET
		   Target invoked to install the software, during fake instal-
		   lation. Default is 'install'.

     IS_INTERACTIVE
		   Set to 'Yes' if port needs human interaction to build. Usu-
		   ally implies NO_PACKAGE as well. Porters should strive to
		   minimize IS_INTERACTIVE ports, by using FLAVOURS for multi-
		   ple choice ports, and by postponing human intervention to
		   package installation time.

     LIBTOOL	   Location of the libtool binary for ports that set
		   USE_LIBTOOL (default: ${LOCALBASE}/bin/libtool).

     LIBTOOL_FLAGS
		   Arguments to pass to libtool. If USE_LIBTOOL is set, the
		   environment variable LIBTOOL is set to ${LIBTOOL}
		   ${LIBTOOL_FLAGS}.

     LOCALBASE	   where other ports have already been installed (default:
		   /usr/local)

     MAINTAINER	   E-mail address with full name of the port's maintainer for
		   OpenBSD. For political reasons, this should NEVER be set in
		   MirPorts. When adding ports from OpenBSD, be sure to delete
		   this line. The MirPorts equivalent is called RESPONSIBLE.

     MAKE_ENV	   Environment variables passed to make invocations. Sets at
		   least PATH, PREFIX, LOCALBASE, X11BASE, CFLAGS, TRUEPREFIX,
		   DESTDIR, and the BSD_INSTALL_* macros.

     MAKE_FLAGS	   Flags used for all make invocations, except for the fake
		   stage, which uses FAKE_FLAGS, and for the regress stage,
		   which uses REGRESS_FLAGS.

     MAKE_FILE	   Name of the Makefile used for ports building. Defaults to
		   Makefile. Used after changing directory to ${WRKBUILD}.

     MAKE_PROGRAM  The make program that is used for building the port. Set to
		   ${MAKE} or ${GMAKE} depending on USE_GMAKE. Read-only.

     MASTER_SITES  List of primary location from which distribution files and
		   patchfiles are retrieved. See the fetch target for more de-
		   tails. See ports(7) for user configuration.

     MASTER_SITES0, ..., MASTER_SITES9
		   Supplementary locations from which distribution files and
		   patchfiles are retrieved.

     MCZ_FETCH	   For _CVS_DISTF operation, i.e. if one of CVS_DISTREPO or
		   SVN_DISTPATH is set, control the way how these VCS dist-
		   files are fetched. This variable affects all distfiles,
		   i.e. _CVS_DISTF, _CVS_DISTF0, ..., _CVS_DISTF9.

		   Possible values are:

		   No	 Directly fetch from the VCS and compress using
			 mpczar(1).

			 This is the default.

		   Yes	 Fetch from the appropriate MASTER_SITES, which is in-
			 itialised to default to ${_MASTER_SITE_MIRBSD}.

		   LZMA	 Append the suffix ".lzma" to the _CVS_DISTF, and
			 fetch it from the appropriate MASTER_SITES, which is
			 initialised to default to ${_MASTER_SITE_MIRBSD}.

			 Note that the distfile has to be recompressed manual-
			 ly by the master site administrator, and due to use
			 of a different compressor than the mpczar.z helper,
			 it is not guaranteed to be reproducible.

		   xz	 Append the suffix ".xz" to the _CVS_DISTF, and fetch
			 it from the appropriate MASTER_SITES, which is ini-
			 tialised to default to ${_MASTER_SITE_MIRBSD}.

			 Note that the distfile has to be recompressed manual-
			 ly by the master site administrator, and due to use
			 of a different compressor than the mpczar.z helper,
			 it is not guaranteed to be reproducible.

     MESSAGE	   File recorded in the package and displayed during installa-
		   tion. Defaults to ${PKGDIR}/MESSAGE if this file exists.
		   Leave empty if no message is needed.

     MODGNU_RECURSE_DIRS
		   If a port uses more than one configure script, set this to
		   all directories that contain one. Copies config.guess to
		   the right places; if CONFIGURE_STYLE is autoconf, autoconf
		   is also called in the given directories, and so on for au-
		   togen, autoheader, MirLibtool conversion, etc.

     MODGNU_TYPESCAN
		   Set this to the names of functions where the configure
		   script scans for types of its arguments, to prevent bogus
		   warnings such as:

		   conftest.c:141: error: conflicting types for 'recv'
		   /usr/include/sys/socket.h:451: error: previous declaration of 'recv' was here

		   These warnings are grepped from the config.log file in case
		   someone forgot to run our patched version of
		   ports/devel/autoconf/2.{13,61} on the script, which
		   prevents mis-not-detection of functions.

     MODSIMPLE_USE_INSTALL
		   Set to the install(1) programme to use to copy files for
		   installation.

		   Default: ${INSTALL} -c -o ${BINOWN} -g ${BINGRP}

     MOTIFLIB	   Read-only. Correct incantation to link with motif.

     MTREE_FILE	   mtree(8) specification to check when creating a PLIST with
		   the update-plist target. MTREE_FILE can hold a list of file
		   names, to which ${PORTSDIR}/infrastructure/db/fake.mtree is
		   always appended. These specifications are rooted at
		   ${WRKINST}, and are subject to SUBST_VARS substitution, to
		   ease ${PREFIX} independence. This feature is primarily in-
		   tended for large, interconnected ports, such as the kde
		   suite, where a base package sets up a large, extra directo-
		   ry hierarchy that would make the manual checking of packing
		   lists tedious.

     MULTI_PACKAGES
		   Set to a list of package extensions for ports that create
		   multiple packages. See "Flavours and multi-packages" below.

     NOT_FOR_ARCHS
		   List of architectures on which this port does not build.
		   See also ONLY_FOR_ARCHS.

     NO_BUILD	   Port does not need any build stage.

     NO_REGRESS	   Port does not have any regression tests.

     NO_SHARED_ARCHS
		   Set to the list of platforms that do not support shared li-
		   braries. Use with NOT_FOR_ARCHS.

     NO_SHARED_LIBS
		   Set to 'Yes' if platform does not support shared libraries.
		   To be tested after including bsd.port.mk, if neither
		   PFRAG.shared nor CONFIGURE_SHARED are enough.

     NO_SYSTRACE   Port does not build with systrace enabled build targets.

     ONLY_FOR_ARCHS
		   List of architectures on which this port builds. Can hold
		   both processor-specific information (e.g., m68k), and more
		   specific model information (e.g., hp300).

     OPSYS	   Always OpenBSD (read-only).

     OPSYS_VER	   Revision number of OpenBSD (read-only).

     PACKAGING	   Defined while building packages, read-only. See the
		   description of FLAVOURS AND MULTI_PACKAGES for a detailed
		   explanation.

     PATCH	   Command to use to apply all patches. Defaults to
		   /usr/bin/patch.

     PATCHORIG	   Suffix used by patch to rename original files, and
		   update-patches to re-generate ${PATCHDIR}/${PATCH_LIST} by
		   looking for files using this suffix. Defaults to .orig. For
		   a port that already contains .orig files in the ${DIST-
		   FILES}, set this to something else, such as .pat.orig. See
		   also distpatch, DISTORIG.

     PATCH_CASES   In the normal distpatch stage (when PATCHFILES is not emp-
		   ty), this is the contents of a case statement, used to ap-
		   ply distribution patches. Fragments are automatically ap-
		   pended to handle compressed patches, so that the default
		   case is equivalent to the following shell fragment:

		   set -e
		   cd ${FULLDISTDIR}
		   for patchfile in ${_PATCHFILES}
		   do
		       case $$patchfile in
			   *.bz2)
			     bzip2 -dc $$patchfile | ${PATCH} ${PATCH_DIST_ARGS};;
			   *.Z|*.gz)
			     gzcat $$patchfile | ${PATCH} ${PATCH_DIST_ARGS};;
			   *)
			     ${PATCH} ${PATCH_DIST_ARGS} <$$patchfile;;
		       esac
		   done

     PATCHDIR	   Location for patches applied by patch target (default:
		   patches.${ARCH} or patches).

     PATCHFILES	   Files to fetch from the master sites like DISTFILES, but
		   serving a different purpose, as they hold distribution
		   patches that will be applied at the patch stage. See also
		   SUPDISTFILES.

     PATCH_ARGS	   Full list of options used while applying port's patches.

     PATCH_CHECK_ONLY
		   Set to Yes by the checkpatch target. Don't touch unless the
		   default checkpatch target needs to be redefined. Ideally,
		   user-defined patch subtargets ought to test checkpatch. In
		   practice, they don't.

     PATCH_DEBUG   If set to 'Yes', the patch stage will output extra debug
		   information.

     PATCH_DIST_ARGS
		   Full list of options used while applying distribution
		   patches.

     PATCH_DIST_STRIP
		   Patch option used to strip directory levels while applying
		   distribution patches. Defaults to -p0 .

     PATCH_LIST	   Wildcard pattern of patches to select under ${PATCHDIR}
		   (default: patch-*). Note that filenames ending in .orig or
		   ~ are never applied. Note that PATCH_LIST can hold absolute
		   pathnames, for instance to share patches among similar
		   ports:

		   PATCH_LIST=${PORTSDIR}/x11/kde/libs2/patches/p-* patch-*

     PATCH_STRIP   Patch option used to strip directory levels while applying
		   port's patches. Defaults to -p0 .

     PKG_ARCH	   Comma-separated list of architectures on which this package
		   may install. Defaults to ${MACHINE_ARCH},${ARCH}. Use * to
		   mean any arch.

     PKG_SUFX	   Extension and format to choose for packages. Possible
		   values are:

		   .cgz	  sv4cpio with CRC, compressed with gzip(1). Default
			  on all systems except OpenBSD.

		   .clz	  sv4cpio with CRC, compressed with LZMA-Alone. Re-
			  quires lzmadec to be installed to handle, lzma and
			  ~320M datasize ulimit to create, no automatic depen-
			  dency.

		   .cxz	  sv4cpio with CRC, compressed with LZMA2 (xz). Re-
			  quires xzdec to be installed to handle, xz and 800
			  MiB datasize ulimit to create (although, if less is
			  available, xz will degrade compression quality au-
			  tomatically), no automatic dependency.

		   .cpio  sv4cpio with CRC, uncompressed.

		   .tgz	  ustar, compressed with gzip(1). Default on OpenBSD.

		   .tar	  ustar, uncompressed.

		   .tar.gz
			  ustar, compressed with gzip(1). Legacy use only,
			  will go away.

     PORTHOME	   Setting of env variable HOME for most shell invocations.
		   Default will trip ports that try to write into $HOME while
		   building.

     PORTPATH	   Path used by most shell invocations. Don't override unless
		   really needed.

     PORTSDIR	   Root of the ports tree (default: /usr/ports).

     PORTSDIR_PATH
		   Path used by dependencies and bsd.port.subdir.mk to look up
		   package specifications. Defaults to
		   ${PORTSDIR}:${PORTSDIR}/Mystuff.

     PKGDIR	   Location for packaging information (packing list, port
		   description, port short description). Default: pkg.${ARCH}
		   or pkg.

     PKGNAME	   Name of the main created package. Default is
		   ${DISTNAME}-${DASH_VER} for the main package, and
		   ${DISTNAME}-${DASH_VER} for multi-package ports. This does
		   not take flavours into account. See FULLPKGNAME for that.
		   Defaults to ${_CVS_DISTF:R}-${DASH_VER} for CVS distfiles
		   and ${DIST_NAME}-${DIST_DATE}-${DASH_VER} for non-distfile
		   ports.

     PKGNAME-foo   Package name for sub-package foo, if the default value of
		   ${PKGNAME}${SUBPACKAGE} is not appropriate.

     PKGPATH	   Path to the current port's directory, relative to
		   ${PORTSDIR}. Read-only.

     PREFERRED_CIPHERS
		   List of cryptographic ciphers to use, in order of prefer-
		   ence. Default is 'sha512 rmd160 sha1 md5'. The first cipher
		   that matches in ${CHECKSUM_FILE} is verified.

     PREFIX	   Base directory for the current port installation. Usually
		   ${LOCALBASE}, though some ports may elect a location under
		   /var, and some multi-package ports may install under
		   several locations.

     PSEUDO_FLAVOURS
		   Extra list of flavours that do not register in package
		   names, but are still used to control build logic, and e.g.,
		   working directory names. Its main use is for disabling part
		   of a multi-packages build, for instance:

		   FLAVOUR=no_gnome mmake package

		   Creation of a separate working directory is mandatory. If,
		   at a later time, a full build with all subpackages is re-
		   quired, all the work will need to be done again.

     REGRESS_DEPENDS
		   See BUILD_DEPENDS for specification. Regress dependencies
		   are only checked if the regress stage is invoked.

     REGRESS_FLAGS
		   Flags to pass to ${MAKE_PROGRAM} to run the regression
		   tests. Defaults to ${MAKE_FLAGS}.

     REGRESS_IS_INTERACTIVE
		   Set to 'Yes' if port needs human interaction to run its
		   tests.

     REGRESS_TARGET
		   Target to run regression tests. Defaults to 'regress', ex-
		   cept for 'perl' and 'gnu' CONFIGURE_STYLE, which default to
		   'test' and 'check' respectively.

     RESPONSIBLE   The name and e-mail address of the person maintaining the
		   port for MirPorts. The default is the miros-discuss list.

     RUN_DEPENDS   Specification of ports this port needs installed to be
		   functional. Same format as BUILD_DEPENDS. The corresponding
		   packages will be built at install stage, and pkg_add(1)
		   will take care of installing them.

     SED_PLIST	   Pipeline of commands used to create the actual packing list
		   from the PLIST template (usually ${PKGDIR}/PLIST).
		   bsd.port.mk appends to it substitution commands correspond-
		   ing to the port's FLAVOUR and variables from SUBST_VARS.
		   ${SED_PLIST} is invoked as a pipeline after inserting
		   PFRAG.shared fragments.

     SCRIPTDIR	   Location for scripts related to the current port (default:
		   scripts.${ARCH} or scripts).

     SVN_DIST*	   Enables an operation mode where the distfile is fetched
		   from Subversion. The following variables can be set by the
		   user:

		   SVN_DISTDIR	 Name of the top-level directory to check out
				 to. Optional (derived from the basename of
				 SVN_DISTPATH). If this is only a dash ('-'),
				 a single-file checkout is done.

		   SVN_DISTFILE	 The file name prefix. Optional (derived from
				 the basename of SVN_DISTDIR).

		   SVN_DISTPATH	 Repository to check out from (full path).

		   SVN_DISTREV	 Revision to check out.

		   For the full documentation for these variables, see
		   cvs-distfiles(7).

		   WRKDIST is set automatically to ${WRKDIR}/${SVN_DISTDIR}.
		   PKGNAME defaults to
		   ${SVN_DISTFILE}-${SVN_DISTREV}-${DASH_VER}.

     SUBPACKAGE	   Set to the sub package suffix when building a package in a
		   multi-package port. Read-only. Used to test for dependen-
		   cies or to adjust the package name.

     SUBST_VARS	   Make variables whole values get substituted to create the
		   actual package information. Always holds ARCH, FLAVOUR_EXT,
		   HOMEPAGE, MACHINE_ARCH, MAINTAINER, PREFIX, and SYSCONFDIR.
		   The special construct '${FLAVOURS}' can be used in the
		   packing-list to specify the current list of dash separated
		   flavours the port is compiled with (useful for cross-
		   dependencies in MULTI_PACKAGES). Add other variables as
		   needed.

     SUPDISTFILES  Supplementary files that need to be retrieved under some
		   specific circumstances. For instance, a port might need
		   architecture-specific files. SUPDISTFILES should hold a
		   list of all distribution files and patchfiles that are not
		   always needed, so that a mirror will be able to grab all
		   files, or that makesum will work. Having an overlap between
		   SUPDISTFILES and DISTFILES, PATCHFILES is admissible, and
		   in fact, expected, as it is much simpler to build an
		   error-free list of files to retrieve in that way. See the
		   xanim port for an example.

     SYSCONFDIR	   Location for ports system configuration files. Defaults to
		   /etc, should never be set to /usr/local/etc.

     SYSTRACE_FILTER
		   Location of the systrace filter file which is the basis for
		   a port's actual systrace policy file. Defaults to
		   ${PORTSDIR}/infrastructure/db/systrace.filter.

     SYSTRACE_SUBST_VARS
		   List of variables used in ${SYSTRACE_FILTER} that will be
		   substituted by their real value when creating the systrace
		   policy file. Always holds WRKOBJDIR, PORTSDIR, and DISTDIR.

     TAR	   Name of the tar binary.

     UNZIP	   Name of the unzip binary.

     USE_CXX	   Set to 'Yes' if the port needs a C++ compiler to build. On
		   systems without a C++ compiler, this shows a fatal error.

     USE_GMAKE	   Set to 'Yes' if gnu make (${GMAKE}) is needed for correct
		   behavior of this port.

     USE_LIBTOOL   Set to 'Yes' if libtool is required for correct behavior of
		   this port. Adds correct dependencies, and passes LIBTOOL
		   environment variable to scripts invocations.

     USE_MOTIF	   Set to 'any' if port works with any version of motif;
		   'lesstif' if port requires lesstif to work; 'openmotif' if
		   ports requires openmotif to work. The 'any' setting creates
		   an extra flavour choice of 'lesstif'. See also MOTIFLIB

     USE_SYSTRACE  Set to 'Yes' to protect port building with systrace. Set by
		   the user, e.g. in /etc/mmake.cfg.

     USE_X11	   Set to 'Yes' if port requires X11 to work.

     VMEM_WARNING  Set to 'Yes' if the port requires a lot of memory to com-
		   pile, and the user is likely to see a message like "virtual
		   memory exhausted" with the default process limits.

     WRKBUILD	   Subdirectory of ${WRKDIR} where the actual build occurs.
		   Defaults to ${WRKSRC}.

     WRKDIR	   Location where all port activity occurs. Apart from the ac-
		   tual port, may hold all kinds of cookies that checkpoint
		   the port's build. Read-only. Ports that need to know the
		   WRKDIR of another port must use cd that_port_dir && mmake
		   show=WRKDIR for this. Note that WRKDIR may be a symbolic
		   link.

     WRKDIST	   Subdirectory of ${WRKDIR} in which the distribution files
		   normally unpacks. Base for all patches (default:
		   ${WRKDIR}/${DISTNAME}). Note that WRKDIST may be a symbolic
		   link, if set to ${WRKDIR}.

     WRKSRC	   Subdirectory of ${WRKDIR} where the actual source is. Base
		   for configuration (default: ${WRKDIST}) Note that WRKSRC
		   may be a symbolic link, if set to ${WRKDIR}.

     WRKPKG	   Subdirectory of ${WRKBUILD} where package information gets
		   generated. Defaults to ${WKRBUILD}/pkg, do not override un-
		   less 'pkg' conflicts with the port's conventions.

     WRKINST	   Subdirectory of ${WRKDIR} where port normally installs (see
		   fake target).

     WRKOBJDIR	   If non empty, used as a base for the actual port working
		   directory. The real working directory ${WRKDIR} is created
		   there. Can be set on a per-${PKGPATH} basis. For instance,
		   setting WRKOBJDIR_www/mozilla=/tmp/obj will affect only the
		   mozilla port.

     X11BASE	   Where X11 has been installed (default: /usr/X11R6).

     XMKMF	   Invocation of xmkmf for CONFIGURE_STYLE=imake port. De-
		   faults to xmkmf -a -DPorts. The -DPorts is specific to
		   OpenBSD and is always appended.

     YACC	   Name of yacc program to pass to gnu-configure, defaults to
		   yacc. (gnu-configure would always try to use bison other-
		   wise, which leads to unreproducible builds.) Set to bison
		   if needed.

FILES
     ../Makefile.inc
		Common Makefile fragment for a set of ports, included automat-
		ically.

     /cdrom/distfiles
		Default path to a CD-ROM (or other media) full of distribution
		files.

     Makefile.${ARCH}
		Arch-dependent Makefile fragment, included automatically.

     ${DISTDIR}
		cache of all distribution files.

     distinfo	Checksum file. Holds the output of md5(1), sha1(1), sha512(1),
		and rmd160(1) for the ports ${DISTFILES} and ${PATCHFILES}.

     ${FULLDISTDIR}/${ALLFILES}
		cache of distribution files for a given port.

     ${PKGDIR}/DESCR
		Description for the port. Variables such as ${HOMEPAGE} and
		${MAINTAINER} will be expanded (see SUBST_VARS). Multi-package
		ports will use DESCR${SUBPACKAGE}.

     ${PORTSDIR}/infrastructure/db/fake.mtree
		Specification used for populating ${WRKINST} at the start of
		fake. Use pre-fake if this is incomplete.

     ${PORTSDIR}/Packages/CDROM
		Default setup of ${CDROM_PACKAGES}.

     ${PORTSDIR}/Packages/FTP
		Default setup of ${FTP_PACKAGES}.

     ${PORTSDIR}/Packages
		Default setup of ${PKGREPOSITORY}.

     ${PORTSDIR}/Bulk
		Default setup of ${BULK_COOKIES_DIR}.

     ${PORTSDIR}/Mystuff
		Extra directory used to store local ports before committing
		them. All depend targets will normally look there after the
		normal lookup fails. See PORTSDIR_PATH.

     systrace.filter
		List of additional port specific filters, included automati-
		cally.

OBSOLETE TARGETS
     cdrom-packages, ftp-packages
		   Links are now created during the package target.

     depends-list  Renamed into full-build-depends

     {pre,do}-extract
		   Don't override. Set EXTRACT_ONLY to nothing and override
		   post-extract instead.

     fetch-all, fetch-list, mirror-distfiles
		   See mirroring-ports(7) for more efficient and flexible ways
		   to build mirrors.

     obj	   Starting with OpenBSD 3.3, using WRKOBJDIR no longer
		   creates a symlink between the current directory and a sub-
		   directory of ${WRKOBJDIR}, so obj is no longer applicable.

     print-depends
		   Use print-build-depends and print-run-depends instead.

     print-depends-list
		   Renamed into print-build-depends

     print-package-depends
		   Renamed into

     print-run-depends

OBSOLETE VARIABLES
     CATn	   List of formatted manpages, per section.

     CATPREFIX	   Location for storing formatted manpages. Derived directly
		   from PREFIX.

     COMMENT	   Used to be the name of the comment file for a package. It
		   now holds the comment itself. Some magic has been put in to
		   allow for a seamless transition.

     DESCR_SRC	   From NetBSD. This is DESCR. OpenBSD does not give a specif-
		   ic name to the generated file. It is not recommended to try
		   to access them directly.

     EXTRACT_AFTER_ARGS
		   Was used to cobble together the normal extraction command,
		   as ${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS}
		   ${EXTRACT_AFTER_ARGS}. Use EXTRACT_CASES instead.

     EXTRACT_BEFORE_ARGS
		   Likewise, use EXTRACT_CASES instead.

     EXTRACT_CMD   Likewise, use EXTRACT_CASES instead.

     FETCH_BEFORE_ARGS, FETCH_AFTER_ARGS
		   Set FETCH_CMD to point to a script that does any required
		   special treatment instead.

     FETCH_DEPENDS
		   Used to specify dependencies that were needed to fetch
		   files. It is much easier to mirror locally weird distribu-
		   tion files.

     GNU_CONFIGURE
		   Use CONFIGURE_STYLE instead.

     HAS_CONFIGURE
		   Use CONFIGURE_STYLE instead.

     HAVE_MOTIF	   Old user settings. No longer needed since OpenMotif is now
		   free.

     MANn	   List of unformatted manpages, per section.

     MANPREFIX	   Location for storing unformatted manpages. Derived directly
		   from PREFIX.

     MASTERDIR	   From FreeBSD. Used to organize a collection of ports that
		   share most files. OpenBSD uses a single port with flavours
		   or multi-packages to produce package variations instead.

     MASTER_SITE_SUBDIR
		   Contents were used to replace '%SUBDIR%' in all
		   MASTER_SITES variables. Since '%SUBDIR%' almost always oc-
		   cur at the end of the directory, the simpler
		   ${VARIABLE:=subdir/} construct is now used instead
		   (taken from NetBSD).

     MD5_FILE	   Use CHECKSUM_FILE instead.

     MIRROR_DISTFILE
		   Use PERMIT_DISTFILES_FTP and PERMIT_DISTFILES_CDROM to
		   determine which files can be mirrored instead. See
		   mirroring-ports(7).

     NEED_VERSION  Used to set a requirement on a specific revision of
		   bsd.port.mk needed by a port. No longer needed as
		   bsd.port.mk should always be kept up-to-date.

     NO_CONFIGURE  If ${CONFIGURE_SCRIPT} does not exist, no automatic confi-
		   guration will be done anyway.

     NO_DESCRIBE   All ports should generate a description.

     NO_EXTRACT	   Set EXTRACT_ONLY= instead.

     NO_INSTALL_MANPAGES
		   Use CONFIGURE_STYLE instead.

     NO_MTREE	   Starting with OpenBSD 2.7, the operating system installa-
		   tion script runs the /usr/local specification globally, in-
		   stead of embedding it in each package. So packages no
		   longer record an mtree(8) specification. Use an explicit
		   '@exec' command if needed.

     NO_PACKAGE	   All ports should generate a package, preferably before in-
		   stall.

     NO_PATCH	   The absence of a patches directory does the same. Use
		   PATCHDIR and PATCH_LIST if patches need to be changed
		   dynamically.

     NO_WRKDIR	   All ports should have a working directory, as this is
		   necessary to store cookies and keep state.

     NO_WRKSUBDIR  The same functionality is obtained by setting
		   WRKDIST=${WRKDIR} .

     NOCLEANDEPENDS
		   Use CLEANDEPENDS instead.

     NOMANCOMPRESS
		   FreeBSD ships with compressed man pages, and uses this
		   variable to control that behavior.

     OBJMACHINE	   Starting with OpenBSD 3.3, setting WRKOBJDIR creates the
		   whole WRKDIR hierarchy under ${WRKOBJDIR}, so OBJMACHINE is
		   no longer useful.

     PACKAGES	   Base location for packages built, renamed
		   PKGREPOSITORYBASE.

     PATCH_SITES   PATCHFILES used to be retrieved from a separate site list.
		   For greater flexibility, all files are now retrieved from
		   MASTER_SITES, MASTER_SITES0, ..., MASTER_SITES9, using a
		   ':0' to ':9' extension to the file name, e.g.,

			 PATCH_FILES=foo.diff.gz
			 PATCH_SITES=ftp://ftp.zoinx.org/pub/

		   becomes

			 PATCH_FILES=foo.diff.gz:0
			 MASTER_SITES0=ftp://ftp.zoinx.org/pub/

     PERMIT_{DISTFILES,PACKAGE}_{CDROM,FTP}
		   Set to 'Yes' if package or distribution files can be al-
		   lowed on ftp sites or cdrom without legal issues. Set to
		   reason not to otherwise. PERMIT_* lines in the Makefile
		   should be preceded with a comment explaining details about
		   licensing and patents issues the port may have. Porters
		   must be very thorough in their checks. In case of doubt,
		   ask.

     PLIST_SRC	   From NetBSD. This is PLIST. OpenBSD does not give a specif-
		   ic name to the generated file. It is not recommended to try
		   to access them directly.

     PKGNAME	   Used to refer to the full package name, has been superseded
		   by FULLPKGNAME-foo, for SUBPACKAGE -foo . PKGNAME now holds
		   the package name, not taking multi-packages or flavours
		   into account. Most ports are not concerned by this change.

     PLIST_SUBST   From NetBSD and FreeBSD. Use SUBST_VARS instead. OpenBSD
		   does not allow general substitutions of the form VAR=value,
		   but uses only a list of variables instead. Most package
		   files gets transformed, instead of only the packing list.

     RESTRICTED	   Port has cryptographic issues. OpenBSD focuses on
		   PERMIT_PACKAGE_{FTP,CDROM} instead.

     SEPARATE_BUILD
		   On OpenBSD this could be used to have different WRKBUILD
		   and WRKSRC, in the hope the port didn't write to its source
		   directory. While this way to build is recommended by the
		   GCC SC, it has proven to be the source of much trouble, so
		   it got removed in the MirPorts Framework.

     USE_AUTOCONF  Use CONFIGURE_STYLE instead.

     USE_BZIP2	   The framework will automatically detect the presence of
		   .tar.bz2 files to extract.

     USE_COMPILER  Choose which compiler to use for the system. Possible
		   values are:

		   system  Default: use the system compiler mgcc, pgcc, or cc,
			   and pull _DEFCOPTS into the default CFLAGS.

		   pcc	   Override CC to pcc and CXX to false and pull
			   _DEFCOPTS_pcc into the default CFLAGS.

		   llvm	   Override CC to llvm-gcc and CXX to llvm-g++ and
			   pull _DEFCOPTS_llvm into the default CFLAGS.

     USE_IMAKE	   Use CONFIGURE_STYLE instead.

     USE_LZMA	   The framework will automatically detect the presence of
		   .tar.lzma files to extract.

     USE_XZ	   The framework will automatically detect the presence of
		   .tar.xz files to extract.

     USE_ZIP	   The framework will automatically detect the presence of
		   .zip files to extract.

     VARNAME	   Use mmake show=name instead of mmake show VARNAME=name.

OBSOLETE FILES
     ${FILESDIR}/md5
		Renamed to distinfo to match other BSD, and save directories.

     ${SCRIPTDIR}/{pre,do,post}-*
		Identical functionality can be obtained through a
		{pre,do,post}-* target, invoking the script manually if neces-
		sary.

     ${PKGDIR}/PLIST.noshared
		Use PFRAG.shared or PFRAG.no-shared instead. PLIST.noshared
		was too easy to forget when updating ports.

     ${PKGDIR}/PLIST.sed
		Use PLIST directly. Until revision 1.295, bsd.port.mk did not
		substitute variables in the packing list unless this special
		form was used.

     /usr/share/mk/bsd.port.mk
		Original location of bsd.port.mk. The current file lives under
		${PORTSDIR}/infrastructure/mk/bsd.port.mk, whereas
		/usr/share/mk/bsd.port.mk is just a stub.

     {scripts,files,patches}.${OPSYS}
		The OpenBSD ports tree focuses on robustness, not on being
		portable to other operating systems. In any case, portability
		should not need to depend on operating system dependent
		patches.

     /usr/local/etc
		Used by FreeBSD to marshall system configuration files. All
		OpenBSD system configuration files are located in /etc, or in
		a subdirectory of /etc.

THE FAKE FRAMEWORK
     The fake target is used to install the port in a private directory first,
     ready for packaging by the package target, so that the real installation
     will use the package.

     Essentially, fake invokes a real install process after tweaking a few
     variables.

     fake first creates a skeleton tree under ${WRKINST}, using the mtree(8)
     specification ${PORTSDIR}/infrastructure/db/fake.mtree.

     A pre-fake target may be used to complete that skeleton tree. For in-
     stance, a few ports may need supplementary stuff to be present (as it
     would be installed if the ports' dependencies were present).

     If {pre,do,post}-install overrides are present, they are used with some
     important changes: PREFIX is set to ${WRKINST}${PREFIX}, ${DESTDIRNAME}
     is set to ${WRKINST}, and TRUEPREFIX is set to ${PREFIX}. Essentially,
     old install targets work transparently, except for a need to change PRE-
     FIX to TRUEPREFIX for symbolic links and similar path lookups. Specific
     traditional post install work can be simply removed, as it will be taken
     care of by the package itself (for instance, ldconfig, or texinfo's
     install-info).

     If no do-install override is present, the port is installed using

       env -i ${MAKE_ENV}
       PREFIX=${WRKINST}${PREFIX} ${DESTDIRNAME}=${WRKINST} TRUEPREFIX=${PREFIX}
       ${MAKE_PROGRAM} ${FAKE_FLAGS} -f ${MAKE_FILE} ${FAKE_TARGET}

     Note that this does set both PREFIX and ${DESTDIRNAME}. If a port's
     Makefile both heeds ${DESTDIRNAME}, and references PREFIX explicitly,
     FAKE_FLAGS may rectify the problem by setting PREFIX=${PREFIX} (which
     will do the right thing, since ${PREFIX} is a make(1) construct which
     will not be seen by the shell).

     ${FAKE_FLAGS} is used to set variables on make(1) command line, which
     will override the port Makefile contents. Thus, a port that mentions
     DESTDIR= does not need any patch to work with fake.

FLAVOURS AND MULTI_PACKAGES
     Starting with OpenBSD 2.7, each port can generate several packages
     through two orthogonal mechanisms: FLAVOURS and MULTI_PACKAGES.

     If a port can be compiled with several options, set FLAVOURS to the list
     of possible options in the Makefile. When building the port, set
     FLAVOUR='option1 option2...' to build a specific flavour of the port. The
     Makefile should test the value of FLAVOUR as follows:

	   FLAVOUR?=
	   .if ${FLAVOUR:L:Moption1}
	   # what to do if option1
	   .endif
	   .if ${FLAVOUR:L:Moption2}
	   # what to do if option2
	   .endif

     bsd.port.mk takes care of a few details, such as generating a distinct
     work directory for each flavour, or adding a dash separated list of op-
     tions to the package name. The order in which FLAVOUR is specified does
     not matter: the generated list, called the canonical package extension,
     matches the ordering of FLAVOURS. Also, it is an error to specify an op-
     tion in FLAVOUR that does not appear in FLAVOURS.

     In recursive package building, flavours can be specified as a comma
     separated list after the package directory, e.g., SUBDIR+=vim,no_x11.

     Finally, packing information will use templates with the canonical pack-
     age extension if they are available: if FLAVOUR='option1 option2' and
     both COMMENT and COMMENT-option1-option2 are available,
     COMMENT-option1-option2 will be used.

     If a port can generate several useful packages, set MULTI_PACKAGES ac-
     cordingly. Each extension of a MULTI_PACKAGES name should start with a
     dash, so that they cannot be confused with FLAVOURS. In dependency check-
     ing and recursive builds, a subpackage can be specified after a comma,
     e.g., SUBDIR+=quake,-server. MULTI_PACKAGES only affects the actual pack-
     age building step (and the describe step, since a MULTI_PACKAGES port
     will produce several descriptions).

     If MULTI_PACKAGES is set, each element of MULTI_PACKAGES triggers a re-
     cursive mmake package, with SUBPACKAGE set to the right value, and PACK-
     AGING defined. For instance, if MULTI_PACKAGES=-lib -server, mmake pack-
     age will work as follows:

     +	 Run env SUBPACKAGE= PACKAGING= mmake package,
     +	 Run env SUBPACKAGE=-lib PACKAGING=-lib mmake package,
     +	 Run env SUBPACKAGE=-server PACKAGING=-server mmake package,

     The port's Makefile can test the value of SUBPACKAGE to specialize pro-
     cessing for all sub packages. Note that SUBPACKAGE can also be set for
     dependency checking, so be careful to also test PACKAGING: the build
     stage is shared among all subpackages, and tests often only make sense
     during the packaging stage. All packing information is derived from tem-
     plates with SUBPACKAGE appended. In the preceding example, the packing-
     list template for pkgname-foo must be in PLIST-foo.

THE GENERATION OF PACKING INFORMATION
     Starting after OpenBSD 2.7 (around revision 1.300 of bsd.port.mk), all
     packing information is generated from templates in ${PKGDIR}.

     +	 If not overridden by the user, determine which set of templates to
	 use, depending on the current SUBPACKAGE and FLAVOUR information. Set
	 ${PLIST}, ${DESCR}, ${COMMENT}, ${MESSAGE} accordingly.
     +	 Detect the existence of
	 ${PKGDIR}/{REQ,INSTALL,DEINSTALL}${SUBPACKAGE}. Modify PKG_ARGS ac-
	 cordingly, to use the generated files, and add dependencies to regen-
	 erate the files if the templates change.
     +	 Generate the actual DESCR, and if needed, MESSAGE, REQ, INSTALL,
	 DEINSTALL from the templates in ${DESCR}, ${MESSAGE},
	 ${PKGDIR}/REQ${SUBPACKAGE}, ${PKGDIR}/INSTALL${SUBPACKAGE},
	 ${PKGDIR}/DEINSTALL${SUBPACKAGE}, by substituting the variables in
	 ${SUBST_VARS}, and by substituting ${FLAVOURS} with the canonical
	 flavour extension for this port, e.g., if FLAVOURS=no_map gfx qt2, if
	 FLAVOUR=gfx no_map, this is '-no_map-gfx'.
     +	 Generate the actual PLIST from the template ${PLIST}, by inserting
	 shared/no-shared fragments, applying a possible user-supplied pipe-
	 line, merging other fragments, applying the same variable substitu-
	 tions as other packing information, and finally handling dynamic li-
	 braries macros.

     Note that ${COMMENT} is currently not substituted, to speed up describe
     generation.

     To avoid substitution, variables can be escaped as follows: $\{PREFIX}

     Constructs such as the line %%SHARED%% or !%%SHARED%% in the packing-list
     template trigger the inclusion of the ${PKGDIR}/PFRAG.shared${SUBPACKAGE}
     or ${PKGDIR}/PFRAG.no-shared${SUBPACKAGE}.

     Similarly, if FLAVOURS lists flav1, then the line %%flav1%% (resp.
     !%%flav1%%) will trigger the inclusion of
     ${PKGDIR}/PFRAG.flav1${SUBPACKAGE} (resp.
     ${PKGDIR}/PFRAG.no-flav1${SUBPACKAGE}) in the packing-list. Fragments
     that cannot be handled by these simple rules can always be specified in a
     custom SED_PLIST.

     The constructs DYNLIBDIR(directory) and NEWDYNLIBDIR(directory) should be
     used in ${PKGDIR}/PFRAG.shared${SUBPACKAGE} to register directories that
     hold dynamic libraries (see ldconfig(8)). NEWDYNLIBDIR is meant for
     directories that will go away when the package is deleted. If possible,
     it should not be used, because users also have to edit rc.conf to add the
     directory. It is usually better to also let libraries be visible as a
     link under ${LOCALBASE}. Having a separate directory is enough to trick
     ld(1) into grabbing the right version. Note that libraries used only for
     dlopen(3) do not need NEWDYNLIBDIR.

     The special update-plist target does a fairly good job of automatically
     generating PLIST and PFRAG.shared fragments.

     In MULTI_PACKAGES mode, there must be separate COMMENT, DESCR, and PLIST
     templates for each SUBPACKAGE (and optional distinct MESSAGE, REQ, IN-
     STALL, DEINSTALL files in a similar way). This contrasts with the FLA-
     VOURS situation, where all these files will automatically default to the
     non-flavour version if there is no flavour-specific file around.

SEE ALSO
     ftp(1), make(1) or mmake(1), pkg_add(1), library-specs(7),
     packages-specs(7)

HISTORY
     The ports mechanism originally came from FreeBSD. A lot of additions were
     taken from NetBSD over the years.

     When the file grew too large, it was cleaned up to restore some of its
     speed and remove a lot of bugs.

     FLAVOURS, MULTI_PACKAGES and FAKE are OpenBSD improvements. MirLibtool
     and the autogen configure style are MirPorts additions.

MirOS BSD #10-current	      September 29, 2010			    26
[top]

List of man pages available for MirBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net