|
Boost : |
From: Steve M. Robbins (steven.robbins_at_[hidden])
Date: 2002-03-02 15:32:48
On Mon, Jan 14, 2002 at 08:43:33PM -0500, David Abrahams wrote:
>
> ----- Original Message -----
> From: "Steve M. Robbins" <steven.robbins_at_[hidden]>
>
> > > > Suppose then that the next "foo" release changes the ABI. Then the
> > > > shared object must change SONAME. For example, it may be in a file
> > > > named "libfoo.so.2.0.0", with a SONAME of "libfoo.so.2". None of the
> > > > existing binaries using foo will be disturbed, but new programs can be
> > > > linked against the new ABI.
> > >
> > > I suppose these things are encoded into the library file? How?
> >
> > The details vary by platform. Hence the insane libtool shell script. In
> > the case of linux, it is done by specifying "-Wl,-soname -Wl,libfoo.so.1"
> > at the linking stage.
>
> Oh, an ld flag. That's easy enough to add. It doesn't seem to vary by
> platform, but by toolset, from the evidence above. In any case, there's no
> reason we can't do that (and in fact you can get it to happen for any of the
> boost libraries without changes to the build system).
OK, here's the modification I'd like to make for Debian's build.
What can I put in the place of "LIBRARY_NAME" to get the name of the
file being built --- something like $(1), but without the entire path.
I also need the boost version string. I am content to use
-sBOOST_VERSION=1.27 on the jam invocation, but if there is already a
variable that holds this value, I'd use it instead.
Thanks,
-Steve
Index: tools/build/gcc-tools.jam
===================================================================
RCS file: /home/steve/lib/cvs/debian/boost/tools/build/gcc-tools.jam,v
retrieving revision 1.1.1.2
diff -u -b -B -r1.1.1.2 gcc-tools.jam
--- tools/build/gcc-tools.jam 7 Feb 2002 15:34:18 -0000 1.1.1.2
+++ tools/build/gcc-tools.jam 2 Mar 2002 20:27:44 -0000
@@ -97,7 +97,7 @@
# for gcc, we repeat all libraries so that dependencies are always resolved
actions gcc-Link-action bind NEEDLIBS
{
- $(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH:T) -L$(STDLIBPATH:T) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -Wl,-rpath-link,.
+ $(GCC_BIN_DIRECTORY)g++ $(IMPLIB_COMMAND)$(<[2]) $(LINKFLAGS) -o "$(<[1])" -L$(LIBPATH:T) -L$(STDLIBPATH:T) "$(>)" "$(NEEDLIBS)" "$(NEEDLIBS)" -l$(FINDLIBS) -Wl,-rpath-link,. -Wl,-soname,LIBRARY_NAME.BOOST_VERSION
}
actions gcc-dllwrap bind NEEDLIBS
-- by Rocket to the Moon, by Airplane to the Rocket, by Taxi to the Airport, by Frontdoor to the Taxi, by throwing back the blanket and laying down the legs ... - They Might Be Giants
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk