include ../Makefile.incl

CL := ../src/$(COMPILER)
CLVM := ../src/$(VMBINARY)
OUTFILE := report.log

PRINT_FILES := \
expr1.clo \
expr2.clo \
expr3.clo \
expr4.clo \
expr5.clo \
decls1.clo \
decls2.clo \
decls3.clo \
decls4.clo \
decls5.clo \
decls6.clo \
pred1.clo \
pred2.clo \
atom1.clo \
atom2.clo \
atom3.clo \
list1.clo \
list2.clo \
list3.clo \
list4.clo \
list5.clo \
list6.clo \
var1.clo \
bt1.clo \
bt2.clo \
bt3.clo \
bt4.clo \
bt5.clo \
bt6.clo \
bt7.clo \
bt8.clo \
bt9.clo \
control1.clo \
control2.clo \
control3.clo \
control4.clo \
control5.clo \
control6.clo \
builtin1.clo \
insertsort.clo \
mergesort.clo \
qsort.clo \
escapes.clo

PRINT_TESTS := $(subst .clo,.print,$(PRINT_FILES))

PRINT_OUTPUT := $(subst .clo,.out,$(PRINT_FILES))

VERIFY_FILES := $(subst .clo,.out,$(TESTS))




.PHONY : clean all gen-output test build header footer

all: test

build: $(PRINT_FILES)

header:
	echo "Run on " `date` > $(OUTFILE)

footer:

test: header $(PRINT_TESTS) footer

clean:
	rm -f $(PRINT_FILES)

clean-all: clean
	rm -f *.out

gen-output: $(NOPRINT_OUTPUT) $(PRINT_OUTPUT)

$(PRINT_OUTPUT) : $(PRINT_FILES)
	$(CLVM) $(subst .out,.clo,$@) > $@

%.print : %.clo
	@echo "Testing $<"
	@$(CLVM) $< > tmp.out
	@((diff tmp.out $(subst .clo,.out,$<) >/dev/null 2>&1) && echo "$< succeeded!" || echo "$< FAILED!") >> $(OUTFILE)

%.clo : %.clg
	$(CL) -c $<

