-OCAMLOPTIONS = -linkpkg -thread -rectypes -package \"$(REQUIRES)\"
-OCAMLC = $(OCAMLFIND) ocamlc $(OCAMLOPTIONS)
-OCAMLOPT = $(OCAMLFIND) opt $(OCAMLOPTIONS)
+AMLS = $(wildcard *.aml)
+
+define BUILD_TEMPLATE
+$(1).all:
+ @echo " OCAMLBUILD $(1)"
+ $(H)ocamlbuild $$(BUILDOPTIONS) -ocamlc "$$(OCAMLC)" -ocamlopt "$$(OCAMLOPT)" -yaccflags "-v" -pp "$$(CAMLP)" $(1)
+
+.PHONY: $(1).all
+endef
+
+all:: $(AMLS:%.aml=%.ml) $(EXECS:%=%.native.all)
+
+byte:: $(AMLS:%.aml=%.ml) $(EXECS:%=%.byte.all)
+
+$(foreach EXEC, $(EXECS), $(eval $(call BUILD_TEMPLATE,$(EXEC:%=%.native))))