Boost logo

Boost-Build :

Subject: Re: [Boost-build] Compile boost libs each one with different version number
From: Christina Larocca (christina.larocca_at_[hidden])
Date: 2010-05-26 04:05:31


Hello again:

This is the whole function:

# This rule is called by Boost.Build to determine the name of target. We use
it
# to encode the build variant, compiler name and boost version in the target
# name.
#
rule tag ( name : type ? : property-set )
{
    if $(type) in STATIC_LIB SHARED_LIB IMPORT_LIB
    {
        if $(layout) = versioned
        {
            local result = [ common.format-name
                <base> <toolset> <threading> <runtime> -$(BOOST_VERSION_TAG)
                -$(BUILD_ID)
                : $(name) : $(type) : $(property-set) ] ;

            # Optionally add version suffix. On NT, library with version
suffix
            # will not be recognized by linkers. On CYGWIN, we get strage
            # duplicate symbol errors when library is generated with version
            # suffix. On OSX, version suffix is not needed -- the linker
expects
            # the libFoo.1.2.3.dylib format. AIX linkers do not accept
version
            # suffixes either. Pgi compilers can not accept library with
version
            # suffix.
            if $(type) = SHARED_LIB &&
              ( ! ( [ $(property-set).get <target-os> ] in windows cygwin
darwin aix ) &&
                ! ( [ $(property-set).get <toolset> ] in pgi ) )
            {
                result = $(result).$(BOOST_VERSION) ;
            }

            return $(result) ;
        }
        else
        {
        ECHO name: $(name) type: $(type) layout: $(layout) ;
           if $(name) = boost_math_c99
                {
                local result = [ common.format-name
                <base> -$(BUILD_ID)
                <base> -$(BUILD_ID)
                <base> -$(BUILD_ID)
                : $(name) : $(type) : $(property-set) ] ;
                }
           else
                {
                local result = [ common.format-name
                <base> -$(BUILD_ID)
                <base> -$(BUILD_ID))
                : $(name) : $(type) : $(property-set) ] ;
                }
            # Optionally add version suffix. On NT, library with version
suffix
            # will not be recognized by linkers. On CYGWIN, we get strage
            # duplicate symbol errors when library is generated with version
            # suffix. On OSX, version suffix is not needed -- the linker
expects
            # the libFoo.1.2.3.dylib format. AIX linkers do not accept
version
            # suffixes either. Pgi compilers can not accept library with
version
            # suffix.
            if $(type) = SHARED_LIB &&
              ( ! ( [ $(property-set).get <target-os> ] in windows cygwin
darwin aix ) &&
                ! ( [ $(property-set).get <toolset> ] in pgi ) )
            {
                result = $(result).$(BOOST_VERSION) ;
            }

            return $(result) ;
        }
    }
}

With the ECHO command I get log lines as:

user_at_comp:~/compilations/Boost/source2/boost_1_39_0) ./bjam --v2
--layout=system

Building C++ Boost.

After the build, the headers will be located at

    /remote/mw/dsdeldev/compilations/Boost/source2/boost_1_39_0

The libraries will be located at

    /remote/mw/dsdeldev/compilations/Boost/source2/boost_1_39_0/stage/lib

Use 'bjam install --prefix=<path>' if you wish to install headers and
libraries to a different location and remove the source tree.

name: boost_date_time type: SHARED_LIB layout: system
name: boost_system type: SHARED_LIB layout: system
name: boost_filesystem type: SHARED_LIB layout: system
warning: Graph library does not contain optional GraphML reader.
note: to enable GraphML support, set EXPAT_INCLUDE and EXPAT_LIBPATH to the
note: directories containing the Expat headers and libraries, respectively.
name: boost_graph type: SHARED_LIB layout: system
name: boost_iostreams type: SHARED_LIB layout: system
name: boost_math_tr1 type: SHARED_LIB layout: system
name: boost_math_tr1f type: SHARED_LIB layout: system
name: boost_math_tr1l type: SHARED_LIB layout: system
name: boost_math_c99 type: SHARED_LIB layout: system
name: boost_math_c99f type: SHARED_LIB layout: system
name: boost_math_c99l type: SHARED_LIB layout: system
warning: skipping optional Message Passing Interface (MPI) library.
note: to enable MPI support, add "using mpi ;" to user-config.jam.
note: to suppress this message, pass "--without-mpi" to bjam.
note: otherwise, you can safely ignore this message.
name: boost_program_options type: SHARED_LIB layout: system
name: boost_python type: SHARED_LIB layout: system
warning: Building Boost.Regex with the optional Unicode/ICU support
disabled.
note: Please refer to the Boost.Regex documentation for more information
note: this is a strictly optional feature.
name: boost_regex type: SHARED_LIB layout: system
name: boost_serialization type: SHARED_LIB layout: system
name: boost_wserialization type: SHARED_LIB layout: system
name: boost_signals type: SHARED_LIB layout: system
name: boost_prg_exec_monitor type: SHARED_LIB layout: system
name: boost_test_exec_monitor type: STATIC_LIB layout: system
name: boost_unit_test_framework type: SHARED_LIB layout: system
name: boost_thread type: SHARED_LIB layout: system
name: boost_wave type: SHARED_LIB layout: system
name: boost_date_time type: STATIC_LIB layout: system
name: boost_system type: STATIC_LIB layout: system
name: boost_filesystem type: STATIC_LIB layout: system
name: boost_graph type: STATIC_LIB layout: system
name: boost_iostreams type: STATIC_LIB layout: system
name: boost_math_tr1 type: STATIC_LIB layout: system
name: boost_math_tr1f type: STATIC_LIB layout: system
name: boost_math_tr1l type: STATIC_LIB layout: system
name: boost_math_c99 type: STATIC_LIB layout: system
name: boost_math_c99f type: STATIC_LIB layout: system
name: boost_math_c99l type: STATIC_LIB layout: system
name: boost_program_options type: STATIC_LIB layout: system
name: boost_python type: STATIC_LIB layout: system
name: boost_regex type: STATIC_LIB layout: system
name: boost_serialization type: STATIC_LIB layout: system
name: boost_wserialization type: STATIC_LIB layout: system
name: boost_signals type: STATIC_LIB layout: system
name: boost_prg_exec_monitor type: STATIC_LIB layout: system
name: boost_test_exec_monitor type: STATIC_LIB layout: system
name: boost_unit_test_framework type: STATIC_LIB layout: system
name: boost_thread type: STATIC_LIB layout: system
name: boost_wave type: STATIC_LIB layout: system
name: boost_date_time type: SHARED_LIB layout: system
name: boost_system type: SHARED_LIB layout: system
name: boost_filesystem type: SHARED_LIB layout: system
name: boost_graph type: SHARED_LIB layout: system
name: boost_iostreams type: SHARED_LIB layout: system
name: boost_math_tr1 type: SHARED_LIB layout: system
name: boost_math_tr1f type: SHARED_LIB layout: system
name: boost_math_tr1l type: SHARED_LIB layout: system
name: boost_math_c99 type: SHARED_LIB layout: system
name: boost_math_c99f type: SHARED_LIB layout: system
name: boost_math_c99l type: SHARED_LIB layout: system
name: boost_program_options type: SHARED_LIB layout: system
name: boost_python type: SHARED_LIB layout: system
name: boost_regex type: SHARED_LIB layout: system
name: boost_serialization type: SHARED_LIB layout: system
name: boost_wserialization type: SHARED_LIB layout: system
name: boost_signals type: SHARED_LIB layout: system
name: boost_prg_exec_monitor type: SHARED_LIB layout: system
name: boost_test_exec_monitor type: STATIC_LIB layout: system
name: boost_unit_test_framework type: SHARED_LIB layout: system
name: boost_thread type: SHARED_LIB layout: system
name: boost_wave type: SHARED_LIB layout: system
...patience...
...patience...
...patience...
...found 5977 targets...
...updating 930 targets...
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/cbrtf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/copysignf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/erfcf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/erff.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/expm1f.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/fmaxf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/fminf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/fpclassifyf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/hypotf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/lgammaf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/llroundf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/log1pf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/lroundf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/nextafterf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/nexttowardf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/roundf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/tgammaf.o
gcc.compile.c++
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/truncf.o
gcc.link.dll
bin.v2/libs/math/build/gcc-3.4.2/release/threading-multi/libboost_math_c99f.so
common.copy stage/lib/libboost_math_c99f.so

I hope this helps

Regards
Christina.

2010/5/25 Steven Watanabe <watanabesj_at_[hidden]>

> AMDG
>
>
> Christina Larocca wrote:
>
>> Hello, sorry for the double else, it was only a copy error.
>>
>> I've tried with:
>>
>> if $(name) = boost_math_c99
>>
>>
>
> This ought to work.
>
>
> if <name>boost_math_c99
>>
>>
>
> This test should always be true. It is
> parsed as
>
>
> if "<name>boost_math_c99"
>
> and tests whether "<name>boost_math_c99" is
> non-empty.
>
>
> if $(base) = boost_math_c99
>>
>>
>
> base is not a variable that's in scope.
>
>
> if <name>boost_math_c99
>>
>>
>
> This test should always succeed.
>
>
> but nothing works. The if blocks are skipped.
>>
>>
>
> Try adding
>
> ECHO name: $(name) type: $(type) layout: $(layout) ;
>
> at the top of the tag rule.
>
> Also, can you post the whole function? The
> layout=system block doesn't appear to get
> executed at all.
>
>
> In Christ,
> Steven Watanabe
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost-build
>



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