BD = run
SD = src
CD = test
case := $(shell ls $(CD)) 
casedirs := $(foreach dir,$(case),$(CD)/$(dir)/run)
casefiles := $(foreach dir,$(casedirs),$(dir)/sam.std)
checkfiles := $(foreach dir,$(casedirs),$(dir)/../check/sam.std)
checks := $(foreach dir,$(casedirs),$(dir)/../check/compare)

.SILENT: $(checks)

.PHONY = clean compile updatetest test runtest

clean: 
	rm -f $(BD)/*
	find . -name '*~' -delete
	rm -rf _tmp
	rm -f $(checks)
	rm -rf $(casedirs)

compile: $(BD)/sam
$(BD)/sam: $(SD)/sam.tpl $(SD)/nLogNormal.h
	mkdir _tmp
	cp $^ _tmp
	cd _tmp; admb -r -s $(@F)
	cp _tmp/$(@F) $(BD)
	rm -rf _tmp

runtest: $(casefiles)
$(casefiles): $(BD)/sam
	mkdir $(@D)
	cd $(@D)/..; make runit

updatetest: $(checkfiles)
$(checkfiles): $(casefiles)
	cd $(@D); cp ../run/sam.std .

test: $(checks)
$(checks): $(casefiles)
	echo 'f1<-readLines("$(@D)/sam.std"); f2<-readLines("$(@D)/../run/sam.std"); ok<-identical(f1,f2); cat(sub("run.*","","$(@D) "),ok,"\n")' | R --slave
