From: Vladimir Prus (ghost_at_[hidden])
Date: 2002-10-14 11:33:59
David Abrahams wrote:
>>>>The actual meaning is: "when properties are empty or have only
>>>><toolset> value, then use default-build to find the set of
>>>Then it should say that... except that default-build isn't part of
>>>the abstract-target specification, and is /only/ used in the
>>>derived classes. It would be good to clear that up.
>>Maybe, "when.... then the target is build with one or several "default"
> Grammatically, speaking, this should be:
> ``when... then the target is built with one or more "default"''
> But I don't understand what is supposed to go where ``...'' shows up.
>>property sets. Each of them includes the <toolset> feature's value, if
>>specifed. Those defaults are defined by derived classes."?
> Nor do I understand the meaning of the above. Maybe you could send me
> a message containing the entire proposed comment?
I'm bad at writing comments, it seems, either in full or in parts :-)
I'll try to explain semantic verbosely.
If you call 'generate' with full property set, in means to build it with
those properties. For example, this happens when there's a list of
properties in the command line, and the abstract target is directly
If you call 'generate' with a property set containing only <toolset>, it
means to build it using the given toolset, and using some default set of
property sets. For example, when called with "<toolset>gcc", a target
with default build of "debug release" will build itself with two
<toolset>gcc <variant>debug ...
<toolset>gcc <variant>release ...
Why special treatment for toolset? In V1 default build is done using all
available toolsets. In other words, a target with default build "debug"
can be build with <toolset>gcc and <toolset>borland. Currently, main
target's generate simply calls 'build-request.expand' with the value of
it's default build attribute. And 'build-request.expand' can't return
property sets with different values of <toolset>, unless explicit list
of <toolset> properties is passed to it. I thought this handling of
predefined set of toolsets in better done at the high level, not inside
However, do we really need such semantics? In general, we don't build
two variants unless explicitly asked. Maybe, we can build with "default"
toolset, unless asked otherwise? IE, on my Linux box, "bjam" will build
with gcc, and msvc will be used for someone else?
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