From a4e69ccbedf7a684e1cd141f9a03e4aea176e8ec Mon Sep 17 00:00:00 2001 From: Charles Wilson Date: Thu, 22 Jan 2009 18:36:57 -0500 Subject: [PATCH] Add tests for cwrapper with -std=c89 and -std=c99 * tests/cwrapper.at: New file. * Makefile.am: Add tests/cwrapper.at. --- ChangeLog | 6 ++++ Makefile.am | 1 + tests/cwrapper.at | 82 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 tests/cwrapper.at diff --git a/ChangeLog b/ChangeLog index 410672bd..1c92883a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2009-01-23 Charles Wilson + + Add tests for cwrapper with -std=c89 and -std=c99 + * tests/cwrapper.at: New file. + * Makefile.am: Add tests/cwrapper.at. + 2009-01-22 Peter Rosin Unify line endings in localization test. diff --git a/Makefile.am b/Makefile.am index 7000090f..7a61846b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -467,6 +467,7 @@ TESTSUITE_AT = tests/testsuite.at \ tests/indirect_deps.at \ tests/archive-in-archive.at \ tests/execute-mode.at \ + tests/cwrapper.at \ tests/infer-tag.at \ tests/localization.at \ tests/install.at \ diff --git a/tests/cwrapper.at b/tests/cwrapper.at new file mode 100644 index 00000000..30e591ea --- /dev/null +++ b/tests/cwrapper.at @@ -0,0 +1,82 @@ +# cwrapper.at -- test cwrapper compliance with standards -*- Autotest -*- + +# Copyright (C) 2009 Free Software Foundation, Inc. +# Written by Charles Wilson, 2009 +# +# 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. +#### + +AT_SETUP([cwrapper for uninstalled executables]) +AT_KEYWORDS([libtool]) + +# make sure existing libtool is configured for shared libraries +AT_CHECK([$LIBTOOL --features | grep 'disable shared libraries' && exit 77], + [1], [ignore]) + +AT_DATA([trivial.c], +[[ +int main (void) +{ + return 0; +} +]]) +AT_DATA([liba.c], +[[int liba_func1 (int arg) +{ + return arg + 1; +} +]]) +AT_DATA([usea.c], +[[extern int liba_func1 (int arg); +int main (void) +{ + int a = 2; + int b = liba_func1 (a); + if (b == 3) return 0; + return 1; +} +]]) + +orig_CFLAGS=$CFLAGS +orig_LIBTOOL=$LIBTOOL +for restrictive_flags in '-std=c89 -Werror' '-std=c99 -Werror'; do + CFLAGS="$orig_CFLAGS $restrictive_flags" + sed "s/LTCFLAGS=.*/&' $restrictive_flags'/" < "$orig_LIBTOOL" > ./libtool + LIBTOOL=./libtool + + # make sure $restrictive_flags do not cause a failure + # themselves (e.g. because a non-gcc compiler doesn't + # understand them) + $LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c trivial.c || continue + + AT_CHECK([$LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c liba.c], + [], [ignore], [ignore]) + AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -version-info=0.0.0 -no-undefined -o liba.la -rpath /foo liba.lo], + [], [ignore], [ignore]) + AT_CHECK([test -f liba.la]) + + AT_CHECK([$CC $CPPFLAGS $CFLAGS -c usea.c], + [], [ignore], [ignore]) + AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o usea$EXEEXT usea.$OBJEXT liba.la], + [], [ignore], [ignore]) + LT_AT_EXEC_CHECK([./usea], [0], [ignore], [ignore], []) +done + +AT_CLEANUP +