Boost logo

Boost-Build :

From: Christopher Currie (Christopher_at_[hidden])
Date: 2004-03-09 12:59:15


Vladimir Prus wrote:

> Hi,
> as you probably remember, some time ago I've implemented proper library
> ordering for gcc. The only problem was that it increased running time by an
> order of magnitude for Jürgen.
>
> I've just comitted a couple of patches which fix that. Jürgen reports that now
> library ordering does not affect performance.
>
> Also, the library ordering is now done for "sun" toolset, since prior
> discussion revealed sun linker is sensitive to library order as well.
>
> I would appreciate if folks who had problems with library order previously try
> the current CVS state. It would be necessary to rebuilt bjam, also.

Sorry for the late review of this, had a few other projects to wrap up
before I could devote some time to this.

Current CVS state seems broken; unix.jam needs to "import order ;" for
it to work:

/home/ccurrie/src/build-tests/boost-build/kernel/class.jam:92: in new
rule object(order)@1.__init__ unknown in module class.
/home/ccurrie/src/build-tests/boost-build/tools/unix.jam:118: in load
/home/ccurrie/src/build-tests/boost-build/kernel/modules.jam:259: in import
/home/ccurrie/src/build-tests/boost-build/build/toolset.jam:259: in
toolset.inherit
/home/ccurrie/src/build-tests/boost-build/tools/sun.jam:15: in load
/home/ccurrie/src/build-tests/boost-build/kernel/modules.jam:259: in import
/home/ccurrie/src/build-tests/boost-build/build/toolset.jam:23: in using
project-root.jam:1: in modules.load
/home/ccurrie/src/build-tests/boost-build/build/project-roots.jam:160:
in object(project-root-object)@1.initialize
/home/ccurrie/src/build-tests/boost-build/build/project-roots.jam:52: in
project-roots.load
/home/ccurrie/src/build-tests/boost-build/build/project.jam:61: in
project.load
/home/ccurrie/src/build-tests/boost-build/build-system.jam:75: in load
/home/ccurrie/src/build-tests/boost-build/kernel/modules.jam:259: in import
/home/ccurrie/src/build-tests/boost-build/kernel/bootstrap.jam:120: in
boost-build
/home/ccurrie/src/build-tests/boost-build.jam:1: in module scope

Once this is corrected, there seems to be a problem using the new code
with prebuilt targets, as demonstrated in the following Jamfile:

# Jamfile

project build/foo ;

SOURCES = foo ;

lib libnsl : : <name>nsl ;
lib libsocket : : <name>socket : : <library>libnsl ;

exe foo : $(SOURCES).cpp libsocket ;

The usage-requirement isn't being processed properly, adding an extra
target to the link line:

$ bjam
...found 10 targets...
...updating 1 target...
sun.link bin/sun/debug/foo
ild: (bad file) argument file doesn't exist::<l./sun/debug>libnsl

"/opt/SUNWspro/bin/CC" -g -o "bin/sun/debug/foo"
"bin/sun/debug/foo.o" "<l./sun/debug>libnsl" -Bdynamic -lnsl -lsocket
-Bstatic -Bdynamic

...failed sun.link bin/sun/debug/foo...
...failed updating 1 target...

This scenario works with the latest milestone (m9?). I'll take a look at
what might be adding this, but any help will be appreciated.

Thanks,
Chirstopher

 


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