CFA ?= ../driver/cfa-cpp
CFAOPT ?= -a
OUTPUT ?= Output
EXPECT ?= Expect
OUTPUTDIR ?= ${OUTPUT}${CFAOPT}
EXPECTDIR ?= ${EXPECT}${CFAOPT}
EXAMPLES = ${wildcard *.c}
OUTPUTS = ${addprefix ${OUTPUTDIR}/,${EXAMPLES:.c=.txt}}

#.SILENT :

all :
	+for opt in -a -e -f -r -s -v ; do \
	    make test CFAOPT=$${opt} ; \
	done ; \
	rm -f core

test : ${OUTPUTS} ${OUTPUTDIR}/report

${OUTPUTDIR}/%.txt : %.c ${CFA} Makefile
	-${CFA} -n ${CFAOPT} $< > $@ 2>&1

${OUTPUTDIR}/report : ${OUTPUTS} ${EXPECTDIR}
	rm -f $@
	echo "===== regression test using cfa-cpp flag ${CFAOPT} ====="
	@for i in ${OUTPUTS} ; do \
	     echo "---"`basename $$i`"---" | tee -a $@; \
	     diff -B -w ${EXPECTDIR}/`basename $$i` $$i | tee -a $@; \
	done

${OUTPUTS} : | ${OUTPUTDIR}		# order only prerequisite

${OUTPUTDIR} :
	mkdir -p $@

# remove the expected results directories to generate new ones from the current output

${EXPECTDIR} : | ${OUTPUTS}		# new Expected results ?
	cp -pr ${OUTPUTDIR} $@

clean :
	rm -rf ${OUTPUT}-* core
