all: initialize programs singlescripts dualscripts clean runsingle rundual

UNAME_M := $(shell uname -m)
UNAME_S := $(shell uname -s)

ifeq ($(strip $(UNAME_S)),Linux)
   PARALLEL=/usr/bin/parallel
else
   PARALLEL=/opt/local/bin/parallel
endif

ifeq ($(strip $(UNAME_M)),x86_64)
   allowInlineAssembly=1
else
   allowInlineAssembly=0
endif

initialize: .FORCE
	/bin/rm -rf generated/programs
	/bin/mkdir -p generated/programs
	-tigress --Transform=Ident --out=/tmp/x.c ${TIGRESS_HOME}/test1.c
	/bin/cp header.h ${TIGRESS_HOME}/apple.h ${TIGRESS_HOME}/jitter-*.c generated/programs

programs:
	cd c-patterns/arith; generate.sh
	cd c-patterns/literals; generate.sh
	cd c-patterns/assign; generate.sh
	cd c-patterns/cast; generate.sh
	cd c-patterns/control; generate.sh
	cd c-patterns/struct; generate.sh
	cd c-patterns/call; generate.sh
	cd c-patterns/misc; generate.sh
	cd c-patterns/programs; generate.sh

singlescripts: .FORCE
	/bin/rm -rf generated/patterns/single
	scripts/genSingleTransform.sh ${allowInlineAssembly} generated/patterns/single
	/bin/rm -rf generated/scripts/single
	scripts/genScript.sh ${allowInlineAssembly} generated/patterns/single generated/scripts/single

dualscripts: .FORCE
	/bin/rm -rf generated/patterns/dual
	scripts/genDualTransform.sh ${allowInlineAssembly} generated/patterns/dual
	/bin/rm -rf generated/scripts/dual
	scripts/genScript.sh ${allowInlineAssembly} generated/patterns/dual generated/scripts/dual

runsingle:
	scripts/runScripts.sh generated/scripts/single results/single

rundual:
	scripts/runScripts.sh generated/scripts/dual results/dual

#prun:
#	scripts/runScripts.sh ${PARALLEL}

rerunfails:
	scripts/rerunFails.sh

fails: .FORCE
	egrep -r '^FAILURE' results | sed 's/:FAILURE//g'

succeeds: .FORCE
	egrep -r '^SUCCESS' results

clean: .FORCE
	-/bin/rm -r results/*

count:
	ls -1 generated/programs/*/*.c | wc -l

simple-tests.zip: .FORCE
	-/bin/rm ../simple-tests.zip
	cd ..; zip -r simple-tests.zip simple/makefile simple/scripts simple/c-patterns simple/t-patterns simple/header.h -x \*~ -x exe 
	mv ../simple-tests.zip .

.FORCE:
