ROOT=$(shell cd ../..; pwd)
HDD=xenial00
SOCKET="1p"
PWD=$(shell pwd)

EXAMPLES= \
	cjpeg_benchmark_small_memoryA \
	cjpeg_benchmark_small_memoryB \
	cjpeg_benchmark_large_memoryA \
	cjpeg_benchmark_large_memoryB

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


run: $(addprefix run_, $(EXAMPLES))
	rm -f /tmp/input_large.ppm /tmp/input_small.ppm /tmp/cjpeg /tmp/cjpeg.sh

include  $(ROOT)/Make.conf

$(HDD).img: 
	rm -f $(HDD).img 2>/dev/null; ln -s /opt/cotson/images/$(HDD).img
#	lzma -d $(HDD).img.lzma

$(SOCKET)-$(HDD).bsd: $(HDD).img
	cd $(ROOT)/../data
	rm -f $(SOCKET)-$(HDD).bsd 2>/dev/null; ln -s /opt/cotson/bsds/$(SOCKET)-$(HDD).bsd 2>/dev/null
#	$(ROOT)/../data/initbsd $(SIMNOW_DIR) $(SOCKET)-$(HDD) $(HDD)
#	$(RM) $(ROOT)/../data/$(HDD).img $(ROOT)/../data/$(SOCKET)-$(HDD).bsd
#	ln -s $(PWD)/$(HDD).img $(ROOT)/../data/$(HDD).img
#	ln -s $(PWD)/$(SOCKET).bsd $(ROOT)/../data/$(SOCKET)-$(HDD).bsd

setup: cjpeg $(SOCKET)-$(HDD).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 . ; rm -f /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 . ; rm -f /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 . ; rm -f /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 . ; rm -f /tmp/output-large-memoryB.jpeg

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