Boost logo

Boost-Build :

From: Michael Stevens (Michael.Stevens_at_[hidden])
Date: 2003-10-28 13:47:27

Dear All,

I have been looking at ways to improve the current way that toolset are
versioned in BBv2. I have a lot of different compilers versions so this
is important to me.

Firstly all the toolset definition have to work around the 'unspecified'
default values problem. They all do this in a variety of complex ways.

Looking at the way toolsets have to handle this I think things could be
significantly simplified if toolset versions were enforced. That is to
say toolsets always were defined with the following init signiture.

rule init ( version : name ? : path ? )

For this to work the current way toolset build requests are invoked
would have to change. Looking at the current code there is already
special handling. The 'unspecifed' toolset is invoked specifically at
line 157 of build-system.jam
for local t in $(targets)
local g = [ $(t).generate [ property-set.empty ] ] ;
virtual-targets += $(g[2-]) ;

It would be necessary to change this so the toolset is invoked with the
first (or only) specified version. Sadly at this point in the code the
trail goes cold for me. I'm unable to find where the 'unversioned'
properties are generated by the special value 'property-set.empty'.

Enforcing versions would have a further significant side effect. With
some toolsets it is currently possible to invoke the first definition
both using the default 'unspecified' version and with a specified version.
Both invocations result in the same code (same property-set) but their
target directories are named differently. This has often got me into

Hope this all make sense,


Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at