- Try to do better pretty printing when array elements are individually
[bpt/coccinelle.git] / bundles / menhirLib / Makefile
CommitLineData
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
8ifneq ($(MAKECMDGOALS),distclean)
9include ../../Makefile.config
10endif
11
755320b0
C
12OCAMLCFLAGS ?= -g
13OPTFLAGS ?= -g
d6ce1786 14
feec80c3
C
15VERSION=20120123
16MENHIRDIR=menhir-$(VERSION)
17MENHIRLIB=$(MENHIRDIR)/src
18MENHIRMARKER=$(MENHIRLIB)/.marker
19
755320b0
C
20OCAMLC_CMD=$(OCAMLC) $(OCAMLCFLAGS) -I $(MENHIRLIB)
21OCAMLOPT_CMD=$(OCAMLOPT) $(OPTFLAGS) -I $(MENHIRLIB)
feec80c3
C
22OCAMLDEP_CMD=$(OCAMLDEP) -I $(MENHIRLIB)
23
d6ce1786
C
24all: .depend
25 @$(MAKE) all-build
26all-build: .depend menhirLib.cma META
27
28all.opt: .depend
29 @$(MAKE) all-opt-build
30all-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
36clean:
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
45distclean: 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
60MODULES=infiniteArray packedIntArray rowDisplacement engineTypes \
61 engine tableFormat tableInterpreter convert
62
63MLI=$(MODULES:%=$(MENHIRLIB)/%.mli)
64SRC=$(MODULES:%=$(MENHIRLIB)/%.ml)
65
66# Link
67menhirLib.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
71menhirLib.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
91META: $(MENHIRLIB)/META
92 cp $< $@
93
94# the 'depend' target
95.depend depend: $(MENHIRMARKER)
d6ce1786
C
96 @$(MAKE) depend-build
97
98depend-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
105ifneq ($(MAKECMDGOALS),clean)
106ifneq ($(MAKECMDGOALS),distclean)
d6ce1786 107ifneq ($(MAKECMDGOALS),depend-build)
abad11c5
C
108ifneq ($(FEATURE_OCAMLBUILD),yes)
109-include .depend
110endif
d6ce1786 111endif
feec80c3
C
112endif
113endif
d6ce1786
C
114
115include ../../Makefile.common