libtool-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Saving the -R flags in the .la file?


From: Ralf Wildenhues
Subject: Re: Saving the -R flags in the .la file?
Date: Thu, 8 Nov 2007 22:38:30 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

Hello Benoit,

* Benoit SIGOURE wrote on Tue, Nov 06, 2007 at 11:58:48AM CET:
> I'm wondering why libtool doesn't save the -R flags in the .la file, along 
> with the -L and -l?

Hmm, it does.  Maybe what you're missing is that it also apply them to
programs linked against those .la files?

I've applied the patch below to keep me from thinking about this again
next time it is asked.

FWIW, probably the non-propagation to programs is a bug, but also likely
it was done on purpose for some specific case, I don't remember.
Note that testing whether the program gets the run path is not as easy
as it looks like (it basically shares most of the error-prone-ness with
hardcode.test).

Cheers,
Ralf

2007-11-08  Ralf Wildenhues  <address@hidden>

        * tests/runpath-in-lalib.at: New test.
        * Makefile.am: Update.
        Report by Benoit SIGOURE <address@hidden>.

Index: Makefile.am
===================================================================
RCS file: /cvsroot/libtool/libtool/Makefile.am,v
retrieving revision 1.225
diff -u -r1.225 Makefile.am
--- Makefile.am 16 Aug 2007 18:18:39 -0000      1.225
+++ Makefile.am 7 Nov 2007 18:25:35 -0000
@@ -437,6 +437,7 @@
                  tests/link-order2.at \
                  tests/fail.at \
                  tests/shlibpath.at \
+                 tests/runpath-in-lalib.at \
                  tests/static.at \
                  tests/export.at \
                  tests/search-path.at \
--- /dev/null   2006-05-22 13:44:12.000000000 +0200
+++ tests/runpath-in-lalib.at   2007-11-07 19:23:54.000000000 +0100
@@ -0,0 +1,65 @@
+# runpath-in-lalib.at --                         -*- Autotest -*-
+
+#   Copyright (C) 2007 Free Software Foundation, Inc.
+#   Written by Ralf Wildenhues, 2007
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+####
+
+AT_SETUP([Runpath in libtool library files])
+AT_KEYWORDS([libtool])
+
+AT_DATA([a.c],
+[[int a () { return 0; }
+]])
+AT_DATA([b.c],
+[[extern int a ();
+int b () { return a (); }
+]])
+AT_DATA([m.c],
+[[extern int b ();
+int main () { return b (); }
+]])
+
+instdir=`pwd`/inst
+libdir=$instdir/lib
+bindir=$instdir/bin
+addrunpath=`pwd`/foobar
+
+mkdir $instdir $libdir $bindir
+
+for file in a.c b.c m.c; do
+  $LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c $file
+done
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la a.lo -rpath 
$libdir -R$addrunpath],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libb.la b.lo -rpath 
$libdir liba.la],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o m m.$OBJEXT libb.la],
+        [], [ignore], [ignore])
+AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir/liba.la], [], [ignore], 
[ignore])
+AT_CHECK([$LIBTOOL --mode=install cp libb.la $libdir/libb.la], [], [ignore], 
[ignore])
+AT_CHECK([$LIBTOOL --mode=install cp m $bindir/m], [], [ignore], [ignore])
+
+AT_CHECK([grep /foobar $libdir/liba.la], [], [ignore])
+AT_CHECK([grep /foobar $libdir/libb.la], [], [ignore])
+
+# TODO: check that m gets -R, too.
+
+AT_CLEANUP




reply via email to

[Prev in Thread] Current Thread [Next in Thread]