From: Vladimir Prus (ghost_at_[hidden])
Date: 2008-03-08 14:00:07
Steve M. Robbins wrote:
> I'm trying to decipher the following bit of tools/gcc.jam from the
> Boost 1.34.1 distribution, directory tools/build/v2:
> actions link.dll bind LIBRARIES
> "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)"
> "$(.IMPLIB-COMMAND)$(<)" -o "$(<[-1])"
> $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)"
> "$(LIBRARIES)" -l$(FINDLIBS-ST) -l$(FIN
> DLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
> In particular, I'd like to know:
> (a) what does $(<[-1]:D=) expand to, and
$(<) is the list of targets produced
$(<[-1]) is the last element of that list
$(<[-1]:D=) is that same, with directory name stripped
> (b) where is that computed.
in tools/virtual-target.jam, which eventually calls
the 'tag' rule in Jamroot, in Boost's root directory.
In 1.34.1 that file is called Jamfile.v2
> I've searched doc/userman.pdf without success. Did I miss it? Where
> should I be looking?
> If you've read this far: my goal is to remove the compiler-name
> decoration from the SONAME of the shared libraries. This decoration
> causes grief building packages for distributions like Debian. I do
> know about --layout=system, but that causes even more grief because
> the resulting libraries have *no* SONAME at all.
Hmm, this is highly strange. On SVN HEAD, when I do:
bjam --layout-system --with-program_options release stage
ghost_at_wind:~/Work/Boost/boost-svn$ readelf -d
Dynamic section at offset 0x366bc contains 27 entries:
Tag Type Name/Value
0x0000000e (SONAME) Library soname: [libboost_program_options-mt.so]
So, there's neither version, nor 'gcc' name. I don't see any big changes between
1.34.1, 1.35 branch and SVN HEAD.
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