
CFLAGS=-Wall -ggdb

PROGS=nasty nasty_slow nasty_alt

default:all

all:progs data_in data_out test

data_in: nasty1.in

data_out: nasty1.exp

nasty1.in:
	./gen_tests.pl

nasty1.exp: nasty1.in nasty
	for i in nasty*.in ; do	\
		NUM=$${i##nasty} ;	\
		NUM=$${NUM%%.in} ;	\
		echo creating exp file $${NUM}; \
		./nasty <nasty$${NUM}.in >nasty$${NUM}.exp || { echo nasty failed ; exit 1 ; } ;         \
	done 

test: progs nasty1.exp
	echo ; \
	echo "*** Running tests ***" ; \
	for i in nasty*.in ; do	\
		NUM=$${i##nasty} ;	\
		NUM=$${NUM%%.in} ;	\
		echo Testing data num. $${NUM} ;  \
		./nasty <nasty$${NUM}.in >nasty.out || { echo nasty failed ; exit 1 ; } ; \
	    diff -q nasty$${NUM}.exp nasty.out || { echo nasty returned bad result; exit 1 ; };               \
		./nasty_alt <nasty$${NUM}.in >nasty.out || { echo nasty_alt failed ; exit 1 ; } ; \
	    diff -wq nasty$${NUM}.exp nasty.out || { echo nasty_alt returned bad result; exit 1 ; };               \
		./nasty_slow <nasty$${NUM}.in >nasty.out || { echo nasty_slow failed ; exit 1 ; } ; \
	    diff -q nasty$${NUM}.exp nasty.out || { echo nasty_slow returned bad result; exit 1 ; };               \
	done ; \
	echo ; \
	echo "*** All tests successful ***"

progs: $(PROGS)

tgz: data_in data_out
	tar cvzf nasty.tgz *.in *.exp *.c *.pas *.pl Makefile


clean:
	rm -f $(PROGS) *.o *.in *.out *.exp *.exe

%:%.pas
	fpc -Cs1000000 -g $<

%:%.c
	gcc $(CFLAGS) -o $@ $<


