| # deplibs-mingw.at -- -*- Autotest -*- |
| |
| # Copyright (C) 2010-2019, 2021-2025 Free Software Foundation, Inc. |
| # |
| # 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. If not, see <https://www.gnu.org/licenses/>. |
| #### |
| |
| # Check that deplibs are detected correctly even if there is no 'file' |
| # command installed. |
| |
| AT_SETUP([deplibs without file command]) |
| AT_KEYWORDS([libtool]) |
| |
| # Skip failing test on MSVC |
| if $LIBTOOL --config | $EGREP '^nm_interface="MS dumpbin"' >/dev/null; then |
| AT_CHECK([exit 77]) |
| fi |
| |
| cwd=`pwd` |
| instdir=$cwd/inst |
| libdir=$instdir/lib |
| bindir=$instdir/bin |
| save_LDFLAGS=$LDFLAGS |
| LDFLAGS="$LDFLAGS -no-undefined" |
| |
| mkdir inst inst/bin inst/lib |
| |
| AT_DATA([a.c], |
| [[int a () { return 0; } |
| ]]) |
| AT_DATA([b.c], |
| [[extern int a (); |
| int b () { return a (); } |
| ]]) |
| |
| for file in a.c b.c; do |
| $LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c $file |
| done |
| AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la a.lo -rpath $libdir], |
| [], [ignore], [ignore]) |
| AT_CHECK([library_names= && . ./liba.la && if test -z "$library_names"; then exit 77; fi ], |
| [], [ignore], [ignore]) |
| AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore]) |
| AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore]) |
| rm -f $libdir/liba.la |
| |
| # check once with 'file' (if present) and once without, if on MinGW. |
| for try in with-file without-file; do |
| AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libb.la b.lo -rpath $libdir ]dnl |
| [-L$libdir -la], |
| [], [ignore], [ignore]) |
| AT_CHECK([library_names= && . ./libb.la && if test -z "$library_names"; then exit 99; fi ], |
| [], [ignore], [ignore]) |
| |
| case $host_os in |
| mingw* | windows*) |
| if file /; then |
| mkdir bin new-libtool |
| |
| cat >bin/file <<\EOF |
| #! /bin/sh |
| exit 1 |
| EOF |
| chmod +x bin/file |
| PATH=`pwd`/bin${PATH_SEPARATOR-:}$PATH |
| cd new-libtool |
| # configure might fail due to in-tree build of toplevel, or |
| # missing configure flags and other reasons. |
| LDFLAGS=$save_LDFLAGS |
| LT_AT_CONFIGURE([|| exit 77], ["$abs_top_srcdir"/configure]) |
| LDFLAGS="$LDFLAGS -no-undefined" |
| cd .. |
| LIBTOOL=new-libtool/libtool |
| export LIBTOOL |
| # Check whether the generated script is usable; otherwise, skip. |
| AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o libunrelated.la a.lo -rpath $libdir] dnl |
| [|| exit 77], [], [ignore], [ignore]) |
| else |
| break; |
| fi;; |
| *) |
| break;; |
| esac |
| done |
| |
| AT_CLEANUP |