Subject: Re: C++, libtool and a.out
To: Nick Hudson <nick@nthcliff.demon.co.uk>
From: Todd Vierling <tv@pobox.com>
List: tech-pkg
Date: 06/21/2000 23:11:11
On Wed, 21 Jun 2000, Nick Hudson wrote:
: OK so pkglibtool supported C++ constructors and destructors on a.out
: systems by introducing the cplusplus flag which would link in
: /usr/lib/c++rt0.o if specified. I would to apply the attached patch
: so that libtool 1.3.5 will also support C++ and a.out.
Be careful hardcoding /usr/lib here. Think about cross compilation.
The best solution would be to check whether or not "cc -shared" works
properly (a fix went in between 1.3 and 1.4), and use that. It will link in
c++rt0.o automatically, from the "normal library path". If we want to add
this for 1.3-and-before systems (that do not have a specially updated
compiler), it can then be done manually, provided "cc -shared" does not work
properly.
How to check? Use the following:
if $CC -dumpspecs | grep 'c++rt0' >/dev/null; then
# use "cc -shared" for shared objects
else
# use "ld -Bshareable" and manually tack on c++rt0
fi
Note that this check is only necessary for a.out. For ELF, "cc -shared" is
already usable. Also note that we cannot use "grep -q" in the cross
compilation case; hence "grep >/dev/null".
--
-- Todd Vierling (tv@pobox.com)