diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2015-01-19 17:00:04 +0000 |
---|---|---|
committer | <> | 2015-01-30 17:22:40 +0000 |
commit | f7bbc21981ffdbbe2d4435556e3ead0828dce160 (patch) | |
tree | deaf72f9932c2e339bc6f981eb3719b85a413b02 /tests/flags.at | |
download | libtool-tarball-f7bbc21981ffdbbe2d4435556e3ead0828dce160.tar.gz |
Imported from /home/lorry/working-area/delta_libtool-tarball/libtool-2.4.5.tar.gz.libtool-2.4.5
Diffstat (limited to 'tests/flags.at')
-rw-r--r-- | tests/flags.at | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/flags.at b/tests/flags.at new file mode 100644 index 0000000..2789b13 --- /dev/null +++ b/tests/flags.at @@ -0,0 +1,116 @@ +# flags.at -- libtool passing of flags -*- Autotest -*- +# +# Copyright (C) 2009-2015 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; 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. +#### + +m4_foreach([lt_tag], [CC, CXX, F77, FC, GCJ], +[AT_SETUP([passing lt_tag flags through libtool]) +AT_KEYWORDS([libtool]) +LT_AT_TAG(m4_defn([lt_tag])) + +LDFLAGS="$LDFLAGS -no-undefined" +eval "`$LIBTOOL --config | $EGREP '^(FGREP)='`" + +m4_case(lt_tag, +[CC], [AT_DATA([a.c], +[[int main () { return 0; } +]]) +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 +]]) +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 + library_and_module='library.la "module.la -module -avoid-version"' +else + library_and_module= +fi + +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= compiler_flags_in_liblink=false ;; +*) maybe_wl=$wl compiler_flags_in_liblink=: ;; +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_prog= + flag_prefix_lib= + flags_in_liblink=$compiler_flags_in_liblink + ;; + -Wl, | -Xlinker\ ) + flag_prefix_prog=$wl + flag_prefix_lib=$maybe_wl + flags_in_liblink=: + ;; + esac + + AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=link $link ]dnl + [-o program$EXEEXT a.lo $flag-foo], [], [stdout], [ignore]) + AT_CHECK([$FGREP " $flag_prefix_prog-foo" stdout], [], [ignore]) + + eval set x "$library_and_module" + for output + do + test x = "$output" && continue + AT_CHECK([$LIBTOOL -n --tag=lt_tag --mode=link $link ]dnl + [-o $output a.lo -rpath /nowhere $flag-foo], [], [stdout], [ignore]) + if $flags_in_liblink; then + AT_CHECK([$FGREP " $flag_prefix_lib-foo" stdout], [], [ignore]) + else + AT_CHECK([$FGREP " $flag_prefix_lib-foo" stdout], [1]) + fi + done +done + +AT_CLEANUP +])dnl m4_foreach(tag) |