On Sat, Oct 21, 2006 at 01:31:53PM +0200, Ralf Wildenhues wrote:
> Hello Patrick,
>
> * Patrick Welche wrote on Mon, Oct 16, 2006 at 01:17:42PM CEST:
> >
> > /usr/X11R6/lib doesn't need to be in the default set of paths searched
> > by the loader. As I mentioned, with a different compile line to the one
> > generated by libtool, I have a working hello. The problem is that the
> > binary created by libtool contains the dependencies of the shared the
> > library rather than just depending on the shared library.
>
> No. The bug is that the -R information isn't also transferred to the
> program. The (known) Libtool limitation is that it does not implement
> a consistent set of semantics for indirect library dependencies.
> (Note there are systems which don't have such.)
>
> I'm not sure why -R isn't transferred, but somebody may have had some
> good reason for it. Who knows.
Does the following (my first(!)) autotest pass for you? [Could be improved
with a if x_no=yes exit 77, but I don't see yet how to get x_no out]
Cheers,
Patrick
Index: Makefile.am
===================================================================
RCS file: /cvsroot/libtool/libtool/Makefile.am,v
retrieving revision 1.202
diff -u -r1.202 Makefile.am
--- Makefile.am 24 Oct 2006 20:30:05 -0000 1.202
+++ Makefile.am 9 Nov 2006 11:58:37 -0000
@@ -406,6 +406,7 @@
tests/link-order2.at \
tests/fail.at \
tests/shlibpath.at \
+ tests/depshlib.at \
tests/static.at \
tests/destdir.at \
tests/search-path.at \
AT_SETUP([Shared library dependencies])
AT_DATA([Makefile.am],
[lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello.c
libhello_la_LDFLAGS = -version-info 0:0:0 $(X_PRE_LIBS) $(X_LIBS)
$(X_EXTRA_LIBS)
libhello_la_CFLAGS = $(X_CFLAGS)
libhello_la_LIBADD = $(X_PRE_LIBS) $(X_LIBS) $(X_EXTRA_LIBS)
bin_PROGRAMS = hello
hello_SOURCES = main.c
hello_LDADD = libhello.la
])
AT_DATA([configure.ac],
[AC_PREREQ([2.60])
AC_INIT([hello], [1.0])
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([1.9 foreign])
AC_PATH_XTRA
LT_INIT
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
])
AT_DATA([main.c],
[void hello ();
int
main (int argc, char *argv[])
{
hello ("World");
return 0;
}
])
AT_DATA([hello.c],
[#include <stdio.h>
#include <X11/ICE/ICEutil.h>
void
hello (char *who)
{
printf ("Hello, %s! (%s)\n", who, IceAuthFileName());
}
])
LT_AT_BOOTSTRAP([--copy], [-I m4], [ignore], [--add-missing])
LT_AT_EXEC_CHECK([hello], 0)
AT_CLEANUP
_______________________________________________
http://lists.gnu.org/mailman/listinfo/libtool