This section describes small, localized changes to abuild. Some of changes described here are small changes that be accommodated by editing individual build or configuration files. Others are new, special-purpose features.
When abuild is invoked with no options, the effect is now as
if the --with-deps
or, equivalently,
--build=current
option had been specified. To
select the old behavior of building just the item without its
dependencies, use the newly added --no-deps
option.
The preferred way of passing variables to backend build systems
is now to specify VAR=value
on the command
line. Such definitions are passed to all backends. You should
use this rather than the --make
or (now
deprecated and mostly unsupported) --ant
option.
Abuild has a new online help system, described in Chapter 8, Help System. The targets rules-help and interface-help have been removed in favor of the new system.
Abuild now prints elapsed clock time before it exits.
When one or more build items fail, abuild now provides a summary that lists the failed build items.
It is now possible to declare local and non-recursive interface variables and also to declare and initialize interface variables in a single statement. For details, see Chapter 17, The Abuild Interface System.
The new Abuild.conf
key
name replaces this as
the way to provide the name of a build item. Note that you
should not go around replacing this with
name manually in existing
Abuild.conf
files as abuild will do this
automatically when you run abuild
--upgrade-trees (Appendix C, Upgrading from 1.0 to Version 1.1).
The new Abuild.conf
key
attributes can be used to assign
particular supported attributes to build items. For details,
see Section 15.1, “Abuild.conf
Syntax”.
It is possible to declare plugins to be global. Global plugins are discussed in Section 29.2, “Global Plugins”.
Build item dependencies and also newly added build tree dependencies can be declared optional; see Chapter 28, Optional Dependencies. To go along with this, child directories specified in child-dirs can also be made optional.
The ABUILD_FORCE_32BIT
environment variable is
no longer considered temporary, and the
ABUILD_FORCE_64BIT
has been added to encourage
abuild to generate code of the specified word size. It is
initially only supported for builds that use the
gcc compiler. A future version of abuild
may offer a better solution.
The msvc
toolchain can now be configured
to make it easier to support different runtime and management
flags, making it possible to build applications that statically
link the runtime environment or work with the .NET framework.
For details, see Section 18.2.2, “Options for the msvc
Compiler”.
Shared library version information is now partially supported when building DLL files. For details, see Chapter 21, Shared Libraries.
The behavior of when expansion of the build set is repeated
during application of --related-by-traits
has
changed and is now controlled by
--repeat-expansion
. For details, see Section 33.5, “Construction of the Build Set”.
The new argument --with-rdeps
can be used to
add reverse dependencies of all specified items to the build
set.
The new command line option --find
has been
added to print the location of build items or build trees.
The new command line options --ro-path
and
--rw-path
have been added to allow certain
parts of the build tree to be treated as read only. For
details, see Chapter 12, Explicit Read-Only and Read/Write Paths.
The new command line argument --compat-level
and environment variable ABUILD_COMPAT_LEVEL
have been added to specify abuild's compatibility level.
Abuild will not support any features that were deprecated at
a version equal to or older than the specified compatibility
level.
Some build sets will build more items in an upgraded forest
than they would have in version 1.0. For example, the build
set all
now really builds all items including
those in trees that your starting build item's tree doesn't
depend on. Also, the build set desc
will
really include all build items at or below the current
directory even if they are in trees that are not dependencies
of the current tree.
A new build set, deptrees
, has been added.
This build set includes all items in the current tree and its
tree dependencies. It essentially does what
all
did in version 1.0. These concepts are
described in Chapter 7, Multiple Build Trees. See also
Section B.5, “Redesigned Build Tree Structure”.
The clean target is no longer passed to the backend when abuild is invoked from an output directory. All clean targets have been removed from rules provided by abuild and from the examples.
Platform-specific dependencies on object-code
build items are now influenced platform selectors. To create a
dependency on the default platform of a given platform type
regardless of platform selectors (which was the old behavior),
specific
-platform=
in your dependency declaration.
type
:default
The list_platforms script, for plugins that add platforms, is now invoked with information about the native platform. See Section 29.3.2, “Adding Platforms”.
A new utility has been added to help with caching the results of code generators. For details, see Section 22.6, “Caching Generated Files”.
A new file, preplugin.mk
, can now contain
make code to be run by every selected plugin
before Abuild.mk
is
loaded. This can be used to provide initialization of certain
variables, among other purposes.
QTest support now automatically exports the
TC_SRCS
variable to the environment, so
individual Abuild.mk
files no longer need
to do so.
The verify-compiler command now accepts the
--cross
option to better support cross
compilers that are in the native platform type.
See Section 29.4, “Adding Toolchains” for a discussion.