
AS = as
LIBS =  obj/mlib.o obj/clib.o obj/blib.o obj/dlib.o obj/kblib.o
CC = gcc -DforLINUX -O3

help:
	@echo
	@echo "make bench       Run cobench"
	@echo "make bencht      Run cobench with tracing"
	@echo "make bench100    Run cobench with n=100"
	@echo "make bench500    Run cobench with n=500 (the default)"
	@echo "make bench10000  Run cobench with n=10000"
	@echo "make sim         Run cosim"
	@echo "make simt        Run cosim with tracing"
	@echo "make sim100      Run cosim with n=100"
	@echo "make sim500      Run cosim with n=500 (the default)"
	@echo "make sim10000    Run cosim with n=10000"
	@echo "make test        Run cotest"
	@echo "make clean       Delete compiled files"
	@echo "make help        Display the help infomation"
	@echo

cyg:	natcobench.exe natcobench
	time ./natcobench

bench:	bench500

bench100:	natcobench
	time ./natcobench -k 10000 -n 100

bench500:	natcobench
	time ./natcobench -k 10000 -n 500

bench10000:	natcobench
	time ./natcobench -k 10000 -n 10000

bencht:	natcobench
	time ./natcobench -k 2 -t -n 3

test:	cotest
	./cotest

sim:	sim500

sim100:	natcosim
	time ./natcosim -s 1000000 -p 1000 -n 100

sim500:	natcosim
	time ./natcosim -s 1000000 -p 1000 -n 500

sim10000:	natcosim
	time ./natcosim -s 1000000 -p 1000 -n 10000

simt:	natcosim
	./natcosim -s 1000 -p 500 -t -n 5



obench:	natcobench
	time ./natcobench

obencht:	natcobench
	./natcobench -n 3 -k 2 -t

osim:	natcosim
	time ./natcosim

osimt:	natcosim
	./natcosim -n 5 -s 1000 -p 500 -t

otest:	natcotest.exe natcotest
	./natcotest

natcobench natcobench.exe:	obj/initcobench.o obj/cobench.o $(LIBS)
	$(CC) -o natcobench obj/initcobench.o obj/cobench.o $(LIBS)
	touch natcobench natcobench.exe

natcosim natcosim.exe:	obj/initcosim.o obj/cosim.o $(LIBS)
	$(CC) -o natcosim obj/initcosim.o obj/cosim.o $(LIBS)
	touch natcosim natcosim.exe

natcotest, natcotest.exe:	obj/initcotest.o obj/cotest.o $(LIBS)
	$(CC) -o natcotest obj/initcotest.o obj/cotest.o $(LIBS)
	touch natcotest natcotest.exe

obj/mlib.o: sysasm/mlib.s
	$(AS) -o obj/mlib.o sysasm/mlib.s

obj/clib.o: sysc/clib.c
	$(CC) -o obj/clib.o -c sysc/clib.c

obj/blib.o: sysb/blib.b
	echo "bcpl2sial sysb/blib.b to sial/blib.sial" | cintsys
	echo "sial-386 sial/blib.sial to s/blib.s" | cintsys
	$(AS) -o obj/blib.o s/blib.s

obj/dlib.o: sysb/dlib.b
	echo "bcpl2sial sysb/dlib.b to sial/dlib.sial" | cintsys
	echo "sial-386 sial/dlib.sial to s/dlib.s" | cintsys
	$(AS) -o obj/dlib.o s/dlib.s

obj/kblib.o:	sysc/kblib.c sysc/bcpl.h
	$(CC) -o obj/kblib.o -c sysc/kblib.c

obj/cobench.o: cobench.b
	echo "bcpl2sial cobench.b to sial/cobench.sial" | cintsys
	echo "sial-386 sial/cobench.sial to s/cobench.s" | cintsys
	$(AS) -o obj/cobench.o s/cobench.s

obj/cosim.o: cosim.b
	echo "bcpl2sial cosim.b to sial/cosim.sial" | cintsys
	echo "sial-386 sial/cosim.sial to s/cosim.s" | cintsys
	$(AS) -o obj/cosim.o s/cosim.s

obj/cotest.o: cotest.b
	echo "bcpl2sial cotest.b to sial/cotest.sial" | cintsys
	echo "sial-386 sial/cotest.sial to s/cotest.s" | cintsys
	$(AS) -o obj/cotest.o s/cotest.s

obj/initcobench.o:	sysc/initcobench.c
	$(CC) -o obj/initcobench.o -c sysc/initcobench.c

sysc/initcobench.c:	cobench.b
	echo "makeinit cobench.b to sysc/initcobench.c" | cintsys

obj/initcosim.o:	sysc/initcosim.c
	$(CC) -o obj/initcosim.o -c sysc/initcosim.c

sysc/initcosim.c:	cosim.b
	echo "makeinit cosim.b to sysc/initcosim.c" | cintsys

obj/initcotest.o:	sysc/initcotest.c
	$(CC) -o obj/initcotest.o -c sysc/initcotest.c

sysc/initcotest.c:	cotest.b
	echo "makeinit cotest.b to sysc/initcotest.c" | cintsys

clean:
	rm -f natcobench natcobench.exe
	rm -f natcosim natcosim.exe
	rm -f natcotest natcotest.exe
	rm -f sysc/initcobench.c sysc/initcosim.c sysc/initcotest.c
	rm -f sial/* obj/* s/* *~ */*~ core



