Added by Kevin Thacker almost 7 years ago

I've moved over to nextgen because I needed the toolchain support.

c.linkprebuiltlibraries has changed. It doesn't take a config/platform anymore. I was using this quite extensively.


c.linkprebuiltlibraries LIB : bleh : debug ;
c.linkprebuiltlibraries LIB : bleh : release ;

c.linkprebuiltlibraries LIB : bleh : : pc ;


Replies (2)

RE: nextgen - Added by Kevin Thacker almost 7 years ago

I needed the toolchain support for ps3, and the extra support for ios.

so these lines and c.includedirectories etc are used through out, with different values for different platforms and sometimes different values for debug/release config.
we have 1 jamfile per library, and this sets the appropiate libs as necessary for each platform.

how can this be done now in nextgen?

RE: nextgen - Added by Joshua Jensen almost 7 years ago

The removal of the config and platform settings happened when the toolchain specifications supported more than just configuration and platform. You can actually specify any set of user-defined toolchain specifications.

For instance, the following are example toolchain specs from the bin/modules/c-compilers/configs directory:

  • vs2010-win32-debug-x86.jam - Assigns: C.COMPILER=vs2010, C.PLATFORM=win32, C.CONFIG=debug, C.ARCHITECTURE=x86
  • win32-debug.jam - Assigns: C.PLATFORM=win32, C.CONFIG=debug

So, in the old format, C.LinkPrebuiltLibraries took an optional configuration and an optional platform. If the optional parameter was not specified, then the prebuilt libraries specified for linking were assigned to everything.

You can achieve a similar result with either if statements or switch/case statements:

switch $(C.CONFIG) {
    case debug : C.LinkPrebuiltLibraries LIB : bleh-debug ;
    case release : C.LinkPrebuiltLibraries LIB : bleh-release ;

Or perhaps:

if $(PLATFORM) = pc {
    C.LinkPrebuiltLibraries LIB : bleh-pc ;


I am open to suggestions as to how this can work better.