From: Peter O'Gorman Date: Wed, 19 Jan 2011 18:53:32 +0000 (-0600) Subject: Don't let verbose linker messages influence test results. X-Git-Tag: v2.4.2~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a85c4f5e4082f25b967c284be1d9f5080f0a0d5b;p=thirdparty%2Flibtool.git Don't let verbose linker messages influence test results. * libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Ignore stderr during tests for -flag unless it contains "flag". * tests/darwin.at: Add test. Reported by Jeremy Huddleston and also by David Fang. --- diff --git a/ChangeLog b/ChangeLog index 1ad37415e..640f4a101 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2011-01-19 Peter O'Gorman + + Don't let verbose linker messages influence test results. + * libltdl/m4/libtool.m4 (_LT_REQUIRED_DARWIN_CHECKS): Ignore + stderr during tests for -flag unless it contains "flag". + * tests/darwin.at: Add test. + Reported by Jeremy Huddleston and also by David Fang. + 2011-01-09 John David Anglin (tiny change) Fix relink mode to use absolute path if hardcode_minus_L. diff --git a/libltdl/m4/libtool.m4 b/libltdl/m4/libtool.m4 index fd79dcfc0..ba2d5e4d7 100644 --- a/libltdl/m4/libtool.m4 +++ b/libltdl/m4/libtool.m4 @@ -986,7 +986,13 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD @@ -994,6 +1000,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ rm -rf libconftest.dylib* rm -f conftest.* fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no @@ -1005,6 +1012,7 @@ m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF @@ -1022,7 +1030,9 @@ _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD diff --git a/tests/darwin.at b/tests/darwin.at index bb712075e..4e5034e8c 100644 --- a/tests/darwin.at +++ b/tests/darwin.at @@ -1,6 +1,6 @@ # darwin.at - tests specific to Mac OS X # -# Copyright (C) 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 2008, 2009, 2011 Free Software Foundation, Inc. # Written by Peter O'Gorman, 2008 # # This file is part of GNU Libtool. @@ -204,3 +204,27 @@ AT_CHECK([echo quit | $LIBTOOL --mode=execute gdb main], AT_CHECK([grep 'Could not find object file' stderr],[1],[ignore],[ignore]) AT_CLEANUP + +AT_SETUP([darwin ld warnings changing configure results]) + +AT_DATA([configure.ac], +[[AC_INIT([ld-stderr], ]AT_PACKAGE_VERSION[, ]AT_PACKAGE_BUGREPORT[) +AC_CONFIG_MACRO_DIR([m4]) +AM_INIT_AUTOMAKE([foreign]) +AC_PROG_CC +LT_INIT +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT +]]) + +AT_DATA([Makefile.am],[ +ACLOCAL_AMFLAGS = -I m4 +]) +LT_AT_LIBTOOLIZE([--copy --force]) +LT_AT_AUTORECONF([--force --install]) +LT_AT_CONFIGURE +AT_CHECK([./libtool --config],[ignore],[stdout],[ignore]) +mv stdout expout +LT_AT_CONFIGURE([LDFLAGS=-L/there/is/no/dir/here]) +AT_CHECK([./libtool --config],[ignore],[expout],[ignore]) +AT_CLEANUP