mirror of
git://git.savannah.gnu.org/libtool.git
synced 2025-01-24 14:24:59 +08:00
Fix and split recent testsuite addition for compile/link flags.
* tests/flags.at (passing flags through libtool): Split into ... (passing CC flags through libtool) (passing CXX flags through libtool) (passing F77 flags through libtool) (passing FC flags through libtool) (passing GCJ flags through libtool): ... these five tests, factorized with m4_foreach. Fix F77 and FC compile and link commands; add GCJ tag. Use LT_AT_TAG to correctly skip tags for which no compiler exists. Use $EXEEXT where appropriate. Drop unneeded use of reload_cmds. Reports by Peter Rosin and Peter O'Gorman. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
This commit is contained in:
parent
91697c2092
commit
1e4e1984b0
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
2009-09-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
Fix and split recent testsuite addition for compile/link flags.
|
||||
* tests/flags.at (passing flags through libtool): Split into ...
|
||||
(passing CC flags through libtool)
|
||||
(passing CXX flags through libtool)
|
||||
(passing F77 flags through libtool)
|
||||
(passing FC flags through libtool)
|
||||
(passing GCJ flags through libtool): ... these five tests,
|
||||
factorized with m4_foreach. Fix F77 and FC compile and link
|
||||
commands; add GCJ tag. Use LT_AT_TAG to correctly skip tags
|
||||
for which no compiler exists. Use $EXEEXT where appropriate.
|
||||
Drop unneeded use of reload_cmds.
|
||||
Reports by Peter Rosin and Peter O'Gorman.
|
||||
|
||||
2009-09-07 Peter O'Gorman <peter@pogma.com
|
||||
|
||||
Fix redirect in test case.
|
||||
|
105
tests/flags.at
105
tests/flags.at
@ -21,24 +21,42 @@
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
####
|
||||
|
||||
AT_SETUP([passing flags through libtool])
|
||||
m4_foreach([lt_tag], [CC, CXX, F77, FC, GCJ],
|
||||
[AT_SETUP([passing lt_tag flags through libtool])
|
||||
AT_KEYWORDS([libtool])
|
||||
AT_KEYWORDS([CXX F77 FC])
|
||||
LT_AT_TAG([lt_tag])
|
||||
|
||||
LDFLAGS="$LDFLAGS -no-undefined"
|
||||
eval "`$LIBTOOL --config | $EGREP '^(FGREP)='`"
|
||||
|
||||
AT_DATA([a.c],
|
||||
m4_case(lt_tag,
|
||||
[CC], [AT_DATA([a.c],
|
||||
[[int main () { return 0; }
|
||||
]])
|
||||
|
||||
AT_DATA([a.f],
|
||||
compile="$CC $CPPFLAGS $CFLAGS" link="$CC $CFLAGS $LDFLAGS" source=a.c
|
||||
],
|
||||
[CXX], [AT_DATA([a.cpp],
|
||||
[[int main () { return 0; }
|
||||
]])
|
||||
compile="$CXX $CPPFLAGS $CXXFLAGS" link="$CXX $CXXFLAGS $LDFLAGS" source=a.cpp
|
||||
],
|
||||
[F77], [AT_DATA([a.f],
|
||||
[[ program main
|
||||
end
|
||||
]])
|
||||
|
||||
cp a.c a.cpp
|
||||
cp a.f a.f90
|
||||
compile="$F77 $FFLAGS" link="$F77 $FFLAGS $LDFLAGS" source=a.f
|
||||
],
|
||||
[FC], [AT_DATA([a.f90],
|
||||
[[ program main
|
||||
end
|
||||
]])
|
||||
compile="$FC $FCFLAGS" link="$FC $FCFLAGS $LDFLAGS" source=a.f90
|
||||
],
|
||||
[GCJ], [AT_DATA([a.java],
|
||||
[[class a {}
|
||||
]])
|
||||
compile="$GCJ $GCJFLAGS" link="$GCJ $GCJFLAGS $LDFLAGS" source=a.java
|
||||
])
|
||||
|
||||
# Linker flags are not passed to the archiver, so don't test static libraries.
|
||||
if $LIBTOOL --features | grep 'enable shared libraries'; then
|
||||
@ -47,50 +65,39 @@ else
|
||||
library_and_module=
|
||||
fi
|
||||
|
||||
for tag in CC CXX F77 FC; do
|
||||
if $LIBTOOL --tag=$tag 2>&1 | grep 'unknown tag'; then
|
||||
continue
|
||||
fi
|
||||
case $tag in
|
||||
CC) compile="$CC $CPPFLAGS $CFLAGS" link="$CC $CFLAGS $LDFLAGS" source=a.c ;;
|
||||
CXX) compile="$CXX $CPPFLAGS $CXXFLAGS" link="$CXX $CXXFLAGS $LDFLAGS" source=a.cpp;;
|
||||
F77) compile="$CC $CPPFLAGS $CFLAGS" link="$CC $CFLAGS $LDFLAGS" source=a.f ;;
|
||||
FC) compile="$CC $CPPFLAGS $CFLAGS" link="$CC $CFLAGS $LDFLAGS" source=a.f90 ;;
|
||||
eval "`$LIBTOOL --tag=lt_tag --config | $EGREP '^(wl|archive_cmds)='`"
|
||||
|
||||
AT_CHECK([$LIBTOOL --tag=lt_tag --mode=compile $compile -c $source],
|
||||
[], [ignore], [ignore])
|
||||
|
||||
# Linker flags are prefixed with ${wl} iff they are passed to the
|
||||
# compiler driver, instead of directly to the linker.
|
||||
case $archive_cmds in
|
||||
*\$LD*\$linker_flags*) maybe_wl= ;;
|
||||
*) maybe_wl=$wl ;;
|
||||
esac
|
||||
|
||||
for flag in -Wc, -Wl, '-Xcompiler ' '-Xlinker '; do
|
||||
case $flag in
|
||||
-Wc, | -Xcompiler\ )
|
||||
AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=compile $compile ]dnl
|
||||
[$flag-foo -c $source], [], [stdout], [ignore])
|
||||
AT_CHECK([$FGREP " -foo" stdout], [], [ignore])
|
||||
flag_prefix=
|
||||
;;
|
||||
-Wl, | -Xlinker\ )
|
||||
flag_prefix=$maybe_wl
|
||||
;;
|
||||
esac
|
||||
|
||||
eval "`$LIBTOOL --tag=$tag --config | $EGREP '^(wl|archive_cmds|reload_cmds)='`"
|
||||
|
||||
AT_CHECK([$LIBTOOL --tag=$tag --mode=compile $compile -c $source],
|
||||
[], [ignore], [ignore])
|
||||
|
||||
# Linker flags are prefixed with ${wl} iff they are passed to the
|
||||
# compiler driver, instead of directly to the linker.
|
||||
case $archive_cmds in
|
||||
*\$LD*\$linker_flags*) maybe_wl= ;;
|
||||
*) maybe_wl=$wl ;;
|
||||
esac
|
||||
|
||||
for flag in -Wc, -Wl, '-Xcompiler ' '-Xlinker '; do
|
||||
case $flag in
|
||||
-Wc, | -Xcompiler\ )
|
||||
AT_CHECK([$LIBTOOL -n --tag=$tag --mode=compile $compile ]dnl
|
||||
[$flag-foo -c $source], [], [stdout], [ignore])
|
||||
AT_CHECK([$FGREP " -foo" stdout], [], [ignore])
|
||||
flag_prefix=
|
||||
;;
|
||||
-Wl, | -Xlinker\ )
|
||||
flag_prefix=$maybe_wl
|
||||
;;
|
||||
esac
|
||||
|
||||
eval set program "$library_and_module"
|
||||
for output
|
||||
do
|
||||
AT_CHECK([$LIBTOOL -n --tag=$tag --mode=link $link ]dnl
|
||||
[-o $output a.lo -rpath /nowhere $flag-foo], [], [stdout], [ignore])
|
||||
AT_CHECK([$FGREP " $flag_prefix-foo" stdout], [], [ignore])
|
||||
done
|
||||
eval set program$EXEEXT "$library_and_module"
|
||||
for output
|
||||
do
|
||||
AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=link $link ]dnl
|
||||
[-o $output a.lo -rpath /nowhere $flag-foo], [], [stdout], [ignore])
|
||||
AT_CHECK([$FGREP " $flag_prefix-foo" stdout], [], [ignore])
|
||||
done
|
||||
done
|
||||
|
||||
AT_CLEANUP
|
||||
])dnl m4_foreach(tag)
|
||||
|
Loading…
Reference in New Issue
Block a user