H=@
-include ../../etc/Makefile.defs
+OCAMLOPTIONS = -linkpkg -package \"$(REQUIRES)\" $(CAMLOPTIONS)
+OCAMLFIND = OCAMLPATH=$(OCAMLPATH) ocamlfind
+OCAMLC = $(OCAMLFIND) ocamlc -g $(OCAMLOPTIONS)
+OCAMLOPT = $(OCAMLFIND) opt $(OCAMLOPTIONS)
-DIST=$(EXEC)---$(VERSION)
-DATE=$(shell date +%y%m%d)
+CAMLP_FEATURES = $(F:%=-D%)
-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))))
-all: $(EXEC).native
+$(foreach EXEC, $(EXECS), $(eval $(call BUILD_TEMPLATE,$(EXEC:%=%.byte))))
-$(EXEC).native: $(wildcard *.ml) $(wildcard *.mli) $(wildcard *.mly) $(wildcard *.mll)
- @echo " OCAMLBUILD $(EXEC).native"
- $(H)ocamlbuild -ocamlc "$(OCAMLC)" -ocamlopt "$(OCAMLOPT)" -yaccflags "$(YACCFLAGS)" $(EXEC).native
+clean::
+ @echo " OCAMLBUILD -clean"
+ $(H)ocamlbuild -clean
+ $(H)$(RM) $(AMLS:%.aml=%.ml) *~
-clean:
- ocamlbuild -clean
- rm -rf $(DIST) $(DIST).tgz
+.PHONY: all clean
-dist:
- mkdir -p $(DIST)/Sources
- cp ReadMe $(DIST)
- cp *.ml *.mli *.mll *.mly Makefile _tags $(DIST)/Sources
- cd $(DIST); ln -s Sources/$(EXEC).native $(EXEC)
- tar -cvzf $(DIST).tgz $(DIST)
+%.ml: %.aml
+ $(H)$(ALPHA) < $< > $@