190075Sobrien## See sim/Makefile.am.
290075Sobrien##
390075Sobrien## Copyright (C) 1997-2024 Free Software Foundation, Inc.
490075Sobrien##
590075Sobrien## This program is free software; you can redistribute it and/or modify
690075Sobrien## it under the terms of the GNU General Public License as published by
790075Sobrien## the Free Software Foundation; either version 3 of the License, or
890075Sobrien## (at your option) any later version.
990075Sobrien##
1090075Sobrien## This program is distributed in the hope that it will be useful,
1190075Sobrien## but WITHOUT ANY WARRANTY; without even the implied warranty of
1290075Sobrien## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1390075Sobrien## GNU General Public License for more details.
1490075Sobrien##
1590075Sobrien## You should have received a copy of the GNU General Public License
1690075Sobrien## along with this program.  If not, see <http://www.gnu.org/licenses/>.
1790075Sobrien
1890075Sobrien## Tweak the site.exp so it works with plain `runtest` from user.
1990075SobrienEXTRA_DEJAGNU_SITE_CONFIG = site-sim-config.exp
2090075Sobrien
2190075Sobrien# Custom verbose test variables that automake doesn't provide (yet?).
2290075SobrienAM_V_RUNTEST = $(AM_V_RUNTEST_@AM_V@)
2390075SobrienAM_V_RUNTEST_ = $(AM_V_RUNTEST_@AM_DEFAULT_V@)
2490075SobrienAM_V_RUNTEST_0 =  @echo "  RUNTEST  $(RUNTESTFLAGS) $*";
2590075SobrienAM_V_RUNTEST_1 =
2690075Sobrien
2790075Sobriensite-sim-config.exp: Makefile
2890075Sobrien	$(AM_V_GEN)( \
2990075Sobrien	echo "set SIM_PRIMARY_TARGET \"$(SIM_PRIMARY_TARGET)\""; \
3090075Sobrien	echo "set builddir \"$(builddir)\""; \
3190075Sobrien	echo "set srcdir \"$(srcdir)/testsuite\""; \
3290075Sobrien	$(foreach V,$(SIM_TOOLCHAIN_VARS),echo "set $(V) \"$($(V))\"";) \
3390075Sobrien	) > $@
3490075Sobrien
3590075SobrienDO_RUNTEST = \
3690075Sobrien	LC_ALL=C; export LC_ALL; \
3790075Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
3890075Sobrien	runtest=$(RUNTEST); \
3990075Sobrien	$$runtest $(RUNTESTFLAGS)
4090075Sobrien
4190075Sobrien# Ignore dirs that only contain configuration settings.
4290075Sobriencheck/./config/%.exp: ; @true
4390075Sobriencheck/config/%.exp: ; @true
4490075Sobriencheck/./lib/%.exp: ; @true
4590075Sobriencheck/lib/%.exp: ; @true
4690075Sobrien
4790075Sobriencheck/%.exp:
4890075Sobrien	$(AM_V_at)mkdir -p testsuite/$*
4990075Sobrien	$(AM_V_RUNTEST)$(DO_RUNTEST) --objdir testsuite/$* --outdir testsuite/$* $*.exp
5090075Sobrien
5190075Sobriencheck-DEJAGNU-parallel:
5290075Sobrien	$(AM_V_at)( \
5390075Sobrien	set -- `cd $(srcdir)/testsuite && find . -name '*.exp' -printf '%P\n' | sed 's:[.]exp$$::'`; \
5490075Sobrien	$(MAKE) -k `printf 'check/%s.exp ' $$@`; \
5590075Sobrien	ret=$$?; \
5690075Sobrien	set -- `printf 'testsuite/%s/ ' $$@`; \
5790075Sobrien	$(SHELL) $(srcroot)/contrib/dg-extract-results.sh \
5890075Sobrien	  `find $$@ -maxdepth 1 -name testrun.sum 2>/dev/null | sort` > testrun.sum; \
5990075Sobrien	$(SHELL) $(srcroot)/contrib/dg-extract-results.sh -L \
6090075Sobrien	  `find $$@ -maxdepth 1 -name testrun.log 2>/dev/null | sort` > testrun.log; \
6190075Sobrien	echo; \
6290075Sobrien	$(SED) -n '/^.*===.*Summary.*===/,$$p' testrun.sum; \
6390075Sobrien	exit $$ret)
6490075Sobrien
6590075Sobriencheck-DEJAGNU-single:
6690075Sobrien	$(AM_V_RUNTEST)$(DO_RUNTEST)
6790075Sobrien
6890075Sobrien# If running a single job, invoking runtest once is faster & has nicer output.
6990075Sobriencheck-DEJAGNU: site.exp
7090075Sobrien	$(AM_V_at)(set -e; \
7190075Sobrien	EXPECT=${EXPECT} ; export EXPECT ; \
7290075Sobrien	runtest=$(RUNTEST); \
7390075Sobrien	if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
7490075Sobrien	  case "$(MAKEFLAGS)" in \
7590075Sobrien	  *-j*) $(MAKE) check-DEJAGNU-parallel;; \
7690075Sobrien	  *)    $(MAKE) check-DEJAGNU-single;; \
7790075Sobrien	  esac; \
7890075Sobrien	else \
7990075Sobrien	  echo "WARNING: could not find \`runtest'" 1>&2; :;\
8090075Sobrien	fi)
8190075Sobrien
8290075SobrienMOSTLYCLEANFILES += \
8390075Sobrien	site-sim-config.exp testrun.log testrun.sum
8490075Sobrien
8590075Sobrieninclude %D%/common/local.mk
8690075Sobrien