blob: 3efc69d8ba039222d4499702c1c012a148fb1b64 [file] [log] [blame]
## Makefile for Bison testsuite.
## Copyright (C) 2000-2015, 2018-2021 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 3 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, see <https://www.gnu.org/licenses/>.
EXTRA_DIST += \
%D%/README.md %D%/linear \
$(TESTSUITE_AT) %D%/testsuite %D%/testsuite.h
DISTCLEANFILES += %D%/atconfig $(check_SCRIPTS)
MAINTAINERCLEANFILES += $(TESTSUITE)
## ------------ ##
## package.m4. ##
## ------------ ##
$(top_srcdir)/%D%/package.m4: $(top_srcdir)/configure
$(AM_V_GEN)rm -f $@ $@.tmp
$(AM_V_at){ \
echo '# Signature of the current package.'; \
echo 'm4_define([AT_PACKAGE_NAME], [$(PACKAGE_NAME)])'; \
echo 'm4_define([AT_PACKAGE_TARNAME], [$(PACKAGE_TARNAME)])'; \
echo 'm4_define([AT_PACKAGE_VERSION], [$(PACKAGE_VERSION)])'; \
echo 'm4_define([AT_PACKAGE_STRING], [$(PACKAGE_STRING)])'; \
echo 'm4_define([AT_PACKAGE_BUGREPORT], [$(PACKAGE_BUGREPORT)])'; \
} >$@.tmp
$(AM_V_at)mv $@.tmp $@
# Update the test cases. Consider the latest test results to be the
# correct expectations, and change the test cases to match them.
.PHONY: update-tests
update-tests:
$(AM_V_GEN)cd $(top_srcdir) \
&& build-aux/update-test $(abs_builddir)/%D%/testsuite.dir/*/testsuite.log
## ------------------------- ##
## Generate the test suite. ##
## ------------------------- ##
TESTSUITE_AT = \
%D%/testsuite.at \
\
%D%/actions.at \
%D%/c++.at \
%D%/calc.at \
%D%/conflicts.at \
%D%/counterexample.at \
%D%/cxx-type.at \
%D%/d.at \
%D%/diagnostics.at \
%D%/existing.at \
%D%/glr-regression.at \
%D%/headers.at \
%D%/input.at \
%D%/java.at \
%D%/javapush.at \
%D%/local.at \
%D%/m4.at \
%D%/named-refs.at \
%D%/output.at \
%D%/package.m4 \
%D%/push.at \
%D%/reduce.at \
%D%/regression.at \
%D%/report.at \
%D%/scanner.at \
%D%/sets.at \
%D%/skeletons.at \
%D%/synclines.at \
%D%/torture.at \
%D%/types.at
TESTSUITE = $(top_srcdir)/%D%/testsuite
AUTOTEST = $(AUTOM4TE) --language=autotest
AUTOTESTFLAGS = -I $(top_srcdir)/%D%
$(TESTSUITE): $(TESTSUITE_AT)
$(AM_V_GEN) \
$(AUTOTEST) $(AUTOTESTFLAGS) $(srcdir)/%D%/testsuite.at -o $@.tmp
$(AM_V_at)"$(PERL)" -pi -e 's/\@tb\@/\t/g' $@.tmp
$(AM_V_at)mv $@.tmp $@
## -------------------- ##
## Run the test suite. ##
## -------------------- ##
# Move into %D%/ so that testsuite.dir etc. be created there.
RUN_TESTSUITE = $(SHELL) $(TESTSUITE) -C %D% $(TESTSUITEFLAGS)
check_SCRIPTS += $(BISON) %D%/atconfig %D%/atlocal
RUN_TESTSUITE_deps = all $(TESTSUITE) $(check_SCRIPTS)
clean-local: clean-local-tests
clean-local-tests:
test ! -f $(TESTSUITE) || $(TESTSUITE) -C %D% --clean
.PHONY: recheck
recheck: $(RUN_TESTSUITE_deps)
$(RUN_TESTSUITE) \
$$(perl -n \
-e 'eof && /^(\d+).*: FAILED/ && print "$$1 "' \
%D%/testsuite.dir/*/testsuite.log)
check-local: check-tests
.PHONY: check-tests
check-tests: $(RUN_TESTSUITE_deps)
$(RUN_TESTSUITE)
# Run the test suite on the *installed* tree.
installcheck-local: $(RUN_TESTSUITE_deps)
$(RUN_TESTSUITE) AUTOTEST_PATH='$(bindir)'
# Be real mean with it.
.PHONY: maintainer-check-g++
maintainer-check-g++: $(RUN_TESTSUITE_deps)
$(RUN_TESTSUITE) --compile-c-with-cxx
.PHONY: maintainer-check-posix
maintainer-check-posix: $(RUN_TESTSUITE_deps)
$(RUN_TESTSUITE) POSIXLY_CORRECT=1 _POSIX2_VERSION=200112
.PHONY: maintainer-check-valgrind
VALGRIND_OPTS = --leak-check=full --show-reachable=yes --gen-suppressions=all \
$(VALGRIND_OPTS_SUPPRESSION)
maintainer-check-valgrind: $(RUN_TESTSUITE_deps)
test 'x$(VALGRIND)' = x || \
$(RUN_TESTSUITE) \
PREBISON='$(VALGRIND) -q' PREPARSER='$(VALGRIND) -q' \
VALGRIND_OPTS="$(VALGRIND_OPTS)"
.PHONY: maintainer-check
maintainer-check: maintainer-check-posix maintainer-check-valgrind maintainer-check-g++
.PHONY: maintainer-check-push
maintainer-check-push:
$(MAKE) $(AM_MAKEFLAGS) maintainer-check \
TESTSUITEFLAGS='BISON_USE_PUSH_FOR_PULL=1 $(TESTSUITEFLAGS)'
.PHONY: maintainer-check-xml
maintainer-check-xml:
$(MAKE) $(AM_MAKEFLAGS) maintainer-check \
TESTSUITEFLAGS='BISON_TEST_XML=1 $(TESTSUITEFLAGS)'
.PHONY: maintainer-check-release
maintainer-check-release: maintainer-check maintainer-check-push maintainer-check-xml