Commit | Line | Data |
---|---|---|
feec80c3 C |
1 | # Bundles the original menhirLib package without modifications. |
2 | # This Makefile integrates its build process with coccinelle. | |
3 | ||
4 | # the build process is conventional build of the ml files, with | |
5 | # the exception that all modules are packed as a submodule of | |
6 | # a master module "MenhirLib" instead of an archive file. | |
7 | ||
8 | ifneq ($(MAKECMDGOALS),distclean) | |
9 | include ../../Makefile.config | |
10 | endif | |
11 | ||
755320b0 C |
12 | OCAMLCFLAGS ?= -g |
13 | OPTFLAGS ?= -g | |
d6ce1786 | 14 | |
feec80c3 C |
15 | VERSION=20120123 |
16 | MENHIRDIR=menhir-$(VERSION) | |
17 | MENHIRLIB=$(MENHIRDIR)/src | |
18 | MENHIRMARKER=$(MENHIRLIB)/.marker | |
19 | ||
755320b0 C |
20 | OCAMLC_CMD=$(OCAMLC) $(OCAMLCFLAGS) -I $(MENHIRLIB) |
21 | OCAMLOPT_CMD=$(OCAMLOPT) $(OPTFLAGS) -I $(MENHIRLIB) | |
feec80c3 C |
22 | OCAMLDEP_CMD=$(OCAMLDEP) -I $(MENHIRLIB) |
23 | ||
d6ce1786 C |
24 | all: .depend |
25 | @$(MAKE) all-build | |
26 | all-build: .depend menhirLib.cma META | |
27 | ||
28 | all.opt: .depend | |
29 | @$(MAKE) all-opt-build | |
30 | all-opt-build: .depend menhirLib.cmxa META | |
feec80c3 | 31 | |
abad11c5 C |
32 | # prepares the source bundle for building. |
33 | .prepare: $(MENHIRMARKER) | |
34 | touch .prepare | |
35 | ||
feec80c3 C |
36 | clean: |
37 | rm -f menhirLib.cma menhirLib.cmxa META \ | |
38 | $(MENHIRLIB)/*.cm[ioxa] \ | |
39 | $(MENHIRLIB)/*.o \ | |
abad11c5 | 40 | $(MENHIRLIB)/*.annot \ |
feec80c3 C |
41 | $(MENHIRLIB)/engineTypes.mli $(MENHIRLIB)/tableFormat.mli \ |
42 | menhirLib.cm[ioxa] menhirLib.[oa] \ | |
43 | .depend | |
44 | ||
45 | distclean: clean | |
46 | rm -rf $(MENHIRDIR) | |
abad11c5 | 47 | rm -f .prepare |
feec80c3 C |
48 | |
49 | $(MENHIRMARKER): $(MENHIRDIR).tar.gz | |
50 | $(TAR) xfvz $< | |
51 | touch $@ | |
52 | ||
53 | $(MENHIRDIR).tar.gz: | |
54 | @echo "$@ not found. Please download it and drop it in this directory ($(pwd))." | |
55 | @false | |
56 | ||
d6ce1786 | 57 | .PHONEY: all all.opt all-build all-opt-build clean distclean depend depend-build |
feec80c3 C |
58 | |
59 | # Sources needed for coccinelle | |
60 | MODULES=infiniteArray packedIntArray rowDisplacement engineTypes \ | |
61 | engine tableFormat tableInterpreter convert | |
62 | ||
63 | MLI=$(MODULES:%=$(MENHIRLIB)/%.mli) | |
64 | SRC=$(MODULES:%=$(MENHIRLIB)/%.ml) | |
65 | ||
66 | # Link | |
67 | menhirLib.cma: .depend $(MLI:.mli=.cmi) $(SRC:.ml=.cmo) | |
68 | $(OCAMLC_CMD) -pack -o menhirLib.cmo $(SRC:.ml=.cmo) | |
69 | $(OCAMLC_CMD) -a -o menhirLib.cma menhirLib.cmo | |
70 | ||
71 | menhirLib.cmxa: .depend $(MLI:.mli=.cmi) $(SRC:.ml=.cmx) | |
72 | $(OCAMLOPT) -pack -o menhirLib.cmx $(SRC:.ml=.cmx) | |
73 | $(OCAMLOPT) -a -o menhirLib.cmxa menhirLib.cmx | |
74 | ||
75 | # Generic rules | |
76 | .SUFFIXES: .ml .mli .cmo .cmi .cmx | |
77 | .PRECIOUS: $(MLI) | |
78 | ||
79 | .ml.mli: | |
d6ce1786 | 80 | $(OCAMLC_CMD) -for-pack MenhirLib -i $< > $@ |
feec80c3 C |
81 | |
82 | .mli.cmi: | |
83 | $(OCAMLC_CMD) -for-pack MenhirLib -c $< | |
84 | ||
85 | .ml.cmo: | |
86 | $(OCAMLC_CMD) -for-pack MenhirLib -c $< | |
87 | ||
88 | .ml.cmx: | |
89 | $(OCAMLOPT_CMD) -for-pack MenhirLib -c $< | |
90 | ||
91 | META: $(MENHIRLIB)/META | |
92 | cp $< $@ | |
93 | ||
94 | # the 'depend' target | |
95 | .depend depend: $(MENHIRMARKER) | |
d6ce1786 C |
96 | @$(MAKE) depend-build |
97 | ||
98 | depend-build: $(MENHIRMARKER) $(SRC) $(MLI) | |
feec80c3 C |
99 | $(OCAMLDEP_CMD) $(MENHIRLIB)/*.mli $(MENHIRLIB)/*.ml > .depend |
100 | ||
d6ce1786 C |
101 | # extra dependencies that are needed to generate mli files |
102 | # that are needed for ocamldep | |
103 | $(MENHIRLIB)/tableFormat.mli: $(MENHIRLIB)/packedIntArray.cmi $(MENHIRLIB)/engineTypes.cmi | |
104 | ||
feec80c3 C |
105 | ifneq ($(MAKECMDGOALS),clean) |
106 | ifneq ($(MAKECMDGOALS),distclean) | |
d6ce1786 | 107 | ifneq ($(MAKECMDGOALS),depend-build) |
abad11c5 C |
108 | ifneq ($(FEATURE_OCAMLBUILD),yes) |
109 | -include .depend | |
110 | endif | |
d6ce1786 | 111 | endif |
feec80c3 C |
112 | endif |
113 | endif | |
d6ce1786 C |
114 | |
115 | include ../../Makefile.common |