Coccinelle release-1.0.0-rc11
[bpt/coccinelle.git] / ocaml / Makefile
1 ##############################################################################
2 # Variables
3 ##############################################################################
4 #TARGET=cocciocaml
5 -include ../Makefile.config
6 -include Makefile.doc
7
8 TARGET=cocciocaml
9
10 SRC=coccilib.ml ocamlcocci_aux.ml $(OCAMLCOCCI_FILE) prepare_ocamlcocci.ml run_ocamlcocci.ml
11
12 #LIBS=../commons/commons.cma ../parsing_c/parsing_c.cma
13 #INCLUDES= -I ../commons -I ../parsing_c
14 INCLUDES = -I ../commons -I ../commons/ocamlextra -I ../globals \
15 -I ../parsing_cocci -I ../parsing_c
16 LIBS=../commons/commons.cma ../globals/globals.cma \
17 ../parsing_c/parsing_c.cma ../parsing_cocci/cocci_parser.cma
18
19 SYSLIBS= str.cma unix.cma
20
21 ##############################################################################
22 # Generic variables
23 ##############################################################################
24
25 #for warning: -w A
26 #for profiling: -p -inline 0 with OCAMLOPT
27 OCAMLCFLAGS ?= -g -dtypes
28 OPTFLAGS?=$(OCAMLCFLAGS)
29
30 OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
31 OCAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
32 OCAMLLEX=ocamllex$(OPTBIN) #-ml
33 OCAMLYACC=ocamlyacc -v
34 OCAMLDEP=ocamldep$(OPTBIN) $(INCLUDES)
35 OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES)
36
37
38 OBJS = $(SRC:.ml=.cmo)
39 OPTOBJS = $(SRC:.ml=.cmx)
40
41
42 ##############################################################################
43 # Top rules
44 ##############################################################################
45 all: $(TARGET).cma
46 all.opt: $(TARGET).cmxa
47
48 $(TARGET).cma: $(OBJS)
49 $(OCAMLC) -a -o $(TARGET).cma $(OBJS)
50
51 $(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa)
52 $(OCAMLOPT) -a -o $(TARGET).cmxa $(OPTOBJS)
53
54 $(TARGET).top: $(OBJS) $(LIBS)
55 $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS)
56
57 clean::
58 rm -f $(TARGET).top
59
60
61
62 ##############################################################################
63 # Pad's rules
64 ##############################################################################
65
66 ##############################################################################
67 # Generic rules
68 ##############################################################################
69
70 .SUFFIXES: .ml .mli .cmo .cmi .cmx
71
72 .ml.cmo:
73 $(OCAMLC) -c $<
74 .mli.cmi:
75 $(OCAMLC) -c $<
76 .ml.cmx:
77 $(OCAMLOPT) -c $<
78
79 .ml.mldepend:
80 $(OCAMLC) -i $<
81
82 clean::
83 rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot
84 rm -f *~ .*~ gmon.out #*#
85
86 distclean::
87 rm -f .depend
88
89 beforedepend::
90
91 depend:: beforedepend
92 $(OCAMLDEP) *.mli *.ml > .depend
93
94 -include .depend