CS= cs

########################

BENCH_BASE=	benchmarks.sa  \
		bench_timer.sa \
		C/time_.c      \
		Makefile

		
ALL_PART_EXEC=	bubble   \
		intmm    \
		perm     \
		puzzle   \
		queens   \
		quick    \
		towers   \
		tree     \
		xbubble  \
		xquick   \
		xintmm   \
		xperm    \
		xqueens  \
		xtree    \
		xtowers

		
ALL_PART_SOURCES=	bubble.sa   \
			intmm.sa    \
			perm.sa     \
			puzzle.sa   \
			queens.sa   \
			quick.sa    \
			towers.sa   \
			tree.sa     \
			xbubble.sa  \
			xquick.sa   \
			xintmm.sa   \
			xperm.sa    \
			xqueens.sa  \
			xtree.sa    \
			xtowers.sa

########################	
	
run_all: $(ALL_PART_EXEC) run_abench
	for i in $(ALL_PART_EXEC); \
	do \
		echo - $$i - ; time ./$$i ; echo = $$i = ; \
	done

####
	
bubble: bubble.sa quick.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main BUBBLE

intmm: intmm.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main INTMM

perm: perm.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main PERM

puzzle: puzzle.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main PUZZLE

queens: queens.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main QUEENS

quick: quick.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main QUICK

towers: towers.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main TOWERS

tree: tree.sa quick.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main TREE

xbubble: xbubble.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XBUBBLE

xquick: xquick.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XQUICK

xintmm: xintmm.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XINTMM

xperm: xperm.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XPERM

xqueens: xqueens.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XQUEENS

xtowers: xtowers.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XTOWERS

xtree: xtree.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main XTREE

####

bench_timer_test: $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main BENCH_TIMER_TEST

benchmarks: $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main BENCHMARKS

runbench: $(ALL_PART_SOURCES) $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main RUNBENCH

abench: abench.sa $(BENCH_BASE)
	$(CS) benchmarks.module -o $@ -main SATHER_BENCH

####

run_abench: abench
	time ./abench 1 3000000
	time ./abench 2 10000000
	time ./abench 3 6000000
	time ./abench 4 4000000
	time ./abench 5 3000000
	time ./abench 6 3000000

####

clean:
	rm -rf *.code
	rm -f abench benchmarks runbench time_tst $(ALL_PART_EXECS)
