This patch is against Libtool 2.2 * libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD), libltdl/config/ltmain.m4sh (func_mode_link): On Windows, find potential libs regardless of file name case. * tests/nocase.at: New test, to check for regressions of the above. * Makefile.am: Add above new test. Index: libtool/libltdl/config/ltmain.m4sh =================================================================== --- libtool.orig/libltdl/config/ltmain.m4sh +++ libtool/libltdl/config/ltmain.m4sh @@ -5650,8 +5650,20 @@ EOF fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` + if test -n "$file_magic_glob"; then + libnameglob=`$ECHO "X$libname" | $Xsed -e $file_magic_glob` + else + libnameglob=$libname + fi + test "$want_nocaseglob" == yes && nocaseglob=`shopt -p nocaseglob` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + if test "$want_nocaseglob" == yes; then + shopt -s nocaseglob + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | Index: libtool/libltdl/m4/libtool.m4 =================================================================== --- libtool.orig/libltdl/m4/libtool.m4 +++ libtool/libltdl/m4/libtool.m4 @@ -3175,6 +3175,23 @@ tpf*) ;; esac ]) + +case $host_os in +cygwin* | mingw* | pw32*) + if shopt | grep nocaseglob 2>&1 > /dev/null; then + file_magic_glob= + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + want_nocaseglob=no + fi + ;; +*) + file_magic_glob= + want_nocaseglob=no + ;; +esac + file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown @@ -3183,6 +3200,10 @@ _LT_DECL([], [deplibs_check_method], [1] [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method == "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD Index: libtool/Makefile.am =================================================================== --- libtool.orig/Makefile.am +++ libtool/Makefile.am @@ -448,6 +448,7 @@ TESTSUITE_AT = tests/testsuite.at \ tests/indirect_deps.at \ tests/archive-in-archive.at \ tests/destdir.at \ + tests/nocase.at \ tests/old-m4-iface.at \ tests/am-subdir.at \ tests/lt_dlexit.at \ Index: libtool/tests/nocase.at =================================================================== --- /dev/null +++ libtool/tests/nocase.at @@ -0,0 +1,83 @@ +# nocase.at -- test for nocase lib search -*- Autotest -*- +# +# Copyright (C) 2007 Free Software Foundation, Inc. +# Written by Peter Rosin, 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([nocase library search]) +AT_KEYWORDS([libtool]) + +eval `$LIBTOOL --config | $EGREP '^(want_nocaseglob|file_magic_glob)='` + +AT_CHECK([test "$want_nocaseglob" != yes -a -z "$file_magic_glob" \ + && exit 77], + [1], [ignore], [ignore]) + +mkdir foo +AT_DATA([foo/Foo.c], +[ +int Foo(void) { return 1; } +]) + +mkdir bar +AT_DATA([bar/bar.c], +[ +extern int Foo(void); +int bar(void) { return Foo(); } +]) + +AT_DATA([main.c], +[ +extern int bar(void); +int main(void) { return bar(); } +]) + +libdir=`pwd`/inst/lib +mkdir inst inst/bin inst/lib + +$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS \ + -c -o foo/Foo.lo foo/Foo.c +$LIBTOOL --mode=link --tag=CC $CC $CFLAGS $LDFLAGS \ + -o foo/libFoo.la foo/Foo.lo \ + -no-undefined -version-info 1:0:0 -rpath $libdir +$LIBTOOL --mode=install cp foo/libFoo.la $libdir +rm -f $libdir/libFoo.la + +$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS \ + -c -o bar/bar.lo bar/bar.c +$LIBTOOL --mode=link --tag=CC $CC $CFLAGS $LDFLAGS \ + -o bar/libbar.la bar/bar.lo -L$libdir -lfoo \ + -no-undefined -version-info 1:0:0 -rpath $libdir +$LIBTOOL --mode=install cp bar/libbar.la $libdir + +eval `$EGREP '^(old_library)=' < $libdir/libbar.la` +libbar=$old_library +rm -f $libdir/$libbar + +$LIBTOOL --mode=compile --tag=CC $CC $CPPFLAGS $CFLAGS \ + -c -o main.$OBJEXT main.c + +AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS \ + -o main main.$OBJEXT -L$libdir -lbar], + [], [ignore], [ignore]) + +AT_CLEANUP