Boost logo

Boost-Build :

Subject: [Boost-build] [bjam help] trouble with conditions and alternatives
From: Blackham, Raymond (raymond.blackham_at_[hidden])
Date: 2012-05-01 13:10:31


In the boost build V2 documentation, it states

lib demangler : dummy_demangler.cpp ; # alternative 1
lib demangler : demangler_gcc.cpp : <toolset>gcc ; # alternative 2
lib demangler : demangler_msvc.cpp : <toolset>msvc ; # alternative 3

In the example above, whenever network is built with <link>shared, <define>NEWORK_LIB_SHARED will be in its properties,
too. Also, whenever its release variant is built, <define>EXTRA_FAST will appear in its properties.

I have a rule I would like bjam to call conditionally to build an imported library that uses SCONS, and have created a jamfile.jam for it :

project my_project : requirements <link>static ;

rule build_scons ( cmplr : dbgflag )
{
    . . . (call the imported library's SCONS makefile with $(cmplr) and $(dbgflag))
}

lib my_project : [ build_scons gcc : 0 ] : <toolset>gcc,<variant>release ;
lib my_project : [ build_scons gcc : 1 ] : <toolset>gcc,<variant>debug ;
lib my_project : [ build_scons icc : 0 ] : <toolset>intel,<variant>release ;
lib my_project : [ build_scons icc : 1 ] : <toolset>intel,<variant>debug ;

I have also added the following to the parent project's jamroot.jam file:

build-project my_project ;

With a build command in the parent directory of

bjam gcc debug

I expected only the lib with <toolset>gcc,<variant>debug to be built. But bjam builds all 4 versions of this lib, in the order listed by the 4 lib statements. What do I need to do to get the conditional selection for the lib to work? There is something basic I must have missed in the documentation.

                Ray Blackham



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