libtool/mail/patches
1999-07-29 23:40:57 +00:00

105 lines
4.4 KiB
Plaintext

Date: Thu, 29 Jul 1999 14:56:40 +0200 (CEST)
From: Peter Breitenlohner <peb@mppmu.mpg.de>
Reply-To: Peter Breitenlohner <peb@mppmu.mpg.de>
To: bug-libtool@gnu.org
Subject: a suggestion for libtool (1.3.2)
Message-ID: <Pine.LNX.3.95.990729134449.8802F-200000@pcl163a.mppmu.mpg.de>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="1803957763-1087116776-933253000=:8802"
Resent-Message-ID: <"2rP1j3.0.z77.p-4et"@mescaline.gnu.org>
Resent-From: bug-libtool@gnu.org
X-Mailing-List: <bug-libtool@gnu.org> archive/latest/952
X-Loop: bug-libtool@gnu.org
Precedence: list
Resent-Sender: bug-libtool-request@gnu.org
Resent-Bcc:
X-UIDL: e9e213a8e1d8afc0286b4a4305ab5a36
Status: RO
X-Status: A
Content-Length: 4085
Lines: 83
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.
--1803957763-1087116776-933253000=:8802
Content-Type: TEXT/PLAIN; charset=US-ASCII
With our setup I found it necessary to apply the following patch to ltmain.sh
(1.3.2) although it should, of course, be applied to ltmain.in instead.
Let me explain the functionality of this modification and its necessity
arising from our situation.
1.
Gcc (or rather the ld invoked by gcc) searches for libraries in more
directories than those specified with "-L" or the standard ones /lib,
/usr/lib, and /usr/local/lib. Most notably there is /usr/<target>/lib or
/usr/local/<target>/lib, depending on where gcc was installed.
According to the general libtool philosophy, when
gcc foo.o bar.o -ltest -o foo
succeeds in locating libtest.so (or libtest.a) in /usr/<target>/lib, then
libtool --mode=link gcc bar.lo -ltest -rpath <whatever> -o bar.la
should equally succeed in locating /usr/<target>/lib/libtest.so.
Note that with different incarnations of gcc for different <target>s one
certainly wouldn't want to add "-L/usr/<target>/lib" to the command line.
The proposed modification uses "gcc -print-file-name=libtest.so" to locate
the dependency libraries.
2.
My actual situation is as follows:
We have a lot of users on our Linux systems (neither RedHat, nor SuSe, nor
Debian, nor ...) and some groups `absolutely need libc5' whereas others
`absolutely need glibc'. In order to allow for coexistence of libc (5.4.38
or so) and glibc (first 2.0.6, now 2.1.1) for quite some time as well as for a
really smooth transition, gcc behaves as either "gcc -b i486-pc-linux-gnulibc1"
or "gcc -b i486-pc-linux-gnu", depending on the value of an environment
variable. Actually /usr/bin/gcc is a symbolic link to a small shell script
that invokes either /usr/i486-pc-linux-gnulibc1/bin/gcc or
/usr/i486-pc-linux-gnu/bin/gcc and similarly for the binutils;
consequently, there are libc5 and glibc vesions of shared libraries, e.g.
/usr/i486-pc-linux-gnulibc1/lib/libncurses.so and
/usr/i486-pc-linux-gnu/lib/libncurses.so etc.
All that worked really nice, until I recently tried to compile
w3c-libwww-5.2.8 that uses libtool. First I had to replace their libtool-1.2e
(which couldn't resolve shared library dependencies at all) by version 1.3.2
in order to locate libdl.so etc. (in /lib), but still had problems to locate
libz.so (in /usr/<target>/lib) until I manufactured the patch.
regards
Peter Breitenlohner <peb@mppmu.mpg.de>
--1803957763-1087116776-933253000=:8802
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="libtool-1.3.2-diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.990729145640.8802G@pcl163a.mppmu.mpg.de>
Content-Description:
diff -ur libtool-1.3.2.orig/ltmain.sh libtool-1.3.2/ltmain.sh
--- libtool-1.3.2.orig/ltmain.sh Wed May 26 02:31:24 1999
+++ libtool-1.3.2/ltmain.sh Tue Jul 27 09:43:49 1999
@@ -1902,7 +1902,15 @@
# If $name is empty we are operating on a -L argument.
if test "$name" != "" ; then
libname=`eval \\$echo \"$libname_spec\"`
- for i in $lib_search_path; do
+ # First try to locate the library through gcc
+ gcc_path=
+ if test "$CC" = "gcc" ; then
+ eval library_names=\"$library_names_spec\"
+ set dummy $library_names
+ eval potlib="\$$#"
+ gcc_path="`gcc -print-file-name=$potlib | sed 's%/*'$potlib'$%%'`"
+ fi
+ for i in $gcc_path $lib_search_path; do
potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
for potent_lib in $potential_libs; do
# Follow soft links.
--1803957763-1087116776-933253000=:8802--