diff options
| author | Grégoire Duchêne <gduchene@awhk.org> | 2014-08-28 12:20:26 +0200 |
|---|---|---|
| committer | Grégoire Duchêne <gduchene@awhk.org> | 2014-08-28 12:20:26 +0200 |
| commit | 638d2159485e3605f5482aeda90506025a9f4d0f (patch) | |
| tree | d1c56f8989c712c5289caab9619d33fc41914040 /gnu.ocaml.prog.mk | |
First commit
Diffstat (limited to 'gnu.ocaml.prog.mk')
| -rw-r--r-- | gnu.ocaml.prog.mk | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/gnu.ocaml.prog.mk b/gnu.ocaml.prog.mk new file mode 100644 index 0000000..8dbc129 --- /dev/null +++ b/gnu.ocaml.prog.mk @@ -0,0 +1,69 @@ +# Copyright (c) 2014, Grégoire Duchêne <gduchene@awhk.org> +# +# 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 + +ifndef OCAMLC +ifdef OCAMLNATIVE +OCAMLC= ocamlfind ocamlopt +else +OCAMLC= ocamlfind ocamlc +endif +endif + +ifdef PKG +OCAMLFLAGS+= -linkpkg -package "$(PKG)" +endif + +OCAMLFLAGS+= $(DEBUG) + +ifndef PROG +PROG= a.out +endif + +all: ${PROG} + +SRC+= $(CSRC) + +-include Makefile.dep + +ifdef CSRC +ifndef OCAMLNATIVE +OCAMLFLAGS+= -custom +endif +endif + +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 + +$(PROG): $(OBJ) + $(OCAMLC) $(OCAMLFLAGS) -o $@ $^ +clean: + $(RM) $(CLEAN) $(OBJ) $(PROG) +dep: + printf "SRC+=\t%s\n" `ocamldep -sort *.ml` > Makefile.dep + printf "\n%s\n" "`ocamldep *.mli *.ml`" >> Makefile.dep + +.DEFAULT_GOAL:= $(PROG) +.SUFFIXES: |
