From: Noah Misch Date: Thu, 26 Apr 2007 22:34:05 +0000 (+0000) Subject: * tests/ctor.at: New file. X-Git-Tag: release-2-1b~133 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e56ae3e8a248ab489849f2ba893e0ce53e9cca6f;p=thirdparty%2Flibtool.git * tests/ctor.at: New file. * Makefile.am (TESTSUITE_AT): Add tests/ctor.at. --- diff --git a/ChangeLog b/ChangeLog index aa72f63b2..263876d17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-04-27 Noah Misch + + * tests/ctor.at: New file. + * Makefile.am (TESTSUITE_AT): Add tests/ctor.at. + 2007-04-27 Charles Wilson * libltdl/libltdl/lt__glibc.h: Use !HAVE_WORKING_ARGZ diff --git a/Makefile.am b/Makefile.am index 15504ba3d..c29166e8b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -448,6 +448,7 @@ TESTSUITE_AT = tests/testsuite.at \ tests/nonrecursive.at \ tests/recursive.at \ tests/template.at \ + tests/ctor.at \ tests/early-libtool.at \ tests/deplibs-ident.at \ tests/stresstest.at \ diff --git a/tests/ctor.at b/tests/ctor.at new file mode 100644 index 000000000..7d701a4a8 --- /dev/null +++ b/tests/ctor.at @@ -0,0 +1,67 @@ +# ctor.at -- Test constructors via C++ -*- Autotest -*- +# +# Copyright (C) 2007 Free Software Foundation, Inc. +# Written by Noah Misch, 2007 +# +# 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_BANNER([Constructors.]) + +AT_SETUP([C++ static constructors]) +LT_AT_TAG([CXX]) +AT_KEYWORDS([libtool]) + +AT_DATA(class.h, +[[#define magic 0xaabbccdd +class Foo { +public: + Foo() { bar = magic; } + unsigned bar; +}; + +extern Foo instance; +]]) + +AT_DATA(libctor.cpp, +[[#include "class.h" +Foo instance; +]]) + +AT_DATA(main.cpp, +[[#include "class.h" + +int main(int argc, char **argv) +{ + return instance.bar != magic; +} +]]) + +AT_CHECK([$LIBTOOL --tag=CXX --mode=compile $CXX $CPPFLAGS $CXXFLAGS \ + -c libctor.cpp -o libctor.lo], [0], [ignore], [ignore]) +AT_CHECK([$LIBTOOL --tag=CXX --mode=compile $CXX $CPPFLAGS $CXXFLAGS \ + -c main.cpp -o main.lo], [0], [ignore], [ignore]) +AT_CHECK([$LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS $LDFLAGS \ + libctor.lo -o libctor.la -rpath /none], [0], [ignore], [ignore]) +AT_CHECK([$LIBTOOL --tag=CXX --mode=link $CXX $CXXFLAGS $LDFLAGS \ + main.lo libctor.la -o main], [0], [ignore], [ignore]) + +LT_AT_EXEC_CHECK([./main], [0]) + +AT_CLEANUP