summaryrefslogtreecommitdiff
path: root/gnu.ocaml.prog.mk
diff options
context:
space:
mode:
authorGrégoire Duchêne <gduchene@awhk.org>2014-08-28 12:20:26 +0200
committerGrégoire Duchêne <gduchene@awhk.org>2014-08-28 12:20:26 +0200
commit638d2159485e3605f5482aeda90506025a9f4d0f (patch)
treed1c56f8989c712c5289caab9619d33fc41914040 /gnu.ocaml.prog.mk
First commit
Diffstat (limited to 'gnu.ocaml.prog.mk')
-rw-r--r--gnu.ocaml.prog.mk69
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: