# Makefile for tests

SHELL      = /usr/local/bin/zsh
RESULTTIME = result/result.time
RESULTHEAP = result/result.heap
KFLGS      = -O2
DDKLIC     = ../bin/ddklic

all:	gencon hanoi primes handshake nqueen

tests:
	make count  RESULTHEAP=$(RESULTHEAP)
	make clean
	make all
	make time   RESULTTIME=$(RESULTTIME)
	cd result; make all

time:
	for prog in *_? ; do time $$prog; done 2>$(RESULTTIME)

count:	clean
	$(DDKLIC) -count -pg
	make all KFLGS=-pg
	for prog in *_? ; \
	do $$prog -s; gprof $$prog>result/result.$$prog.prof; \
	done >& $(RESULTHEAP)


gencon: gencon_n gencon_l gencon_d
gencon_n: gencon_n.kl1 gencon_main.kl1
	$(DDKLIC) $(KFLGS) -o gencon_n gencon_n.kl1 gencon_main.kl1
gencon_l: gencon_l.kl1 gencon_main.kl1
	$(DDKLIC) $(KFLGS) -o gencon_l gencon_l.kl1 gencon_main.kl1
gencon_d: gencon_d.kl1 gencon_main.kl1
	$(DDKLIC) $(KFLGS) -o gencon_d gencon_d.kl1 gencon_main.kl1

hanoi: hanoi_n hanoi_l hanoi_d
hanoi_n: hanoi_n.kl1 hanoi_main.kl1
	$(DDKLIC) $(KFLGS) -o hanoi_n hanoi_n.kl1 hanoi_main.kl1
hanoi_l: hanoi_l.kl1 hanoi_main.kl1
	$(DDKLIC) $(KFLGS) -o hanoi_l hanoi_l.kl1 hanoi_main.kl1
hanoi_d: hanoi_d.kl1 hanoi_main.kl1
	$(DDKLIC) $(KFLGS) -o hanoi_d hanoi_d.kl1 hanoi_main.kl1

primes: primes_n primes_l primes_d
primes_n: primes_n.kl1 primes_main.kl1
	$(DDKLIC) $(KFLGS) -o primes_n primes_n.kl1 primes_main.kl1
primes_l: primes_l.kl1 primes_main.kl1
	$(DDKLIC) $(KFLGS) -o primes_l primes_l.kl1 primes_main.kl1
primes_d: primes_d.kl1 primes_main.kl1
	$(DDKLIC) $(KFLGS) -o primes_d primes_d.kl1 primes_main.kl1
	
handshake: handshake_n handshake_l handshake_d
handshake_n: handshake_n.kl1 handshake_main.kl1
	$(DDKLIC) $(KFLGS) -o handshake_n handshake_n.kl1 handshake_main.kl1
handshake_l: handshake_l.kl1 handshake_main.kl1
	$(DDKLIC) $(KFLGS) -o handshake_l handshake_l.kl1 handshake_main.kl1
handshake_d: handshake_d.kl1 handshake_main.kl1
	$(DDKLIC) $(KFLGS) -o handshake_d handshake_d.kl1 handshake_main.kl1
	
nqueen: nqueen_n nqueen_l nqueen_d
nqueen_n: nqueen_n.kl1 nqueen_main.kl1
	$(DDKLIC) $(KFLGS) -o nqueen_n nqueen_n.kl1 nqueen_main.kl1
nqueen_l: nqueen_l.kl1 nqueen_main.kl1
	$(DDKLIC) $(KFLGS) -o nqueen_l nqueen_l.kl1 nqueen_main.kl1
nqueen_d: nqueen_d.kl1 nqueen_main.kl1
	$(DDKLIC) $(KFLGS) -o nqueen_d nqueen_d.kl1 nqueen_main.kl1

clean:
	$(DDKLIC) -clean
	../bin/klicclean
	echo -n > prog_a; rm -f *_?

