ROOT=$(shell cd ../..; pwd)
PWD=$(shell pwd)
HDD=karmic64.img

EXAMPLES= \
	cjpeg_benchmark_small_memoryA \
	cjpeg_benchmark_small_memoryB \
	cjpeg_benchmark_large_memoryA \
	cjpeg_benchmark_large_memoryB

BSDFILE= \
	$(HDD) \
#	$(ROOT)/../data/karmic64.img \
	$(ROOT)/../data/1p-reset.bsd


run: $(addprefix run_, $(EXAMPLES))

include  $(ROOT)/Make.conf

karmic64.img: 
	lzma -d karmic64.img.lzma

1p.bsd: $(addprefix ,$(BSDFILE)) karmic64.img
	$(ROOT)/../data/initbsd $(SIMNOW_DIR) 1p $(HDD)
	$(RM) $(ROOT)/../data/karmic64.img $(ROOT)/../data/1p.bsd
	ln -s $(PWD)/karmic64.img $(ROOT)/../data/karmic64.img
	ln -s $(PWD)/1p.bsd $(ROOT)/../data/1p.bsd

setup: cjpeg 1p.bsd
	/bin/rm -f /tmp/node.1.heartbeat* /tmp/output-* /tmp/cjpeg /tmp/cjpeg.sh /tmp/input_large.ppm /tmp/input_small.ppm ; \
	/bin/cp cjpeg cjpeg.sh input_small.ppm input_large.ppm /tmp ; 

cjpeg: 
	cd src ; \
	tar xvzf jpegsrc.v6b.tar.gz ; \
	cd jpeg-6b ; \
	./configure ; \
	make ; \
	gcc -static -o ../../cjpeg cjpeg.o rdppm.o rdgif.o rdtarga.o rdrle.o rdbmp.o rdswitch.o cdjpeg.o libjpeg.a ; 

run_cjpeg_benchmark_small_memoryA: cjpeg setup
	$(ROOT)/../bin/cotson cjpeg_benchmark_small_memoryA.in ; \
	/bin/cp -v /tmp/output-small-memoryA.jpeg . ;

run_cjpeg_benchmark_small_memoryB: cjpeg setup
	$(ROOT)/../bin/cotson cjpeg_benchmark_small_memoryB.in ; \
	/bin/cp -v /tmp/output-small-memoryB.jpeg . ;

run_cjpeg_benchmark_large_memoryA: cjpeg setup
	$(ROOT)/../bin/cotson cjpeg_benchmark_large_memoryA.in ; \
	/bin/cp -v /tmp/output-large-memoryA.jpeg . ;

run_cjpeg_benchmark_large_memoryB: cjpeg setup
	$(ROOT)/../bin/cotson cjpeg_benchmark_large_memoryB.in ; \
	/bin/cp -v /tmp/output-large-memoryB.jpeg . ;

clean:
	$(RM) ./src/jpeg-6b node.1.* *.jpeg cjpeg
