Release coccinelle-0.1
[bpt/coccinelle.git] / extra / Makefile
1 TARGET=extra
2
3 SOURCES = classic_patch.ml kbuild.ml maintainers.ml c_info.ml
4
5 SYSLIBS = str.cma unix.cma
6
7 LIBS=../commons/commons.cma ../parsing_c/parsing_c.cma ../globals/globals.cma
8 INCLUDES= -I ../commons -I ../globals -I ../parsing_cocci -I ../parsing_c
9
10 #for warning: -w A
11 #for profiling: -p -inline 0 with OCAMLOPT
12 OCAMLCFLAGS ?= -g -dtypes
13 OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
14 OCAMLOPT = ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
15 OCAMLDEP = ocamldep$(OPTBIN) $(INCLUDES)
16 OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES)
17
18
19 OBJS = $(SOURCES:.ml=.cmo)
20 OPTOBJS = $(SOURCES:.ml=.cmx)
21
22
23 all: $(TARGET).cma
24
25 all.opt: $(TARGET).cmxa
26
27 $(TARGET).byte: $(OBJS) $(LIBS)
28 $(OCAMLC) -o $(TARGET).byte $(SYSLIBS) $(LIBS) $(OBJS)
29
30 $(TARGET).opt: $(OPTOBJS) $(LIBS:.cma=.cmxa)
31 $(OCAMLOPT) -o $(TARGET).opt $(SYSLIBS:.cma=.cmxa) $(LIBS:.cma=.cmxa) $(OPTOBJS)
32
33 $(TARGET).cma: $(OBJS)
34 $(OCAMLC) -a -o $(TARGET).cma $(OBJS)
35
36 $(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa)
37 $(OCAMLOPT) -a -o $(TARGET).cmxa $(OPTOBJS)
38
39 $(TARGET).top: $(OBJS) $(LIBS)
40 $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS)
41
42 clean::
43 rm -f $(TARGET).byte $(TARGET).opt rm -f $(TARGET).top
44
45
46
47 .SUFFIXES: .ml .mli .cmo .cmi .cmx
48
49 .ml.cmo:
50 $(OCAMLC) -c $<
51 .mli.cmi:
52 $(OCAMLC) -c $<
53 .ml.cmx:
54 $(OCAMLOPT) -c $<
55
56 .ml.mldepend:
57 $(OCAMLC) -i $<
58
59 clean::
60 rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot
61
62 clean::
63 rm -f *~ .*~ gmon.out #*#
64
65 beforedepend::
66
67 depend:: beforedepend
68 $(OCAMLDEP) *.mli *.ml > .depend
69
70 -include .depend
71
72