5.2. Object-Code Platforms

For target type object-code, platform identifiers
are of the form
os.cpu.toolset.compiler[.option],
described below. In all cases, each field of the platform
identifier must consist only of lower-case letters, numbers,
dash, or underscore. The fields of the platform identifier are
as follows:

os

A broad description of the operating system, such as
linux, solaris,
windows, cygwin, or
vxworks

cpu

A CPU type identifier such as ix86,
x86_64, ppc, ppc64, or
sparc.

toolset

A user-defined label for a collection of tools. This is a
convenience field to separate things like different versions
of compilers or runtime libraries. It can be set to any
string, at which point the user is responsible for ensuring
that it does in fact define a meaningful collection of tools.
By default, abuild will create a toolset name based on the
operating system distribution or similar factors. Examples
include rhel4 on a Red Hat Enterprise Linux 4
system, or deb5 on a Debian GNU/Linux 5.x system.
[12]

compiler

An identifier for the compiler C/C++ compiler toolchain to be
used. Abuild has built-in support for gcc on UNIX systems
and for Microsoft Visual C++ and mingw on Windows systems.
Users can provide their own compiler toolchains in addition to
these. The mechanism for adding new compilers is described in
Section 29.3, “Adding Platform Types and Platforms”.

option

An optional field that is used to pass additional information
to the GNU Make code that
implements support for the compiler. Typical uses for options
would be to define different debugging, profiling, or
optimization levels.

All of the fields of the platform identifier are made available
in separate variables within the interface parsing system. In
addition, for object-code build items, the make
variable $(CCXX_TOOLCHAIN) is set to the value
of the compiler field. Here are some example platform
identifiers:

linux.ppc64.proj1default.gcc

linux.ppc64.proj1default.gcc.release

linux.ppc64.proj1default.gcc.debug

linux.x86.fc5.gcc

linux.x86.fc5.gcc.release

linux.x86.fc5.gcc.debug

windows.ix86.nt5.msvc

windows.ix86.cygwin-nt5.mingw

vxworks.pc604.windriver.vxgcc

[12]
At present, it is possible to add new toolsets easily with
plugins, but the only way to override
the built-in default toolset would be to edit
private/bin/get_native_platform_data,
the perl script abuild uses to determine this information
at startup. This may be addressed in a future version of
abuild.