# $Id: Makefile,v 1.8 2003/11/13 06:23:49 fp010 Exp $
#
# hacked up by hvr
#
MODULES := $(sort $(wildcard Aufgabe*.*hs))
MSTAMPS := $(patsubst %,.check.%.stamp, $(MODULES)) 

.PHONY = all help check clean recheck

all: help
help:
	@echo ""
	@echo "Available Makefile targets:"
	@echo ""
	@echo " make help                 shows this help screen"
	@echo " make check-<hs module>    checks <hs module> against check_<hs module> file"
	@echo " make check                calls check-<hs> for <hs> in MODULES"
	@echo " make recheck              force (re)checking of all MODULES"
	@echo " make clean                removes temporary files and stamp files"
	@echo ""
	@echo "MODULES := $(MODULES)"
	@echo ""

$(MSTAMPS): .check.%.stamp: % check_% 
	@-rm -f $@
	@A=$<; \
	echo "*** checking $$A ***************************************************";\
	if [ -f /usr/local/share/fptest/$$A.test ];\
	  then echo "* found system wide test cases!";\
	       ./check.sh $$A /usr/local/share/fptest/$$A.test;\
	       echo "* ...and now doing our local test cases!";\
	fi && ./check.sh $$A check_$$A
	@touch $@	

.check.stamp: $(MSTAMPS)
	@-rm -f $@
	@echo "****************************************************************************"
	@R="$(patsubst .check.%.stamp,%,$?)"; \
	echo "* redid checks for: $$R" 
	@O="$(filter-out $(patsubst .check.%.stamp,%,$?),$(MODULES))"; \
	if [ -n "$$O" ]; then echo "* but not for: $$O"; fi
	@touch $@

check: .check.stamp
	@true

check-%: .check.%.stamp
	@true

recheck: clean check

clean:
	@-rm -fv *~ $(patsubst %,%.testout,$(MODULES)) tmp.true tmp.testout $(MSTAMPS) .check.stamp
