From 209ea708c46245d853b73ca32c0c96375ae40b9f Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 24 May 2004 06:58:02 +0000 Subject: [PATCH] Ensure that the C++ compiler used for testing actually works on a simple test program; if not, skip the C++-related tests. --- ChangeLog | 12 ++++++++++++ configure.ac | 1 + m4/cxx.m4 | 46 ++++++++++++++++++++++++++++++++++++++++++++++ tests/atlocal.in | 7 +++++-- tests/local.at | 6 +++--- 5 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 m4/cxx.m4 diff --git a/ChangeLog b/ChangeLog index 5d7cab01..87f9f881 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2004-05-23 Paul Eggert + + Ensure that the C++ compiler used for testing actually works on a + simple test program; if not, skip the C++-related tests. Problem + reported by Vin Shelton in: + http://mail.gnu.org/archive/html/bug-bison/2004-05/msg00026.html + + * m4/cxx.m4: New file. + * configure.ac (BISON_TEST_FOR_WORKING_CXX_COMPILER): Add. + * tests/atlocal.in (BISON_CXX_WORKS): Add. + * tests/local.at (AT_COMPILE_CXX): Use it. + 2004-05-21 Paul Eggert * data/glr.c (yylloc): Output this macro even if locations are not diff --git a/configure.ac b/configure.ac index f12c7774..866edfe6 100644 --- a/configure.ac +++ b/configure.ac @@ -111,6 +111,7 @@ AC_CONFIG_FILES([tests/Makefile tests/atlocal]) AC_CONFIG_FILES([tests/bison], [chmod +x tests/bison]) AC_CHECK_PROGS([VALGRIND], [valgrind]) AC_PROG_CXX +BISON_TEST_FOR_WORKING_CXX_COMPILER AM_MISSING_PROG([AUTOM4TE], [autom4te]) # Needed by tests/atlocal.in. AC_SUBST([GCC]) diff --git a/m4/cxx.m4 b/m4/cxx.m4 new file mode 100644 index 00000000..1d17e836 --- /dev/null +++ b/m4/cxx.m4 @@ -0,0 +1,46 @@ +# -*- Autoconf -*- +# Sanity-test a C++ compiler. +# +# Copyright (C) 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 of the License, 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 + +# Written by Paul Eggert . + +AC_DEFUN([BISON_TEST_FOR_WORKING_CXX_COMPILER], +[ + AC_CACHE_CHECK([whether $CXX builds executables that work], + bison_cv_cxx_works, + [AC_LANG_PUSH([C++]) + AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [#include + using namespace std;], + [cout << "";])], + [bison_cv_cxx_works=yes], + [bison_cv_cxx_works=no], + [bison_cv_cxx_works=cross]) + AC_LANG_POP([C++])]) + + case $bison_cv_cxx_works in + yes) + BISON_CXX_WORKS=':';; + no | cross) + BISON_CXX_WORKS='exit 77';; + esac + + AC_SUBST([BISON_CXX_WORKS]) +]) diff --git a/tests/atlocal.in b/tests/atlocal.in index ac647c0e..54c65b14 100644 --- a/tests/atlocal.in +++ b/tests/atlocal.in @@ -1,6 +1,6 @@ # @configure_input@ -*- shell-script -*- # Configurable variable values for Bison test suite. -# Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. # We need a C compiler. CC='@CC@' @@ -14,9 +14,12 @@ CPPFLAGS="-DHAVE_CONFIG_H=1 -I$abs_top_builddir @CPPFLAGS@" # Is the compiler GCC? GCC='@GCC@' -# The GCC C++ compiler. +# The C++ compiler. CXX='@CXX@' +# If 'exit 77'; skip all C++ tests; otherwise ':'. +BISON_CXX_WORKS='@BISON_CXX_WORKS@' + # We want no optimization with C++, too. CXXFLAGS='@O0CFLAGS@ @WARNING_CXXFLAGS@ @WERROR_CFLAGS@' diff --git a/tests/local.at b/tests/local.at index 7ff9f3b4..aba19079 100644 --- a/tests/local.at +++ b/tests/local.at @@ -1,7 +1,7 @@ # Process this -*- Autotest -*- file with autom4te. # Macros for the GNU Bison Test suite. -# Copyright (C) 2003 Free Software Foundation, Inc. +# Copyright (C) 2003, 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 @@ -175,10 +175,10 @@ m4_define([AT_COMPILE], # AT_COMPILE_CXX(OUTPUT, [SOURCES = OUTPUT.c]) # -------------------------------------------- -# If the C++ compiler is not defined, ignore the test. +# If the C++ compiler does not work, ignore the test. m4_define([AT_COMPILE_CXX], [AT_KEYWORDS(c++) -AT_CHECK([$CXX --version || exit 77], 0, ignore, ignore) +AT_CHECK([$BISON_CXX_WORKS], 0, ignore, ignore) AT_CHECK([$CXX $CXXFLAGS $CPPFLAGS m4_default([$2], [$1.c]) -o $1], 0, [ignore], [ignore])]) -- 2.45.2