OCAMLC ?= ocamlc

.PHONY: all test clean
all: fieldglass.cma rewrite

rewrite: rewrite.ml
	$(OCAMLC) -I +compiler-libs ocamlcommon.cma $< -o $@

fieldglass.cmi: fieldglass.mli
	$(OCAMLC) -c $<

fieldglass.cmo: fieldglass.ml fieldglass.cmi
	$(OCAMLC) -c $<

fieldglass.cma: fieldglass.cmo
	$(OCAMLC) -a $< -o $@

test: all
	$(OCAMLC) fieldglass.cma runtime.ml -o runtime.byte
	./runtime.byte
	$(OCAMLC) -ppx ./rewrite fieldglass.cma record.ml -o record.byte
	./record.byte
	$(OCAMLC) -ppx ./rewrite fieldglass.cma case.ml -o case.byte
	./case.byte
	OCAMLC=$(OCAMLC) sh error.sh

clean:
	rm -f *.cmi *.cmo *.cma *.byte rewrite
