BSD.PORT.ARCH.MK(5) - File Formats Manual #
BSD.PORT.ARCH.MK(5) - File Formats Manual
NAME #
bsd.port.arch.mk - ports tree Makefile fragment, concerned with arch issues
SYNOPSIS #
# Set up such as
MULTI_PACKAGES = -main -special
ONLY_FOR_ARCHS-special = i386
.include <bsd.port.arch.mk>
#some more lines such as
.if ${BUILD_PACKAGES:M-special}
CONFIGURE_ARGS += --enable-special
.endif
.include <bsd.port.mk>
DESCRIPTION #
bsd.port.arch.mk holds the logic used for arch-dependent builds in the ports tree. It is normally included as part of the larger bsd.port.mk(5), but it is also available separately for ports that require it.
multi-packages ports that need to remove some subpackages based on pseudo-flavors or architecture constraints.
ports that need to make explicit tests on arch-dependent constants.
bsd.port.arch.mk assumes the following variables are already defined:
MULTI_PACKAGES
FLAVOR
FLAVORS
PSEUDO_FLAVORS
NOT_FOR_ARCHS[-<sub>]
ONLY_FOR_ARCHS[-<sub>]
and optionally, if the default won’t be appropriate
IGNORE[-<sub>]
It will set up the following variables for use in the rest of the Makefile:
ARCH
ALL_ARCHS
APM_ARCHS
BE_ARCHS
CLANG_ARCHS
COMPILER_VERSION
CX11_ARCHS
DEBUGINFO_ARCHS
GCC3_ARCHS
GCC4_ARCHS
GCC49_ARCHS
GO_ARCHS
LE_ARCHS
LIBCXX
LLD_ARCHS
LLD_EMUL
LLVM_ARCHS
LP64_ARCHS
MONO_ARCHS
OCAML_NATIVE_ARCHS
OCAML_NATIVE_DYNLINK_ARCHS
PROPERTIES
RUST_ARCHS
IGNORE-<sub>
BUILD_PACKAGES
Most importantly,
BUILD_PACKAGES
will be correctly set up, taking
ONLY_FOR_ARCHS[-<sub>]
and
NOT_FOR_ARCHS[-<sub>]
limitations into account, as well as pseudo-flavors.
Note that thanks to the way make(1) variables are evaluated, a setup such as
ONLY_FOR_ARCHS-foo = ${LP64_ARCHS}
.include <bsd.port.arch.mk>
is perfectly admissible, since
ONLY_FOR_ARCHS-foo
will be used only after
LP64_ARCHS
is defined.
Also, you do not need to explicitly include bsd.port.arch.mk just to define
ONLY_FOR_ARCHS = ${LP64_ARCHS}
since
bsd.port.mk
does define arch constants before evaluating
ONLY_FOR_ARCHS
.
A more detailed description of each variable is available in
bsd.port.mk(5).
All the constant values
ARCH
, ALL_ARCHS
, COMPILER_VERSION
,
GCC3_ARCHS
, GCC4_ARCHS
, LP64_ARCHS
and
PROPERTIES
are also available from
MODULES
and from
${.CURDIR}/../Makefile.inc.
SEE ALSO #
HISTORY #
bsd.port.arch.mk was split from bsd.port.mk(5) in OpenBSD 5.1.
OpenBSD 7.5 - December 8, 2019