mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 00:03:03 +00:00
Merge remote-tracking branch 'origin/maint'
* origin/maint: maint: update gnu-web-doc-update. maint: post-release administrivia version 2.6 maint: prepare for release 2.6 maint: post-release administrivia version 2.5.91 maint: prepare NEWS. maint: fix spaces. tests: adjust to case where the C compiler is actually a C++ compiler tests: fix dependencies doc: fix Texinfo command maint: Valgrind on OS X. tests: be sure that backups are safe. maint: dead comment. tests: refactor for legibility. tests: refactor the bison invocations. maint: fix syntax-check ignore patterns. gnulib: update gnulib: update. gnulib: update Conflicts: build-aux/Makefile.am cfg.mk tests/Makefile.am
This commit is contained in:
@@ -49,10 +49,13 @@ BISON_CXX_WORKS='@BISON_CXX_WORKS@'
|
||||
|
||||
# Handle --compile-c-with-cxx here, once CXX and CXXFLAGS are known.
|
||||
if "$at_arg_compile_c_with_cxx"; then
|
||||
CC_IS_CXX=1
|
||||
CC=$CXX
|
||||
O0CFLAGS=$O0CXXFLAGS
|
||||
NO_WERROR_CFLAGS=$NO_WERROR_CXXFLAGS
|
||||
CFLAGS=$CXXFLAGS
|
||||
else
|
||||
CC_IS_CXX=0
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -183,8 +183,12 @@ AT_BISON_OPTION_POPDEFS
|
||||
|
||||
AT_DATA([main.cc],
|
||||
[AT_DATA_SOURCE_PROLOGUE
|
||||
[extern "C"
|
||||
[// If we are compiling with CC=$CXX, then do not load the C headers
|
||||
// inside extern "C", since they were _not_ compiled this way.
|
||||
#if ! CC_IS_CXX
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
#include "x1.h"
|
||||
#include "x2.h"
|
||||
#include "x3.h"
|
||||
@@ -192,7 +196,9 @@ AT_DATA([main.cc],
|
||||
#include "x6.h"
|
||||
#include "x7.h"
|
||||
#include "x8.h"
|
||||
#if ! CC_IS_CXX
|
||||
}
|
||||
#endif
|
||||
#include "x5.hh"
|
||||
//#include "x6.hh"
|
||||
|
||||
@@ -231,7 +237,7 @@ AT_TEST([x7], [%define api.push-pull both])
|
||||
AT_TEST([x8], [%define api.pure %define api.push-pull both])
|
||||
#AT_TEST([x5], [%locations %language "c++" %glr-parser])
|
||||
|
||||
AT_COMPILE_CXX([parser], [[x[1-8].o main.cc]])
|
||||
AT_COMPILE_CXX([parser], [[x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc]])
|
||||
AT_CHECK([./parser], [0], [[expout]])
|
||||
|
||||
m4_popdef([AT_TEST])
|
||||
|
||||
@@ -20,6 +20,15 @@
|
||||
m4_version_prereq([2.58])
|
||||
|
||||
|
||||
# m4_null_if(VAL, IF-TRUE, IF-FALSE)
|
||||
# ----------------------------------
|
||||
# If VAL evaluates to empty or 0, run IF-TRUE, otherwise IF-FALSE.
|
||||
m4_define([m4_null_if],
|
||||
[m4_case(m4_quote($1),
|
||||
[0], [$2],
|
||||
[], [$2],
|
||||
[$3])])
|
||||
|
||||
## ------------- ##
|
||||
## Basic tests. ##
|
||||
## ------------- ##
|
||||
@@ -44,6 +53,8 @@ m4_divert_text([PREPARE_TESTS],
|
||||
{
|
||||
for at_save_file in stderr experr expout
|
||||
do
|
||||
test ! -f at-bison-check-$at_save_file.bak ||
|
||||
as_fn_error 1 "fatal error: back-up on top of a back-up"
|
||||
test ! -f $at_save_file || mv $at_save_file at-bison-check-$at_save_file.bak
|
||||
done
|
||||
}
|
||||
@@ -407,6 +418,9 @@ void
|
||||
|
||||
# AT_BISON_CHECK(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# -------------------------------------------------
|
||||
# High-level routine that may call bison several times, under different
|
||||
# conditions.
|
||||
#
|
||||
# Check Bison by invoking `bison BISON_ARGS'. BISON_ARGS should not contain
|
||||
# shell constructs (such as redirection or pipes) that would prevent
|
||||
# appending additional command-line arguments for bison. OTHER_AT_CHECK_ARGS
|
||||
@@ -427,24 +441,30 @@ void
|
||||
#
|
||||
# 4. If stderr contains a warning, -Wnone and --warnings=none suppress it.
|
||||
m4_define([AT_BISON_CHECK],
|
||||
[m4_if(m4_quote($2), [0], [AT_BISON_CHECK_XML($@)],
|
||||
m4_quote($2), [], [AT_BISON_CHECK_XML($@)])
|
||||
[m4_null_if([$2], [AT_BISON_CHECK_XML($@)])
|
||||
AT_BISON_CHECK_NO_XML($@)])
|
||||
|
||||
m4_define([AT_BISON_WERROR_MSG],
|
||||
[[bison: warnings being treated as errors]])
|
||||
|
||||
# AT_BISON_CHECK_NO_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# --------------------------------------------------------
|
||||
# Same as AT_BISON_CHECK except don't perform XML/XSLT checks. This is useful
|
||||
# when a tortured grammar's XML is known to be too large for xsltproc to
|
||||
# handle.
|
||||
m4_define([AT_BISON_CHECK_NO_XML],
|
||||
[AT_CHECK(m4_if(m4_quote($2), [0], [], m4_quote($2), [], [],
|
||||
[AT_QUELL_VALGRIND ])[[bison ]]$@)
|
||||
m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
||||
m4_quote(m4_if(m4_quote($2), [], [0], [$2])), [0], [[
|
||||
# Defining POSIXLY_CORRECT causes bison to complain if options
|
||||
|
||||
# AT_BISON_CHECK_(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# --------------------------------------------------
|
||||
# Low-level macro to run bison once.
|
||||
m4_define([AT_BISON_CHECK_],
|
||||
[AT_CHECK(AT_QUELL_VALGRIND[[ bison ]]$@)])
|
||||
|
||||
|
||||
# AT_BISON_CHECK_WARNINGS(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# ----------------------------------------------------------
|
||||
# Check that warnings (if some are expected) are correctly
|
||||
# turned into errors with -Werror, etc.
|
||||
m4_define([AT_BISON_CHECK_WARNINGS],
|
||||
[m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
||||
[m4_null_if([$2], [AT_BISON_CHECK_WARNINGS_($@)])])])
|
||||
|
||||
m4_define([AT_BISON_CHECK_WARNINGS_],
|
||||
[[# Defining POSIXLY_CORRECT causes bison to complain if options
|
||||
# are added after the grammar file name, so skip these checks
|
||||
# in that case.
|
||||
if test -z "${POSIXLY_CORRECT+set}"; then
|
||||
@@ -454,8 +474,7 @@ m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
||||
]AT_DATA([expout], [$3])[
|
||||
|
||||
# Run with -Werror.
|
||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ -Werror]],
|
||||
[[1]], [expout], [stderr])[
|
||||
]AT_BISON_CHECK_([$1[ -Werror]], [[1]], [expout], [stderr])[
|
||||
|
||||
# Build expected stderr up to and including the "warnings being
|
||||
# treated as errors" message.
|
||||
@@ -489,22 +508,27 @@ m4_if(m4_bregexp([$4], [: warning: ]), [-1], [],
|
||||
|
||||
# Now check --warnings=error.
|
||||
cp stderr experr
|
||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ --warnings=error]],
|
||||
[[1]], [expout], [experr])[
|
||||
]AT_BISON_CHECK_([$1[ --warnings=error]], [[1]], [expout], [experr])[
|
||||
|
||||
# Now check -Wnone and --warnings=none by making sure that
|
||||
# -Werror doesn't change the exit status when -Wnone or
|
||||
# --warnings=none is specified.
|
||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ -Wnone -Werror]],
|
||||
[[0]], [expout])[
|
||||
]AT_CHECK(AT_QUELL_VALGRIND[[ bison ]$1[ --warnings=none \
|
||||
-Werror]], [[0]], [expout])[
|
||||
]AT_BISON_CHECK_([$1[ -Wnone -Werror]], [[0]], [expout])[
|
||||
]AT_BISON_CHECK_([$1[ --warnings=none -Werror]], [[0]], [expout])[
|
||||
|
||||
]AT_RESTORE_SPECIAL_FILES[
|
||||
fi
|
||||
]])
|
||||
fi]dnl
|
||||
])
|
||||
|
||||
# AT_BISON_CHECK_NO_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# --------------------------------------------------------
|
||||
# Same as AT_BISON_CHECK except don't perform XML/XSLT checks. This is useful
|
||||
# when a tortured grammar's XML is known to be too large for xsltproc to
|
||||
# handle.
|
||||
m4_define([AT_BISON_CHECK_NO_XML],
|
||||
[AT_CHECK(m4_null_if([$2], [], [AT_QUELL_VALGRIND ])[[bison ]]$@)
|
||||
AT_BISON_CHECK_WARNINGS($@)])
|
||||
|
||||
# AT_BISON_CHECK_XML(BISON_ARGS, [OTHER_AT_CHECK_ARGS])
|
||||
# -----------------------------------------------------
|
||||
# Run AT_BISON_CHECK's XML/XSLT checks if $BISON_TEST_XML=1 and $XSLTPROC is
|
||||
@@ -521,10 +545,10 @@ m4_define([AT_BISON_CHECK_XML],
|
||||
[--xml=[^][ ]*], [])])dnl
|
||||
# Don't combine these Bison invocations since we want to be sure that
|
||||
# --report=all isn't required to get the full XML file.
|
||||
AT_CHECK([[bison --report=all --report-file=xml-tests/test.output \
|
||||
AT_BISON_CHECK_([[--report=all --report-file=xml-tests/test.output \
|
||||
--graph=xml-tests/test.dot ]]AT_BISON_ARGS,
|
||||
[[0]], [ignore], [ignore])
|
||||
AT_CHECK([[bison --xml=xml-tests/test.xml ]]AT_BISON_ARGS,
|
||||
AT_BISON_CHECK_([[--xml=xml-tests/test.xml ]]AT_BISON_ARGS,
|
||||
[[0]], [ignore], [ignore])
|
||||
m4_popdef([AT_BISON_ARGS])dnl
|
||||
[cp xml-tests/test.output expout]
|
||||
@@ -553,6 +577,8 @@ m4_define([AT_BISON_CHECK_XML],
|
||||
m4_define([AT_QUELL_VALGRIND],
|
||||
[[[VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS;]]])
|
||||
|
||||
|
||||
|
||||
## ------------------------ ##
|
||||
## Compiling C, C++ Files. ##
|
||||
## ------------------------ ##
|
||||
|
||||
@@ -108,7 +108,7 @@ maintainer-check-posix: $(RUN_TESTSUITE_deps)
|
||||
maintainer-check-valgrind: $(RUN_TESTSUITE_deps)
|
||||
test -z '$(VALGRIND)' || \
|
||||
$(RUN_TESTSUITE) \
|
||||
PREBISON='$(VALGRIND) -q' PREPARSER='$(VALGRIND) -q' \
|
||||
PREBISON='$(VALGRIND_PREBISON)' PREPARSER='$(VALGRIND) -q' \
|
||||
VALGRIND_OPTS='--leak-check=full --show-reachable=yes'
|
||||
|
||||
.PHONY: maintainer-check
|
||||
|
||||
Reference in New Issue
Block a user