# Copyright (c) 2014, GrĂ©goire DuchĂȘne # # Permission to use, copy, modify, and/or distribute this software for # any purpose with or without fee is hereby granted, provided that the # above copyright notice and this permission notice appear in all # copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL # WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED # WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE # AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL # DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR # PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER # 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 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)) $(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) .DEFAULT_GOAL:= $(PROG) .SUFFIXES: