diff --git a/ChangeLog b/ChangeLog index b6c9cf7c..63d45876 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,22 @@ +Thu Dec 5 14:19:21 1996 Gordon Matzigkeit + + * ltconfig.in, ltmain.sh.in (link): Add support for creating + reloadable objects. + +Wed Dec 4 00:42:53 1996 Gordon Matzigkeit + + * ltmain.sh.in (install): Fix passing -n flag to `libtool + --finish'. + (compile): Compile `.lo' and `.o' objects at the same time so that + non-PIC objects (if they are available) can be used for linking + into programs and creating static archives. Suggested by Ulrich + Drepper. + Tue Dec 3 10:43:22 1996 Gordon Matzigkeit + * ltmain.sh.in (link): Give the full path to the libtool library + when sourcing it. + * ltconfig.in (old_striplib): Do a configuration test to determine if old-style libraries actually can be stripped or not. diff --git a/Makefile.am b/Makefile.am index 577f9f53..868296f8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,7 @@ ## Process Makefile.am with automake to create Makefile.in. ## Gordon Matzigkeit , 1996 AUTOMAKE_OPTIONS = gnits -SUBDIRS = doc +SUBDIRS = doc tests # Distribute ltconfig and ltmain.sh so that the demo directory works. EXTRA_DIST = libtool.m4 libtoolize.in ltconfig ltconfig.in \ @@ -9,8 +9,10 @@ EXTRA_DIST = libtool.m4 libtoolize.in ltconfig ltconfig.in \ CLEANFILES = libtool libtoolize # Files in the demo subdirectory that go in the distribution. -demo_distfiles = Makefile.in Makefile.am aclocal.m4 configure configure.in \ - foo.c foo.h hello.c libinfo main.c +demo_distfiles = Makefile.in Makefile.am README aclocal.m4 \ + ansi2knr.1 ansi2knr.c \ + configure configure.in foo.c foo.h hello.c main.c \ + run.test # These are required by libtoolize. pkgdata_SCRIPTS = config.guess config.sub ltconfig @@ -24,25 +26,32 @@ aclocal_DATA = libtool.m4 bin_SCRIPTS = libtool libtoolize libtool: ltconfig + @echo 'WARNING: Warnings from ltconfig can be ignored. :-)' $(srcdir)/ltconfig --srcdir=$(srcdir) $(pkgdatadir)/ltmain.sh -libtoolize: libtoolize.in +# These depend on configure.in for version numbers. +libtoolize: libtoolize.in configure.in CONFIG_FILES=libtoolize CONFIG_HEADERS= $(top_builddir)/config.status chmod +x libtoolize -$(srcdir)/ltconfig: ltconfig.in +$(srcdir)/ltconfig: ltconfig.in configure.in CONFIG_FILES=ltconfig CONFIG_HEADERS= $(top_builddir)/config.status chmod +x ltconfig -$(srcdir)/ltmain.sh: ltmain.sh.in +$(srcdir)/ltmain.sh: ltmain.sh.in configure.in CONFIG_FILES=ltmain.sh CONFIG_HEADERS= $(top_builddir)/config.status # Distribute the demo subdirectory. dist-hook: mkdir $(distdir)/demo + -chmod 755 $(distdir)/demo + here=`pwd`; distdir=`cd $(distdir) && pwd` \ + && cd $(srcdir)/demo \ + && automake --include-deps --build-dir=$$here/demo --srcdir-name=$(srcdir)/demo --output-dir=$$distdir/demo @for file in $(demo_distfiles); do \ d=$(srcdir)/demo; \ test -f $(distdir)/demo/$$file \ || ln $$d/$$file $(distdir)/demo/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/demo/$$file; \ done + diff --git a/NEWS b/NEWS index 419fc54d..a40fae46 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -New in 0.6b: +New in 0.6c: * Total rewrite of libtool, along with a new model for library building. * Completely rewritten documentation for the new paradigm. * Sane handling of broken system linkers, such as the ones on AIX @@ -8,6 +8,8 @@ New in 0.6b: libtool program. * Automatic mode guessing, based on the command line. * Support for new `-static' linking flag. +* Library version information is now passed on the command line, not + through a version file. * Quote metacharacters in arguments to compile mode. Version 0.6 was never released. diff --git a/configure.in b/configure.in index 6dc3e4a5..f052de77 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_INIT(ltmain.sh.in) -AM_INIT_AUTOMAKE(libtool, 0.6c) +AM_INIT_AUTOMAKE(libtool, 0.6d) pkgdatadir='${datadir}/libtool' AC_SUBST(pkgdatadir) diff --git a/ltconfig.in b/ltconfig.in index dc54444a..d54d78c1 100755 --- a/ltconfig.in +++ b/ltconfig.in @@ -33,6 +33,7 @@ progname=`echo "$0" | sed 's%^.*/%%'` PROGRAM=ltconfig PACKAGE=@PACKAGE@ VERSION=@VERSION@ +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' rm="rm -f" help="Try \`$progname --help' for more information." @@ -53,6 +54,7 @@ with_gcc=no old_CC="$CC" old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" old_LD="$LD" old_RANLIB="$RANLIB" @@ -274,7 +276,7 @@ fi if test -n "$RANLIB"; then old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib" - old_postinstall_cmds='$RANLIB $oldlib' + old_postinstall_cmds="$old_postinstall_cmds;\$RANLIB \$oldlib" fi # FIXME: this is simplistic, and doesn't allow for cross-compiling. @@ -291,6 +293,55 @@ else echo $ac_t none 1>&6 fi + +# Check if old-style libraries may be stripped. +old_striplib= +if test -n "$striplib"; then + echo $ac_n "checking if $striplib works for static archives... $ac_c" 1>&6 + old_striplib="$striplib" + trap 'rm -rf conftest*; exit 1' 1 2 15 + cat > conftest.c <&5; (eval $ac_compile) 2>&5; }; then + oldlib=conftest.a + oldobjs=' conftest.o' + + # Do each of the archive commands. + cmds=`eval echo \"$old_archive_cmds\"` + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + if { (echo $progname:317: \"$cmd\") 1>&5; ($cmd) 2>&5; }; then : + else + old_striplib= + break + fi + done + IFS="$save_ifs" + + if test -n "$old_striplib"; then + if { (echo $progname:326: \"$old_striplib conftest.a\") 1>&5; ($old_striplib conftest.a) 2>&5; }; then : + else + old_striplib= + fi + fi + else + old_striplib= + fi + rm -rf conftest* + trap '' 1 2 15 + + if test -n "$old_striplib"; then + echo "$ac_t""yes" 1>&6 + else + echo "$ac_t""no" 1>&6 + fi +fi + + # Check to see if we are using GCC. if test "$with_gcc" = no; then # If CC is not set, then try to find GCC or a usable CC. @@ -678,14 +729,13 @@ echo "$ac_t""$enable_shared" 1>&6 ofile=libtool -trap "rm -fr $ofile; exit 1" 1 2 15 +trap "$rm $ofile; exit 1" 1 2 15 echo creating $ofile rm -fr $ofile cat < $ofile #! /bin/sh # libtool - Provide generalized library-building support services. -# See ABOUT-LIBS for more information. # # Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION # This program was configured as follows, @@ -751,6 +801,7 @@ link_rpath_flag='$link_rpath_flag' # How to strip a library file. striplib='$striplib' +old_striplib='$old_striplib' # This is the shared library path variable. shlibpath_var=$shlibpath_var diff --git a/ltmain.sh.in b/ltmain.sh.in index 959e0f5e..e6d7f1d6 100644 --- a/ltmain.sh.in +++ b/ltmain.sh.in @@ -1081,9 +1081,9 @@ EOF # Support stripping libraries. if test -n "$stripme"; then - if test -n "$striplib"; then - $show "$striplib $oldlib" - $run $striplib $oldlib || exit $? + if test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run $old_striplib $oldlib || exit $? else echo "$progname: warning: no library stripping program" 1>&2 fi