# ---------------------------------------------------------- 
#   (C)1993,1994 Institute for New Generation Computer Technology 
#       (Read COPYRIGHT for detailed information.) 
# ----------------------------------------------------------

PARALLEL = 0
KLIC = ../compiler/klic -P$(PARALLEL) \
	-v -K../compiler/kl1cmp -D../compiler/klicdb \
	-X. -I../include -L../runtime -g
KLICSYS = ../compiler/klic ../compiler/kl1cmp ../compiler/klicdb \
	../include/klic/* ../runtime/libklic.a

.SUFFIXES: $(.SUFFIXES) .tst .out

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

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

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

tests:	klicdb.init libklic.db objects $(TESTS)

klicdb.init:
	cp -p ../runtime/klic.db klicdb.init

libklic.db:
	cp -p ../runtime/libklic.db .

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

%.tst:	%.out
	cmp $*.out $*.out.cmp

%.out: %
	./$* >$*.out

deriv:	deriv.kl1 $(KLICSYS)
	$(KLIC) -o deriv deriv.kl1
fact:	fact.kl1 $(KLICSYS)
	$(KLIC) -o fact fact.kl1
hanoi:	hanoi.kl1 $(KLICSYS)
	$(KLIC) -o hanoi hanoi.kl1
kkqueen: kkqueen.kl1 $(KLICSYS)
	$(KLIC) -o kkqueen kkqueen.kl1
iotest:	iotest.kl1 $(KLICSYS)
	$(KLIC) -o iotest iotest.kl1
life:	life.kl1 $(KLICSYS)
	$(KLIC) -o life life.kl1
mastermind: mastermind.kl1 $(KLICSYS)
	$(KLIC) -o mastermind mastermind.kl1
merge: merge.kl1 $(KLICSYS)
	$(KLIC) -o merge merge.kl1
parsetest: parsetest.kl1 $(KLICSYS)
	$(KLIC) -o parsetest parsetest.kl1
pascal:	pascal.kl1 $(KLICSYS)
	$(KLIC) -o pascal pascal.kl1
pp:	pp.kl1 $(KLICSYS)
	$(KLIC) -o pp pp.kl1
primes:	primes.kl1 $(KLICSYS)
	$(KLIC) -o primes primes.kl1
primesp: primesp.kl1 $(KLICSYS)
	$(KLIC) -o primesp primesp.kl1
prio:	prio.kl1 $(KLICSYS)
	$(KLIC) -o prio prio.kl1
puzzle:	puzzle.kl1 $(KLICSYS)
	$(KLIC) -o puzzle puzzle.kl1
qlay:	qlay.kl1 $(KLICSYS)
	$(KLIC) -o qlay qlay.kl1
qsort:	qsort.kl1 $(KLICSYS)
	$(KLIC) -o qsort qsort.kl1
turtles:	turtles.kl1 $(KLICSYS)
	$(KLIC) -o turtles turtles.kl1
vecstr:	vecstr.kl1 $(KLICSYS)
	$(KLIC) -o vecstr vecstr.kl1
wave:	wave.kl1 $(KLICSYS)
	$(KLIC) -o wave wave.kl1
atomfunc:	atomfunc.kl1 $(KLICSYS)
	$(KLIC) -o atomfunc atomfunc.kl1
server:	server.kl1 $(KLICSYS)
	$(KLIC) -o server server.kl1
client:	client.kl1 $(KLICSYS)
	$(KLIC) -o client client.kl1
iotest.out.cmp: iotest.kl1 $(KLICSYS)
	cp iotest.kl1 iotest.out.cmp

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 *.out

realclean: distclean
