Ensure that the C++ compiler used for testing actually works on a

simple test program; if not, skip the C++-related tests.
This commit is contained in:
Paul Eggert
2004-05-24 06:58:02 +00:00
parent 383e69dc79
commit 209ea708c4
5 changed files with 67 additions and 5 deletions

View File

@@ -1,3 +1,15 @@
2004-05-23 Paul Eggert <eggert@cs.ucla.edu>
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 <eggert@cs.ucla.edu>
* data/glr.c (yylloc): Output this macro even if locations are not

View File

@@ -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])

46
m4/cxx.m4 Normal file
View File

@@ -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 <eggert@cs.ucla.edu>.
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 <iostream>
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])
])

View File

@@ -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@'

View File

@@ -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])])