* config/ltmain.m4sh (func_mode_link): Fix

inherited_linker_flags so it puts it on the link line when
linking shared libraries as well as when linking executables.
* tests/inherited_flags.at: test inherited_linker_flags.
* tests/Makefile.am: Add test.
* tests/testsuite.at: Add test.
Reported by: Albert Chin-A-Young <china@thewrittenword.com>
This commit is contained in:
Peter O'Gorman 2005-01-10 15:44:13 +00:00
parent cb791887dc
commit 92ee209330
5 changed files with 97 additions and 11 deletions

View File

@ -1,3 +1,13 @@
2005-01-10 Peter O'Gorman <peter@pogma.com>
* config/ltmain.m4sh (func_mode_link): Fix
inherited_linker_flags so it puts it on the link line when
linking shared libraries as well as when linking executables.
* tests/inherited_flags.at: test inherited_linker_flags.
* tests/Makefile.am: Add test.
* tests/testsuite.at: Add test.
Reported by: Albert Chin-A-Young <china@thewrittenword.com>
2005-01-10 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* tests/sh.test: After `set dummy [...]', check for `shift'

View File

@ -2187,6 +2187,7 @@ func_mode_link ()
dllsearchpath=
lib_search_path=`pwd`
inst_prefix_dir=
new_inherited_linker_flags=
avoid_version=no
dlfiles=
@ -3097,7 +3098,7 @@ func_mode_link ()
case $pass in
dlopen) libs="$dlfiles" ;;
dlpreopen) libs="$dlprefiles" ;;
link) libs="$deplibs %DEPLIBS% $dependency_libs $inherited_linker_flags" ;;
link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
esac
fi
if test "$linkmode,$pass" = "lib,dlpreopen"; then
@ -3139,9 +3140,9 @@ func_mode_link ()
else
deplibs="$deplib $deplibs"
if test "$linkmode" = lib ; then
case "$inherited_linker_flags " in
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) inherited_linker_flags="$inherited_linker_flags $deplib" ;;
* ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
esac
fi
fi
@ -3221,9 +3222,9 @@ func_mode_link ()
else
deplibs="$deplib $deplibs"
if test "$linkmode" = lib ; then
case "$inherited_linker_flags " in
case "$new_inherited_linker_flags " in
*" $deplib "*) ;;
* ) inherited_linker_flags="$inherited_linker_flags $deplib" ;;
* ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
esac
fi
fi
@ -3380,12 +3381,18 @@ func_mode_link ()
*-*-darwin*)
# Convert "-framework foo" to "foo.ltframework"
if test -n "$inherited_linker_flags"; then
inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([[^ $]]*\)/\1.ltframework/g'`
tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([[^ $]]*\)/\1.ltframework/g'`
new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flags"
fi
dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([[^ $]]*\).ltframework% -framework \1%g'`
;;
esac
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$inherited_linker_flags $compile_deplibs"
finalize_deplibs="$inherited_linker_flags $finalize_deplibs"
else
compiler_flags="$compiler_flags $inherited_linker_flags"
fi
if test "$linkmode,$pass" = "lib,link" ||
test "$linkmode,$pass" = "prog,scan" ||
{ test "$linkmode" != prog && test "$linkmode" != lib; }; then
@ -3949,7 +3956,7 @@ func_mode_link ()
if test "$link_all_deplibs" != no; then
# Add the search paths of all dependency libraries
for deplib in $dependency_libs $inherited_linker_flags; do
for deplib in $dependency_libs; do
case $deplib in
-L*) path="$deplib" ;;
*.la)
@ -4850,7 +4857,7 @@ EOF
case $host in
*-*-darwin*)
newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([[^ $]]*\).ltframework% -framework \1%g'`
inherited_linker_flags=`$ECHO "X $inherited_linker_flags" | $Xsed -e 's% \([[^ $]]*\).ltframework% -framework \1%g'`
new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([[^ $]]*\).ltframework% -framework \1%g'`
deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([[^ $]]*\).ltframework% -framework \1%g'`
;;
esac
@ -6434,7 +6441,7 @@ library_names='$library_names'
old_library='$old_library'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags='$inherited_linker_flags'
inherited_linker_flags='$new_inherited_linker_flags'
# Libraries that this one depends upon.
dependency_libs='$dependency_libs'

View File

@ -24,7 +24,8 @@
TESTSUITE = testsuite
TESTSUITE_AT = testsuite.at \
am-subdir.at \
functests.at
functests.at \
inherited_flags.at
EXTRA_DIST = $(TESTSUITE) $(TESTSUITE_AT) package.m4

65
tests/inherited_flags.at Normal file
View File

@ -0,0 +1,65 @@
# Hand crafted tests for GNU Libtool. -*- Autotest -*-
# Copyright 2004 Free Software Foundation, Inc.
# This program 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, or (at your option)
# any later version.
# This program 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 this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
AT_SETUP([inherited_linker_flags])
: ${LIBTOOL=$abs_top_builddir/libtool}
AT_DATA([foo.c],
[
int foo() { return 1;}
])
AT_DATA([bar.c],
[
int bar() { return 1;}
])
AT_DATA([baz.c],
[
int baz() { return 1;}
])
AT_DATA([main.c],
[
int main() { return 0;}
])
eval `$LIBTOOL --config | grep ^CC`
${LIBTOOL} --mode=compile --tag=CC $CC -c -o foo.lo foo.c
${LIBTOOL} --mode=compile --tag=CC $CC -c -o bar.lo bar.c
${LIBTOOL} --mode=compile --tag=CC $CC -c -o baz.lo baz.c
${LIBTOOL} --mode=compile --tag=CC $CC -c -o main.lo main.c
${LIBTOOL} --mode=link --tag=CC $CC -o libfoo.la foo.lo -rpath /usr/local/lib
${LIBTOOL} --mode=link --tag=CC $CC -o libbar.la bar.lo -rpath /usr/local/lib
mv libfoo.la libfoo.la.bak
sed -e 's/^inherited_linker_flags.*/inherited_linker_flags=-llt_inlikely_existing_lib/g' < libfoo.la.bak > libfoo.la
rm libfoo.la.bak
mv libbar.la libbar.la.bak
sed -e 's/^inherited_linker_flags.*/inherited_linker_flags=-llt_unlikely_existing_lib/g' < libbar.la.bak > libbar.la
rm libbar.la.bak
AT_CHECK([${LIBTOOL} --mode=link --tag=CC $CC -o libbaz.la baz.lo -rpath /usr/local/lib ./libfoo.la ./libbar.la | grep 'llt_[[ui]]nlikely_existing_lib.*llt_[[ui]]nlikely_existing_lib'],[0],[ignore],[ignore])
AT_CHECK([${LIBTOOL} --mode=link --tag=CC $CC -o main main.lo -rpath /usr/local/lib ./libfoo.la ./libbar.la | grep 'llt_[[ui]]nlikely_existing_lib.*llt_[[ui]]nlikely_existing_lib'],[0],[ignore],[ignore])
AT_CLEANUP

View File

@ -62,4 +62,7 @@ AT_INIT
# Torturing subdir-objects builds
m4_include([am-subdir.at])
# Testing func_extract_archives
m4_include([functests.at])
# Test that inherited_linker_flags in the .la actually gets used.
m4_include([inherited_flags.at])