--- /dev/null
+MAKEFLAGS := --no-builtin-rules
+
+EXE_TYPE := byte # byte | native
+EXECUTABLES := tigerc tiger_tests
+OCAMLBUILD_FLAGS_DIRS := -I src/exe -I src/lib/tiger
+OCAMLBUILD_FLAGS_COMP := -cflags '-w A'
+OCAMLBUILD_FLAGS_YACC := -yaccflag '-v'
+OCAMLBUILD := \
+ ocamlbuild \
+ -classic-display \
+ $(OCAMLBUILD_FLAGS_COMP) \
+ $(OCAMLBUILD_FLAGS_DIRS) \
+ $(OCAMLBUILD_FLAGS_YACC)
+
+.PHONY: \
+ all \
+ build \
+ clean \
+ test
+
+all: clean
+ @$(MAKE) -s test
+
+build:
+ @$(OCAMLBUILD) $(addsuffix .$(EXE_TYPE),$(EXECUTABLES))
+ @mkdir -p bin/exe
+ $(foreach exe,$(EXECUTABLES),cp _build/src/exe/$(exe).$(EXE_TYPE) bin/exe/$(exe); )
+ @rm $(addsuffix .$(EXE_TYPE),$(EXECUTABLES))
+
+clean:
+ @$(OCAMLBUILD) -clean
+ @rm -rf ./bin
+
+test: build
+ @./bin/exe/tiger_tests