From 1ff288efb8ae94291e6ee7deb7cb066d85c1c450 Mon Sep 17 00:00:00 2001 From: GrĂ©goire DuchĂȘne Date: Thu, 11 Sep 2014 17:31:37 +0200 Subject: Added subdirectory support By default, ostumake will look for OCaml code into every subdirectory available. It is possible to exclude files and/or directories by adding them to the EXCL variable. The previous behavior is also available by setting the NOSUBDIR variable. Most of the code has been moved to the gnu.ocaml.obj.mk file. This allows the user to choose between building a whole binary or just the object files. This commit closes #3. --- gnu.ocaml.prog.mk | 58 +++++-------------------------------------------------- 1 file changed, 5 insertions(+), 53 deletions(-) (limited to 'gnu.ocaml.prog.mk') diff --git a/gnu.ocaml.prog.mk b/gnu.ocaml.prog.mk index 26e7797..dde734a 100644 --- a/gnu.ocaml.prog.mk +++ b/gnu.ocaml.prog.mk @@ -14,61 +14,13 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -include $(dir $(lastword $(MAKEFILE_LIST)))gnu.ocaml.rules.mk +include $(dir $(lastword $(MAKEFILE_LIST)))gnu.ocaml.obj.mk -DEPFILE?= .Makefile.dep -MENHIR?= menhir -OCAMLLEX?= ocamllex PROG?= a.out -SRC+= $(CSRC) -ifdef CSRC -ifndef OCAMLNATIVE -OCAMLFLAGS+= -custom -endif -endif - -ifndef OCAMLC -ifdef OCAMLNATIVE -OCAMLC= ocamlfind ocamlopt -else -OCAMLC= ocamlfind ocamlc -endif -endif - -ifdef PKG -OCAMLFLAGS+= -linkpkg -package "$(PKG)" -endif - -OCAMLFLAGS+= $(DEBUG) - --include $(DEPFILE) - -OBJ+= $(patsubst %.c, %.o, $(filter %.c, $(SRC))) - -ifdef OCAMLNATIVE -OBJ+= $(patsubst %.ml, %.cmx, $(filter %.ml, $(SRC))) -CLEAN+= $(patsubst %.cmx, %.o, $(OBJ)) -CLEAN+= $(patsubst %.cmx, %.cmi, $(OBJ)) -else -OBJ+= $(patsubst %.ml, %.cmo, $(filter %.ml, $(SRC))) -CLEAN+= $(patsubst %.cmo, %.cmi, $(OBJ)) -endif - -INTER= $(patsubst %.mly, %.ml, $(wildcard *.mly)) -INTER+= $(patsubst %.mll, %.ml, $(wildcard *.mll)) -CLEAN+= $(patsubst %.ml, %.mli, $(INTER)) +.DEFAULT_GOAL:= $(PROG) -$(DEPFILE): $(wildcard *.ml) $(INTER) - printf "SRC+=\t%s\n" `ocamldep -sort *.ml` > $(DEPFILE) - printf "\n%s\n" "`ocamldep *.mli *.ml`" >> $(DEPFILE) -$(PROG): $(DEPFILE) $(OBJ) - $(OCAMLC) $(OCAMLFLAGS) -o $@ $(filter-out $(DEPFILE), $^) -all: $(PROG) -clean: - $(RM) $(CLEAN) $(OBJ) $(PROG) $(INTER) -dist-clean: clean - $(RM) $(DEPFILE) +$(PROG): $(_OBJ) + $(OCAMLC) $(OCAMLFLAGS) -o $@ $^ -.DEFAULT_GOAL:= $(PROG) -.SUFFIXES: +all: $(PROG) -- cgit v1.2.3-70-g09d2