Boost logo

Boost-Build :

From: Rob Stewart (rob_stewart_lists_at_[hidden])
Date: 2005-09-15 22:58:59


Ralf W. Grosse-Kunstleve wrote:
> --- Reece Dunn <msclrhd_at_[hidden]> wrote:
>
> I work with 20+ platforms and often run multiple builds simultaneously from the
> same source tree.
> It is very important that the large generated files (.o, .so, etc) are stored
> on a local disk (as opposed to a NFS mounted disk). NFS writes are extremely
> slow. This leads to complicated bjam commands (BBv1, don't know about BBv2)
> with -sALL_LOCATE_TARGET=/some/local/disk.
> I much rather prefer to cd /some/local/disk once and then repeatedly issue a
> simple command, especially since it is then also very easy to find the
> generated files.

I have no idea whether or how this works with BB, but I'll
describe how it works in my employer's build system, in case it
provides some useful insights. The build system is based upon a
Perl script that processes simplified, declarative build
configuration files plus (g)make. With that system, one can put
defaults in one's home directory, in the root of the build tree,
and in each project within the build tree. There is a precedence
hierarchy among the files and values can be replaced or augmented
as needed.

The platform specifics are managed by declarations that specify
OS[/compiler[/build]], where OS can be, for example, SOLARIS,
LINUX, NT, XP, etc., plus the aliases UNIX and WIN. The idea is
that you can specify things for all Solaris builds, all *nix/GCC
builds, etc. The Perl script determines the platform on which the
build is running, but the compiler and build (default or release)
must be specified explicitly if the default isn't appropriate.

So, the option mentioned above is declared like:

[ALT_BUILD_LOCATION]
UNIX=/some/path/of/interest

That would set the intermediate and final output directories to
be under /some/path/of/interest, but only for Solaris and Linux
builds, regardless of compiler or build type.

One can put output from different compilers in different
locations, perhaps to conserve disk space:

[ALT_BUILD_LOCATION]
UNIX,GCC=/first/path
SOLARIS,SUNPRO6=/second/path

That means that a Solaris or Linux GCC build goes to /first/path,
whereas a SunPro6 build on Solaris goes to /second/path.

In case you're wondering, "[ALT_BUILD_LOCATION]" signals that the
following lines should be considered in building the value of the
"ALT_BUILD_LOCATION" make variable.

-- 
Rob
 

Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk