FreeBSD runs on many more processor architectures than just the well-known x86-based ones. Some ports have constraints which are particular to one or more of these architectures.
For the list of supported architectures, run:
cd ${SRCDIR}; make targets
The values are shown in the form
TARGET
/TARGET_ARCH
.
The ports read-only makevar ARCH
is set
based on the value of TARGET_ARCH
.
Port Makefile
s should test the value
of this Makevar.
Ports that do not have any architecture-dependent files
or requirements are identified by setting
NO_ARCH=yes
.
NO_ARCH
is meant to indicate
that there is no need to build a package for each of the
supported architectures. The goal is to reduce the amount
of resources spent on building and distributing the packages
such as network bandwidth and disk space on mirrors
and on distribution media. Currently, however,
our package infrastructure (e.g., package managers, mirrors,
and package builders) is not set up to fully benefit from
NO_ARCH
.
To mark a port as IGNORE
d
only on certain architectures, there are two other
convenience variables that will automatically set
IGNORE
:
ONLY_FOR_ARCHS
and
NOT_FOR_ARCHS
. Examples:
ONLY_FOR_ARCHS= i386 amd64
NOT_FOR_ARCHS= ia64 sparc64
A custom IGNORE
message can be
set using ONLY_FOR_ARCHS_REASON
and
NOT_FOR_ARCHS_REASON
. Per
architecture entries are possible with
ONLY_FOR_ARCHS_REASON_
and
ARCH
NOT_FOR_ARCHS_REASON_
.ARCH
If a port fetches i386 binaries and installs them,
set IA32_BINARY_PORT
. If this variable
is set, /usr/lib32
must be present
for IA32 versions of libraries and the kernel must support
IA32 compatibility. If one of these two
dependencies is not satisfied, IGNORE
will be set automatically.
Some ports attempt to tune themselves to the
exact machine they are being built on by specifying
-march=native
to the compiler.
This should be avoided: either list it under an
off-by-default option, or delete it entirely.
Otherwise, the default package produced by the
build cluster might not run on every single machine
of that ARCH
.
All 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>.