]> matita.cs.unibo.it Git - helm.git/blob - helm/ocaml/Makefile.common.in
* .mli added where needed
[helm.git] / helm / ocaml / Makefile.common.in
1 # This Makefile must be included by another one defining:
2 #  $PACKAGE
3 #  $REQUIRES
4 #  $PREDICATES
5 #  $INTERFACE_FILES
6 #  $IMPLEMENTATION_FILES
7 #  $EXTRA_OBJECTS_TO_INSTALL
8 # and put in a directory where there is a .depend file.
9
10 OCAMLFIND_DEST_DIR = @OCAMLFIND_DEST_DIR@
11
12 OCAMLOPTIONS = -package "$(REQUIRES)" -predicates "$(PREDICATES)"
13 OCAMLC = ocamlfind ocamlc $(OCAMLOPTIONS)
14 OCAMLOPT = ocamlfind ocamlopt $(OCAMLOPTIONS)
15 OCAMLDEP = ocamldep
16
17 ARCHIVE = $(PACKAGE).cma
18 ARCHIVE_OPT = $(PACKAGE).cmxa
19 OBJECTS_TO_INSTALL = $(ARCHIVE) $(ARCHIVE_OPT) $(ARCHIVE_OPT:%.cmxa=%.a) \
20                      $(INTERFACE_FILES) $(INTERFACE_FILES:%.mli=%.cmi) \
21                      $(EXTRA_OBJECTS_TO_INSTALL)
22
23 $(ARCHIVE): $(IMPLEMENTATION_FILES:%.ml=%.cmo)
24         $(OCAMLC) -a -o $@ $^
25
26 $(ARCHIVE_OPT): $(IMPLEMENTATION_FILES:%.ml=%.cmx)
27         $(OCAMLOPT) -a -o $@ $^
28
29 all: $(ARCHIVE)
30 opt: $(ARCHIVE_OPT)
31
32 depend:
33         $(OCAMLDEP) $(INTERFACE_FILES) $(IMPLEMENTATION_FILES) > .depend
34
35 .SUFFIXES: .ml .mli .cmo .cmi .cmx
36 .ml.cmo:
37         $(OCAMLC) -c $<
38 .mli.cmi:
39         $(OCAMLC) -c $<
40 .ml.cmx:
41         $(OCAMLOPT) -c $<
42
43 clean:
44         rm -f *.cm[ioax] *.cmxa *.o *.a
45
46 install:
47         mkdir $(OCAMLFIND_DEST_DIR)/$(PACKAGE)
48         cp $(OBJECTS_TO_INSTALL) $(OCAMLFIND_DEST_DIR)/$(PACKAGE)
49
50 uninstall:
51         cd $(OCAMLFIND_DEST_DIR)/$(PACKAGE) && rm -f $(OBJECTS_TO_INSTALL)
52         rmdir $(OCAMLFIND_DEST_DIR)/$(PACKAGE)
53
54 .PHONY: all opt depend install uninstall clean
55
56 include .depend