Boost logo

Boost-Build :

Subject: [Boost-build] boost python examples do not always build
From: Avi Bahra (avibahra_at_[hidden])
Date: 2010-04-23 06:28:56


Depending on the platform the boost python examples do not
always build.
On Linux (gcc/boost1.42) this is not an issue. If we compile
BOOST_ROOT/libs/python/example/std_pair_ext
...
This builds a shared library std_pair_ext.so

ldd bin/gcc-4.2.1/debug/std_pair_ext.so
        linux-gate.so.1 => (0xffffe000)
        libboost_python.so.1.42.0 =>
/var/tmp/ma0/boost/boost_1_42_0/bin.v2/libs/python/build/gcc-4.2.1/debug/libboost_python.so.1.42.0
(0xb7e7e000)
        libutil.so.1 => /lib/libutil.so.1 (0xb7e58000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7e40000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7e3c000)
        libstdc++.so.6 =>
/usr/local/apps/gcc/4.2.1/ILP32/lib/gcc/i686-pc-linux-gnu/4.2.1/libstdc++.so.6
(0xb7d4e000)
        libm.so.6 => /lib/libm.so.6 (0xb7d29000)
        libgcc_s.so.1 =>
/usr/local/apps/gcc/4.2.1/ILP32/lib/gcc/i686-pc-linux-gnu/4.2.1/libgcc_s.so.1
(0xb7d1d000)
        libc.so.6 => /lib/libc.so.6 (0xb7be9000)
        /lib/ld-linux.so.2 (0x80000000)

It can be seen that libutil, libpthread,libstdc , etc, get implicitly
linked.
Its not clear if this controlled by python-extension rule, or ldconfig
or bjam rules for building shared libs ?

However on HPUX(aCC/boost 1.42), the equivalent libs for
aCC compiler do not get linked, as a result the examples fail
during the import step, due to unresolved symbols.

For my app, currently I am using python-extension rule in my jamfile,
and hence suffer the same problems.
Is there a way for me change python-extension rule , so
that the additional std libs on HPUX get pulled in ?

If not, is there any way, hacky or not, of conditionally adding
the libs for HPUX only. i.e _equivalent_ to:

#ifdef LINUX
lib pthread ;
python-extension ecf_ext : [ glob src/*.cpp ]
            ...
             pthread
           : <variant>debug:<define>DEBUG
           ;
#endif

#ifdef HPUX
lib pthread ;
lib std_v2 ;
lib stream ;
lib Csup ;
lib unwind ;
lib m ;
python-extension ecf_ext : [ glob src/*.cpp ]
         .....
         pthread
         std_v2
         stream
         Csup
         unwind
         m
           : <variant>debug:<define>DEBUG
           ;
#endif

Any help appreciated.

  Best regards,
Ta,
   Avi



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