Index: ChangeLog from Gary V. Vaughan * ltmain.in: Remove the code for stripping duplicate deplibs from libtool link lines -- duplicates are somtimes necessary to satisfy inter-library dependencies, and never cause link to fail even if they are spurious. * tests/depdemo-dups.test: New file. Make sure this bug doesn't creep back in again! * tests/Makefile.am (TESTS): Use the new test above. Index: ltmain.in =================================================================== RCS file: /cvsroot/libtool/libtool/ltmain.in,v retrieving revision 1.247 retrieving revision 1.248 diff -b -u -r1.247 -r1.248 --- ltmain.in 2001/03/31 00:08:03 1.247 +++ ltmain.in 2001/03/31 23:51:09 1.248 @@ -2060,25 +2060,11 @@ vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do - # Make sure that $var contains only unique libraries - # and add them in reverse order + # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - *) - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac + new_libs="$deplib $new_libs" done tmp_libs= for deplib in $new_libs; do Index: tests/Makefile.am =================================================================== RCS file: /cvsroot/libtool/libtool/tests/Makefile.am,v retrieving revision 1.25 retrieving revision 1.26 diff -b -u -r1.25 -r1.26 --- tests/Makefile.am 2000/01/19 20:34:37 1.25 +++ tests/Makefile.am 2001/03/31 23:51:10 1.26 @@ -5,28 +5,29 @@ TESTS = cdemo-static.test cdemo-make.test cdemo-exec.test \ demo-static.test demo-make.test demo-exec.test \ demo-inst.test demo-unst.test \ - depdemo-static.test depdemo-make.test depdemo-exec.test \ - depdemo-inst.test depdemo-unst.test \ + depdemo-static.test depdemo-make.test depdemo-dups.test \ + depdemo-exec.test depdemo-inst.test depdemo-unst.test \ mdemo-static.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test \ cdemo-conf.test cdemo-make.test cdemo-exec.test \ demo-conf.test demo-make.test demo-exec.test \ demo-inst.test demo-unst.test deplibs.test \ - depdemo-conf.test depdemo-make.test depdemo-exec.test \ - depdemo-inst.test depdemo-unst.test \ + depdemo-conf.test depdemo-make.test depdemo-dups.test \ + depdemo-exec.test depdemo-inst.test depdemo-unst.test \ mdemo-conf.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test dryrun.test \ demo-nofast.test demo-make.test demo-exec.test \ demo-inst.test demo-unst.test \ demo-pic.test demo-make.test demo-exec.test \ demo-nopic.test demo-make.test demo-exec.test \ - depdemo-nofast.test depdemo-make.test depdemo-exec.test \ - depdemo-inst.test depdemo-unst.test \ + depdemo-nofast.test depdemo-make.test depdemo-dups.test \ + depdemo-exec.test depdemo-inst.test depdemo-unst.test \ cdemo-shared.test cdemo-make.test cdemo-exec.test \ demo-shared.test demo-make.test demo-exec.test demo-inst.test \ hardcode.test build-relink.test noinst-link.test demo-unst.test \ - depdemo-shared.test depdemo-make.test depdemo-exec.test \ - depdemo-inst.test build-relink2.test depdemo-unst.test \ + depdemo-shared.test depdemo-make.test depdemo-dups.test \ + depdemo-exec.test depdemo-inst.test build-relink2.test \ + depdemo-unst.test \ mdemo-shared.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test \ assign.test link.test link-2.test nomode.test \ Index: tests/depdemo-dups.test =================================================================== RCS file: depdemo-dups.test diff -N depdemo-dups.test --- /dev/null Tue Feb 13 06:06:23 2001 +++ tests/depdemo-dups.test Sat Mar 31 17:01:49 2001 @@ -0,0 +1,39 @@ +#! /bin/sh +# depdemo-dups.test - check that duplicate deplibs are not removed + +# Test script header. +need_prefix=no +if test -z "$srcdir"; then + srcdir=`echo "$0" | sed 's%/[^/]*$%%'` + test "$srcdir" = "$0" && srcdir=. + test "${VERBOSE+set}" != "set" && VERBOSE=yes +fi +. $srcdir/defs || exit 1 + +status=: + +# Check that things are built +if test -f ../depdemo/l2/libl2.la; then : +else + echo "You must run depdemo-make.test before $0" 1>&2 + exit 77 +fi + +# Change to our build directory. +cd ../depdemo || exit 1 + +# Try to link with a library, and explicitly name its deplibs +pwd=`pwd` +result=`$libtool -n --mode=link gcc -o something $pwd/l2/libl2.la $pwd/l1/libl1.la` || status=false + +$status || exit 1 + +echo "$result" +case "$result" in +*/libl1.*/libl1.*) ;; +*) + echo "$0: duplicate deplibs should not be removed." + exit 1 + ;; +esac +exit 0