+1999-03-30 Thomas Tanner <tanner@gmx.de>
+
+ * doc/libtool.texi: fixed a typo
+ * libtoolize.in: add the libtool scripts to libltdl.tar.gz
+ * libtool.m4: don't AC_SUBST(USE_SYMBOL_UNDERSCORE),
+ AC_CHECK_LIBM sets LIBM, AC_LIBLTDL_INSTALLABLE doesn't work
+ when libltdl is already installed
+ * *demo/Makefile.am: use LIBM
+ * *demo/configure.in: AC_SUBST LIBM
+ * libltdl/configure.in: use ac_cv_sys_symbol_underscore instead of
+ USE_SYMBOL_UNDERSCORE
+ * ltconfig.in: added link_all_deplibs variable
+ * doc/libtool.texi: document it
+ * ltmain.in: always search for libname.la - don't eval libname_spec,
+ when linking libraries against static ones just print a warning
+ and add them to dependency_libs, add -lc before deplibs,
+ always link all dependencies of a static library or if
+ link_all_deplibs is yes, hardcode library paths if
+ hardcode_into_libs is no, don't link against dependency_libs
+ that already are deplibs
+
1999-03-30 Alexandre Oliva <oliva@dcc.unicamp.br>
* ltconfig.in (aix4*, collect2name): make sure collect2 exists
New in 1.3b: 1999-??-??; CVS version 1.3a, Libtool team:
* Complete inter-library dependencies support. It's now possible
to link libtool libraries against other libtool libraries.
-* Already-installed libtool libraries will be found.
+* Libtool is able to find already-installed libtool libraries.
* Support for linking DLLs on Win32
* New demos and tests
* Various bugfixes
noinst_LTLIBRARIES = libfoo.la
libfoo_la_SOURCES = foo.c
+libfoo_la_LIBADD = $(LIBM)
noinst_HEADERS = foo.h
AC_CHECK_HEADERS(math.h)
AC_CHECK_LIBM
+AC_SUBST(LIBM)
dnl Output the makefile
AC_OUTPUT(Makefile)
# Build a libtool library, libhello.la for installation in libdir.
lib_LTLIBRARIES = libhello.la
libhello_la_SOURCES = hello.c foo.c
+libhello_la_LIBADD = $(LIBM)
libhello_la_LDFLAGS = -version-info 3:12:1
include_HEADERS = foo.h
libhell2_la_LIBADD = -L. -lhell0 # we have to use -L/-l. Why?
bin_PROGRAMS += hell0
hell0_SOURCES = main.c
-hell0_LDADD = libhell1.la libhell2.la
+hell0_LDADD = libhell1.la libhell2.la $(LIBM)
# Unfortunately, in order to test libtool thoroughly, we need access
# to its private directory.
eval `egrep -e '^(hardcode_.*|wl)=' libtool`; \
libdir=$(libdir); \
flag=`eval echo \"$$hardcode_libdir_flag_spec\"`; \
- echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) $$flag || echo unsupported > $@"; \
- eval "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) $$flag || echo unsupported > $@"
+ echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) $(LIBM) $$flag || echo unsupported > $@"; \
+ eval "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$shlib $(LIBS) $(LIBM) $$flag || echo unsupported > $@"
hc-libflag: $(hell_OBJECTS) $(hell_DEPENDENCIES) $(libdir)/libhello.la
@eval `egrep -e '^(hardcode_.*|wl)=' libtool`; \
echo "echo unsupported > $@"; \
echo unsupported > $@ || status="$$?"; \
else \
- echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$flag -L$(libdir) -lhello $(LIBS)"; \
- $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$flag -L$(libdir) -lhello $(LIBS) || status="$$?"; \
+ echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$flag -L$(libdir) -lhello $(LIBS) $(LIBM)"; \
+ $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) $$flag -L$(libdir) -lhello $(LIBS) $(LIBM) || status="$$?"; \
fi; \
exit $$status
@eval `egrep -e '^(shlibpath_var|hardcode_.*|wl)=' libtool`; \
libdir=$(libdir); \
flag=`eval echo \"$$hardcode_libdir_flag_spec\"`; \
- echo "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) $$flag || echo unsupported > $@"; \
- eval "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) $$flag || echo unsupported > $@"
+ echo "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) $(LIBM) $$flag || echo unsupported > $@"; \
+ eval "$$shlibpath_var=./$(objdir) $(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -lhello $(LIBS) $(LIBM) $$flag || echo unsupported > $@"
hc-minusL: $(hell_OBJECTS) $(hell_DEPENDENCIES)
@rm -f hc-minusL
@eval `egrep -e '^(hardcode_.*|wl)=' libtool`; \
libdir=$(libdir); \
flag=`eval echo \"$$hardcode_libdir_flag_spec\"`; \
- echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./$(objdir) -lhello $(LIBS) $$flag || echo unsupported > $@"; \
- eval "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./$(objdir) -lhello $(LIBS) $$flag || echo unsupported > $@"
+ echo "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./$(objdir) -lhello $(LIBS) $(LIBM) $$flag || echo unsupported > $@"; \
+ eval "$(CC) $(LDFLAGS) -o $@ $(hell_OBJECTS) -L./$(objdir) -lhello $(LIBS) $(LIBM) $$flag || echo unsupported > $@"
$(OBJECTS): libtool
libtool: $(LIBTOOL_DEPS)
AC_CHECK_HEADERS(string.h math.h)
AC_CHECK_LIBM
+AC_SUBST(LIBM)
dnl Output the makefile
AC_OUTPUT(Makefile)
AC_CHECK_HEADERS(math.h)
AC_CHECK_LIBM
+AC_SUBST(LIBM)
dnl Output the makefile
AC_OUTPUT(
lib_LTLIBRARIES = libl4.la
libl4_la_SOURCES = l4.c l4.h
-libl4_la_LIBADD = $(top_builddir)/l3/libl3.la
+libl4_la_LIBADD = $(top_builddir)/l3/libl3.la $(LIBM)
will only emulate dynamic linking with libtool's dlpreopening mechanism.
@noindent
-libltdl supports currently the following dynamic linking mechanims:
+libltdl supports currently the following dynamic linking mechanisms:
@itemize @bullet
@item
the file name that the linker finds when given @samp{-l@var{name}}.
@end defvar
+@defvar link_all_deplibs
+Whether libtool must link a program against all its dependency libraries.
+Set to @samp{yes} or @samp{no}. Default is @samp{no}.
+@end defvar
+
@defvar link_static_flag
Linker flag (passed through the C compiler) used to prevent dynamic
linking.
fi
AC_SYS_SYMBOL_UNDERSCORE
-if test x"$USE_SYMBOL_UNDERSCORE" = xyes; then
+if test x"$ac_cv_sys_symbol_underscore" = xyes; then
if test x"$ac_cv_func_dlopen" = xyes ||
test x"$ac_cv_lib_dl_dlopen" = xyes ; then
AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
rm -rf conftest*
])
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
-USE_SYMBOL_UNDERSCORE=${ac_cv_sys_symbol_underscore=no}
-AC_SUBST(USE_SYMBOL_UNDERSCORE)dnl
])
# AC_CHECK_LIBM - check for math library
AC_DEFUN(AC_CHECK_LIBM,
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
case "$host" in
*-*-beos* | *-*-cygwin*)
# These system don't have libm
;;
*-ncr-sysv4.3*)
- AC_CHECK_LIB(mw, _mwvalidcheckl)
- AC_CHECK_LIB(m, cos)
+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
;;
*)
- AC_CHECK_LIB(m, cos)
+ AC_CHECK_LIB(m, cos, LIBM="-lm")
;;
esac
])
# appropriate in the Makefiles.
# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [
- AC_CHECK_LIB(ltdl, main, LIBLTDL="-lltdl", [
- case "$enable_ltdl_install" in
- no) AC_MSG_WARN([libltdl not installed, but installation disabled]) ;;
- "") enable_ltdl_install=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-install" ;;
- esac
+ AC_CHECK_LIB(ltdl, main,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
])
- if test x"$enable_ltdl_install" != x"no"; then
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
fi
])
if test "x$ltdl_tar" = x"yes"; then
if test "x$dry_run" = x"yes"; then
- echo "(cd $pkgdatadir > /dev/null && tar -cf - libltdl | gzip --best) > libltdl.tar.gz"
+ echo "tar -cf - libltdl | gzip --best > libltdl.tar.gz"
elif test -f libltdl.tar.gz && test -z "$force"; then
test -z "$automake" && echo "$progname: \`libltdl.tar.gz' exists: use \`--force' to overwrite" 1>&2
else
- (cd $pkgdatadir > /dev/null && tar -cf - libltdl | gzip --best) > libltdl.tar.gz
+ test -d libltdl && ${rm}r libltdl
+ $mkdir libltdl
+ ltdlfiles=`cd $pkgdatadir && ls libltdl/*`
+ for file in $ltdlfiles; do
+ if $cp $pkgdatadir/$file $file; then :
+ else
+ echo "$progname: cannot copy \`$pkgdatadir/$file' to \`$file'" 1>&2
+ status=1
+ break
+ fi
+ done
+ for file in $files; do
+ if $cp $pkgdatadir/$file libltdl/$file; then :
+ else
+ echo "$progname: cannot copy \`$pkgdatadir/$file' to \`libltdl/$file'" 1>&2
+ status=1
+ break
+ fi
+ done
+ tar -cf - libltdl | gzip --best > libltdl.tar.gz
+ ${rm}r libltdl
fi
fi
hardcode_minus_L=no
hardcode_shlibpath_var=unsupported
runpath_var=
+link_all_deplibs=no
always_export_symbols=no
export_symbols_cmds='$NM $libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
# include_expsyms should be a list of space-separated symbols to be *always*
$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
hardcode_libdir_flag_spec='-R$libdir'
hardcode_shlibpath_var=no
+ link_all_deplibs=yes
;;
sunos4*)
# the resulting binary.
hardcode_shlibpath_var=$hardcode_shlibpath_var
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
# Compile-time system search path for libraries
sys_lib_search_path_spec=$sys_lib_search_path_spec
;;
-l*)
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
- libname=`eval \\$echo \"$libname_spec\"`
found=no
for searchdir in $lib_search_path; do
# Search the libtool library
- lib="$searchdir/$libname.la"
+ lib="$searchdir/lib${name}.la"
if test -f "$lib"; then
found=yes
break
fi
test "$add_name" = yes && deplibs="$deplibs -l$name"
elif test "$build_libtool_libs" = yes && test "$deplibs_check_method" != pass_all; then
+ # We're trying link a shared library against a static one
+ # but the system doesn't support it.
+ # Just print a warning and add the library to dependency_libs so
+ # that the program can be linked against the static library.
echo
echo "*** Warning: This library needs some functionality provided by $libname."
echo "*** I have the capability to make that library automatically link in when"
echo "*** you link to this library. But I can only do this if you have a"
echo "*** shared version of the library, which you do not appear to have."
- continue
- else
- # Check for old archives if we don't build new libraries.
- if test -n "$pic_flag" && test -z "$old_library"; then
- $echo "$modename: cannot find static library for \`$lib'" 1>&2
- exit 1
- fi
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
- deplibs="$deplibs $dir/$old_library"
fi
if test -n "$dependency_libs"; then
;;
*)
# Add libc to deplibs on all other systems.
- deplibs="$deplibs -lc"
+ deplibs="-lc $deplibs"
;;
esac
fi
fi
fi
- # Find libtool libraries and add their dependencies/rpaths
+ # Find libtool libraries and add their dependencies
old_deplibs="$deplibs"
deplibs=
+ absdeplibs=
newdependency_libs=
new_lib_search_path=
for deplib in $old_deplibs; do
case "$deplib" in
-L*)
deplibs="$deplibs $deplib"
+ absdeplibs="$absdeplibs $deplib"
new_lib_search_path="$new_lib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
continue
;;
-l*)
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
- libname=`eval \\$echo \"$libname_spec\"`
found=no
for searchdir in $lib_search_path; do
# Search the libtool library
- lib="$searchdir/$libname.la"
+ lib="$searchdir/lib${name}.la"
if test -f "$lib"; then
found=yes
break
done
if test "$found" != yes; then
deplibs="$deplibs $deplib"
+ absdeplibs="$absdeplibs $deplib"
continue
fi
;;
fi
new_lib_search_path="$new_lib_search_path `$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`"
- deplibs="$deplibs $lib"
-
+
for deplib in $dependency_libs; do
case "$deplib" in
- -L*) new_lib_search_path="$new_lib_search_path `expr $deplib : '-L\(.*\)'`" ;;
- *) ;;
- esac
- # Make sure dependency_libs contains only unique
- # libraries and directories.
- case "$newdependency_libs " in
- *" $deplib "*) ;;
- *) newdependency_libs="$newdependency_libs $deplib" ;;
+ -L*)
+ new_lib_search_path="$new_lib_search_path `$echo "X$deplib" | $Xsed -e 's/^-L//'`"
+ ;;
esac
+
+ if test "$link_all_deplibs" = yes || \
+ test "$fast_install" = yes || \
+ test "$build_libtool_libs" = no || \
+ test -z "$library_names"; then
+ # Need to link against all dependency_libs
+ case "$absdeplibs " in
+ *" $deplib "*) ;;
+ *)
+ deplibs="$deplibs $deplib"
+ absdeplibs="$absdeplibs $deplib"
+ ;;
+ esac
+ elif test "$hardcode_into_libs" = no; then
+ # Need to hardcode shared library paths
+ # or/and link against static libraries
+ case "$newdependency_libs " in
+ *" $deplib "*) ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ fi
done
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ # We need an absolute path.
+ case "$ladir" in
+ /* | [A-Za-z]:[/\\]*) ;;
+ *)
+ abs_ladir=`cd "$ladir" && pwd`
+ if test -z "$abs_ladir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$ladir'" 1>&2
+ exit 1
+ fi
+ ladir="$abs_ladir"
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ deplibs="$deplibs $lib"
+ absdeplibs="$absdeplibs $ladir/$laname"
+ done
+
+ # Eliminate all dependency_libs that are already contained in deplibs
+ dependency_libs=
+ for deplib in $newdependency_libs; do
+ case "$deplibs " in
+ *" $deplib "*) ;;
+ *) dependency_libs="$dependency_libs $deplib" ;;
+ esac
done
- dependency_libs="$newdependency_libs"
# Make sure lib_search_path contains only unique directories.
lib_search_path=
# Find libtool libraries and add their directories
alldeplibs=no
- linkalldeplibs=no
- if test "$fast_install" = yes || test "$build_libtool_libs" = no || \
- test "$deplibs_check_method" = none; then
- linkalldeplibs=yes
- fi
link_against_libtool_libs=
for deplib in $deplibs @DEPLIBS@ $dependency_libs; do
lib=
case "$deplib" in
-L*)
- case "$compile_command " in
- *" $deplib "*) ;;
- *) compile_command="$compile_command $deplib";;
- esac
- case "$finalize_command " in
- *" $deplib "*) ;;
- *) finalize_command="$finalize_command $deplib";;
- esac
+ compile_command="$compile_command $deplib"
+ finalize_command="$finalize_command $deplib"
continue
;;
-R*)
continue
;;
@DEPLIBS@)
- if test "$hardcode_into_libs" = yes; then
- break
- fi
alldeplibs=yes
continue
;;
-l*)
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
- libname=`eval \\$echo \"$libname_spec\"`
found=no
for searchdir in $lib_search_path; do
# Search the libtool library
- lib="$searchdir/$libname.la"
+ lib="$searchdir/lib${name}.la"
if test -f "$lib"; then
found=yes
break
fi
name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
- if test "$build_libtool_libs" = yes && test -n "$library_names"; then
+ if test -z "$libdir"; then
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $dir/$old_library"
+ old_convenience="$old_convenience $dir/$old_library"
+ compile_command="$compile_command $dir/$old_library"
+ finalize_command="$finalize_command $dir/$old_library"
+ continue
+ fi
+
+ hardcode=yes
+ test "$hardcode_into_libs" = yes && test "$alldeplibs" = yes && hardcode=no
+
+ if test "$hardcode" = yes && \
+ test "$build_libtool_libs" = yes && \
+ test -n "$library_names"; then
+ # We need to hardcode the library path
if test -n "$shlibpath_var"; then
# Make sure the rpath contains only unique directories.
case "$temp_rpath " in
esac
fi
- if test "$alldeplibs" = yes && test "$linkalldeplibs" = no; then
+ if test "$alldeplibs" = yes && \
+ test "$build_libtool_libs" = yes && \
+ test -n "$library_names"; then
+ # Do we only need to link against static libraries?
continue
fi
- if test -z "$libdir"; then
- # It is a libtool convenience library, so add in its objects.
- convenience="$convenience $dir/$old_library"
- old_convenience="$old_convenience $dir/$old_library"
- compile_command="$compile_command $dir/$old_library"
- finalize_command="$finalize_command $dir/$old_library"
- continue
- fi
-
if test "$build_libtool_libs" = yes && test -n "$library_names"; then
link_against_libtool_libs="$link_against_libtool_libs $lib"
lib_LTLIBRARIES = foo1.la libfoo2.la
foo1_la_SOURCES = foo1.c
+foo1_la_LIBADD = $(LIBM)
foo1_la_LDFLAGS = -module -avoid-version
libfoo2_la_SOURCES = foo2.c
+libfoo2_la_LIBADD = $(LIBM)
libfoo2_la_LDFLAGS = -module
noinst_HEADERS = foo.h
AC_CHECK_HEADERS(math.h)
AC_CHECK_LIBM
+AC_SUBST(LIBM)
dnl Output the makefile
AC_OUTPUT(Makefile)