# ---------------------------------------------------------- 
#   (C)1993,1994 Institute for New Generation Computer Technology 
#       (Read COPYRIGHT for detailed information.) 
#   (C)1996, 1997 Japan Information Processing Development Center
#       (Read COPYRIGHT-JIPDEC for detailed information.)
# ----------------------------------------------------------
KLIC = klic -O2

.SUFFIXES: $(.SUFFIXES) .tst .res

TESTS = deriv.tst fact.tst hanoi.tst iotest.tst kkqueen.tst \
	life.tst mastermind.tst merge.tst parsetest.tst \
	pascal.tst pp.tst primes.tst primesp.tst prio.tst \
	puzzle.tst qlay.tst qsort.tst turtles.tst \
	vecstr.tst wave.tst atomfunc.tst cmac.tst

TESTPROGS = \
	deriv fact hanoi iotest kkqueen \
	life mastermind merge parsetest \
	pascal pp primes primesp prio \
	puzzle qlay qsort turtles \
	vecstr wave atomfunc cmac

TESTSRCS = \
	deriv.kl1 fact.kl1 hanoi.kl1 iotest.kl1 kkqueen.kl1 \
	life.kl1 mastermind.kl1 merge.kl1 parsetest.kl1 \
	pascal.kl1 pp.kl1 primes.kl1 primesp.kl1 prio.kl1 \
	puzzle.kl1 qlay.kl1 qsort.kl1 turtles.kl1 \
	vecstr.kl1 wave.kl1 atomfunc.kl1 cmac.kl1

tests:	objects $(TESTS)

objects:
	$(KLIC) -c $(TESTSRCS)

.res.tst:
	cmp $*.res $*.res.cmp

deriv.res: deriv
	./deriv >deriv.res
fact.res: fact
	./fact >fact.res
hanoi.res: hanoi
	./hanoi >hanoi.res
kkqueen.res: kkqueen
	./kkqueen >kkqueen.res
iotest.res: iotest
	./iotest >iotest.res
life.res: life
	./life >life.res
mastermind.res: mastermind
	./mastermind >mastermind.res
merge.res: merge
	./merge >merge.res
parsetest.res: parsetest
	./parsetest >parsetest.res
pascal.res: pascal
	./pascal >pascal.res
pp.res:	pp
	./pp >pp.res
primes.res: primes
	./primes >primes.res
primesp.res: primesp
	./primesp >primesp.res
prio.res: prio
	./prio >prio.res
puzzle.res: puzzle
	./puzzle >puzzle.res
qlay.res: qlay
	./qlay >qlay.res
qsort.res:	qsort
	./qsort >qsort.res
turtles.res: turtles
	./turtles >turtles.res
vecstr.res: vecstr
	./vecstr >vecstr.res
wave.res: wave
	./wave >wave.res
atomfunc.res: atomfunc
	./atomfunc >atomfunc.res
server.res: server
	./server >server.res
client.res: client
	./client >client.res
cmac.res: cmac
	./cmac >cmac.res

atomfunc.kl1:	#atomfunc.perl ../runtime/klic.db
	perl atomfunc.perl ../runtime/klic.db >work; mv work atomfunc.kl1

clean:
	/bin/rm -f *.c *.ext *.h *.o klic.db klicdb.init libklic.db \
		work* *~ core

distclean: clean
	/bin/rm -f $(TESTPROGS) server client *.res

realclean: distclean

%:	%.kl1
	$(KLIC) -v -o $@ $<; sync
