.PHONY : test
test : all testall.sh
	./testall.sh


.PHONY : all
all : cstar.native printbig.o


cstar.native :
	opam config exec -- \
	ocamlbuild -use-ocamlfind cstar.native


.PHONY : clean
clean :
	ocamlbuild -clean
	rm -rf testall.log ocamlllvm *.diff *.err *.ll *.s *.exe *.out


printbig : printbig.c
	cc -o printbig -DBUILD_TEST printbig.c


TESTS = \
  add func1 func2 func3 func4 func5 global1 if1 if2 local num ops1 \
  ops2 printbig var1 var2 \

FAILS = \
  assign1 assign2 assign3 assign4 dead expr \
  func1 func2 func3 func4 func5 if1 if2 nomain return \
 

TESTFILES = $(TESTS:%=test-%.cs) $(TESTS:%=test-%.out) \
	    $(FAILS:%=fail-%.cs) $(FAILS:%=fail-%.err)

TARFILES = ast.ml sast.ml codegen.ml Makefile _tags cstar.ml parser.mly \
	README scanner.mll semant.ml testall.sh printbig.c Dockerfile \
	$(TESTFILES:%=tests/%) 

cstar.tar.gz : $(TARFILES)
	cd .. && tar czf cstar/cstar.tar.gz \
		$(TARFILES:%=cstar/%)
