When abuild builds an item, it creates an output directory
under that item's directory for every platform on which that item
is built. The output directory is of the form
abuild-
.
Abuild itself and all abuild-supplied rules create files only
inside of abuild output directories.
[13]
platform-name
When abuild invokes make, it always does so from an output directory. This is true even for platform-independent build items. In this way, even temporary files created by compilers or other build systems will not appear in the build item's local directory. This makes it possible to build a specific item for multiple platforms in parallel without having to be concerned about the separate builds overwriting each other's files.
When abuild builds items using the Groovy backend (and also
using the deprecated xml-based ant backend), it performs those
builds inside a single Java virtual machine instance. As such,
it does not change its working directory to the output directory.
(Java does not support changing current directories, and besides,
there could be multiple builds going on simultaneously in
different threads.) However, each Java-based build has its own
private ant Project
whose
basedir
property is set to the output
directory. As such, all well-behaved ant tasks will only create
files in the output directory.
[13]
Abuild considers any directory whose name starts with
abuild-
and which contains a file named
.abuild
to be an output directory.