Some ports, particularly the p5- ports,
      need to change their pkg-plist depending on
      what options they are configured with (or version of
      perl, in the case of p5-
      ports).  To make this easy, any instances in
      pkg-plist of %%OSREL%%,
      %%PERL_VER%%, and
      %%PERL_VERSION%% will be substituted
      appropriately.  The value of %%OSREL%% is the
      numeric revision of the operating system (for example,
      4.9).  %%PERL_VERSION%%
      and %%PERL_VER%% is the full version number
      of perl (for example,
      5.8.9).  Several other
      %% related
      to port's documentation files are described in the relevant
	section.VARS%%
To make other substitutions, set
      PLIST_SUB with a list of
      
      pairs and instances of
      VAR=VALUE%% will be
      substituted with VAR%%VALUE in
      pkg-plist.
For instance, if a port installs many files
      in a version-specific subdirectory, use a placeholder for the
      version so that pkg-plist does not have to
      be regenerated every time the port is updated.  For
      example:
OCTAVE_VERSION=	${PORTREVISION}
PLIST_SUB=	OCTAVE_VERSION=${OCTAVE_VERSION}in the Makefile and use
      %%OCTAVE_VERSION%% wherever the version shows
      up in pkg-plist.  When
      the port is upgraded, it will not be necessary to edit dozens
      (or in some cases, hundreds) of lines in
      pkg-plist.
If files are installed conditionally on the options
      set in the port, the usual way of handling it is prefixing
      pkg-plist lines with a
      %%OPT%% for lines needed when the option is
      enabled, or %%NO_OPT%% when the option is
      disabled, and adding OPTIONS_SUB=yes to the
      Makefile.  See Section 5.13.3.1, “OPTIONS_SUB” for more information.
For instance, if there are files that are only installed
      when the X11 option is enabled, and
      Makefile has:
OPTIONS_DEFINE= X11 OPTIONS_SUB= yes
In pkg-plist, put
      %%X11%% in front of the lines only being
      installed when the option is enabled, like this :
%%X11%%bin/foo-gui
This substitution will be done between the
      pre-install and
      do-install targets, by reading from
      PLIST and writing to
      TMPPLIST (default:
      WRKDIR/.PLIST.mktmp).  So if the port
      builds PLIST on the fly, do so in or before
      pre-install.  Also, if the port
      needs to edit the resulting file, do so in
      post-install to a file named
      TMPPLIST.
Another way of modifying a port's packing list is based on
      setting the variables PLIST_FILES and
      PLIST_DIRS.  The value of each variable is
      regarded as a list of pathnames to write to
      TMPPLIST along with
      PLIST contents.  While names listed in
      PLIST_FILES and
      PLIST_DIRS are subject to
      %%
      substitution as described above, it is better to use the
      VAR%%${ directly.
      Except for that, names from
      VAR}PLIST_FILES will appear in the final packing
      list unchanged, while @dir
      will be prepended to names from
      PLIST_DIRS.  To take effect,
      PLIST_FILES and
      PLIST_DIRS must be set before
      TMPPLIST is written, that is, in
      pre-install or earlier.
From time to time, using OPTIONS_SUB
      is not enough.  In those cases, adding a specific
       to
      TAGPLIST_SUB
      inside the Makefile with a special
      value of @comment, makes package tools to
      ignore the line.  For instance, if some files are only installed
      when the X11 option is on and the
      architecture is i386:
.include <bsd.port.pre.mk>
.if ${PORT_OPTIONS:MX11} && ${ARCH} == "i386"
PLIST_SUB+=	X11I386=""
.else
PLIST_SUB+=	X11I386="@comment "
.endifAll FreeBSD documents are available for download at https://download.freebsd.org/ftp/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>.