srcdir = .
SHELL = /bin/sh
MASK = *.pas
PC = gpc
TEST_PATHS =
BASIC_PFLAGS = -g -O3 -Wall
PFLAGS = $(BASIC_PFLAGS) $(TEST_PATHS) $(EXTRA_PFLAGS)

all: pascal.check

.PHONY: all pascal.check-long pascal.check msg pascal.check-nomsg \
        mostlyclean clean distclean extraclean maintainer-clean

# to be removed when using GP
PFLAGS1 = --autobuild

print-version:
	{ $(PC) --version; $(PC) --print-search-dirs | grep install; hostname || echo "unknown host"; } | \
	sed -e 's,^,Testing GPC ,;N;s,\n.*gcc-lib[/\], (,;s,[/\].*,),;N;s,\n, (,;s,$$,),'
	echo "$(PC) $(BASIC_PFLAGS) $(EXTRA_PFLAGS)"

pascal.check-long: clean print-version
	PC="$(PC)" PFLAGS="$(PFLAGS1) $(PFLAGS)" SRCDIR="$(srcdir)" "$(srcdir)/test_run" "$(MASK)"

pascal.check: msg pascal.check-nomsg

msg:
	@echo
	@echo "Running the GPC Test Suite. This may take a while ..."
	@echo
	@echo "NOTE, if you've used the Test Suite before:"
	@echo "To get the long output format, run \`make pascal.check-long' now."
	@echo

pascal.check-nomsg: clean print-version
	PC="$(PC)" PFLAGS="$(PFLAGS1) $(PFLAGS)" SRCDIR="$(srcdir)" "$(srcdir)/test_run" "$(MASK)" | "$(srcdir)/test_sum"

mostlyclean:
	-rm -f *.dat *.o *.s *.gpm *.gpi *.gpd *.gpc core a.out stderr.out *.exe tmptest.* testmake.tmp
	-rm -f knownbugs/a.out knownbugs/*.o knownbugs/*.s knownbugs/*.gpm knownbugs/*.gpi knownbugs/*.gpd
	-rm -f internal/a.out internal/*.o internal/*.s internal/*.gpm internal/*.gpi internal/*.gpd

clean: mostlyclean

distclean: clean

extraclean: distclean
	-rm -f *.BAK *.bak *.orig gpc.out make.out b.out dtlist.*

maintainer-clean: extraclean
