This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
argp-standalone functionality from FreeBSD ports.
Argp is an interface for parsing unix-style argument vectors.
Argp provides features unavailable in the more commonly used getopt
interface. These features include automatically producing output in
response to the `--help' and `--version' options, as described in the
GNU coding standards. Using argp makes it less likely that
programmers will neglect to implement these additional options or keep
them up to date.
Argp also provides the ability to merge several independently defined
option parsers into one, mediating conflicts between them and making
the result appear seamless. A library can export an argp option
parser that user programs might employ in conjunction with their own
option parsers, resulting in less work for the user programs. Some
programs may use only argument parsers exported by libraries, thereby
achieving consistent and efficient option-parsing for abstractions
implemented by the libraries.
The header file <argp.h> should be included to use argp.