Release coccinelle-0.2.0rc1
[bpt/coccinelle.git] / parsing_cocci / Makefile
1 -include ../Makefile.config
2
3 TARGET=cocci_parser
4
5 LEXER_SOURCES = lexer_cocci.mll
6 SCRIPT_LEXER_SOURCES = lexer_script.mll
7 PARSER_SOURCES = parser_cocci_menhir.mly
8 SOURCES = flag_parsing_cocci.ml type_cocci.ml ast_cocci.ml ast0_cocci.ml \
9 pretty_print_cocci.ml unparse_ast0.ml visitor_ast0_types.ml \
10 visitor_ast.ml visitor_ast0.ml compute_lines.ml comm_assoc.ml \
11 iso_pattern.ml iso_compile.ml single_statement.ml simple_assignments.ml \
12 ast0toast.ml check_meta.ml top_level.ml type_infer.ml \
13 test_exps.ml unitary_ast0.ml arity.ml index.ml context_neg.ml \
14 adjust_pragmas.ml insert_plus.ml function_prototypes.ml \
15 unify_ast.ml semantic_cocci.ml data.ml free_vars.ml parse_aux.ml disjdistr.ml \
16 $(LEXER_SOURCES:.mll=.ml) $(PARSER_SOURCES:.mly=.ml) \
17 $(SCRIPT_LEXER_SOURCES:.mll=.ml) \
18 get_constants.ml get_constants2.ml adjacency.ml parse_cocci.ml
19
20 LIBS=../commons/commons.cma ../globals/globals.cma
21 SYSLIBS = str.cma unix.cma
22
23 #MENHIR_PATH=$(shell ocamlfind query menhirLib)
24 MENHIR_PATH=../menhirlib
25
26 INCLUDES = -I ../commons -I ../commons/ocamlextra -I ../globals \
27 -I $(MENHIR_PATH)
28
29 MENHIR=$(MENHIR_PATH)/menhirLib.cmo
30 MENHIRO=$(MENHIR_PATH)/menhirLib.cmx
31
32
33 # The Caml compilers.
34 OCAMLCFLAGS ?= -g -dtypes
35 OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
36 OCAMLOPT = ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
37 OCAMLLEX = ocamllex$(OPTBIN)
38 OCAMLYACC= menhir --table
39 OCAMLDEP = ocamldep$(OPTBIN) $(INCLUDES)
40 EXEC=$(TARGET).byte
41 EXEC=$(TARGET)
42 LIB=$(TARGET).cma
43 OPTLIB=$(LIB:.cma=.cmxa)
44
45 GENERATED= $(LEXER_SOURCES:.mll=.ml) $(SCRIPT_LEXER_SOURCES:.mll=.ml) \
46 $(PARSER_SOURCES:.mly=.ml) $(PARSER_SOURCES:.mly=.mli)
47 OBJS = $(SOURCES:.ml=.cmo)
48 OPTOBJS = $(OBJS:.cmo=.cmx)
49
50
51 all: $(LIB)
52 local: $(EXEC)
53
54 all.opt: $(OPTLIB)
55
56 $(LIB): $(GENERATED) $(OBJS)
57 $(OCAMLC) -I $(MENHIR_PATH) -a -o $(LIB) $(MENHIR) $(OBJS)
58
59
60 $(OPTLIB): $(GENERATED) $(OPTOBJS)
61 $(OCAMLOPT) -I $(MENHIR_PATH) -a -o $(OPTLIB) $(MENHIRO) $(OPTOBJS)
62
63
64 $(EXEC): $(OBJS) main.cmo $(LIBS)
65 $(OCAMLC) -o $(EXEC) $(SYSLIBS) $(LIBS) $(OBJS) main.cmo
66
67
68
69
70 clean::
71 rm -f $(LIB)
72 rm -f $(OPTLIB) $(LIB:.cma=.a)
73 rm -f $(TARGET)
74
75
76
77
78 .SUFFIXES:
79 .SUFFIXES: .ml .mli .cmo .cmi .cmx
80
81 .ml.cmo:
82 $(OCAMLC) -c $<
83
84 .mli.cmi:
85 $(OCAMLC) -c $<
86
87 .ml.cmx:
88 $(OCAMLOPT) -c $<
89
90 $(LEXER_SOURCES:.mll=.ml) : $(LEXER_SOURCES)
91 $(OCAMLLEX) $(LEXER_SOURCES)
92
93 $(PARSER_SOURCES:.mly=.ml) $(PARSER_SOURCES:.mly=.mli) : $(PARSER_SOURCES)
94 $(OCAMLYACC) $(PARSER_SOURCES)
95
96 $(SCRIPT_LEXER_SOURCES:.mll=.ml): $(SCRIPT_LEXER_SOURCES)
97 $(OCAMLLEX) $(SCRIPT_LEXER_SOURCES)
98
99 distclean::
100 rm -f $(GENERATED)
101
102 # clean rule for others files
103 clean::
104 rm -f *.cm[iox] *.o *.annot
105 rm -f *~ .*~ #*#
106
107 distclean::
108 rm -f .depend
109
110 depend: $(GENERATED)
111 $(OCAMLDEP) *.mli *.ml > .depend
112
113 .depend:
114 $(OCAMLDEP) *.mli *.ml > .depend
115
116 -include .depend
117
118 lexer_cocci.ml: lexer_cocci.mll
119 parser_cocci_menhir.ml: parser_cocci_menhir.mly lexer_cocci.mll
120 parser_cocci_menhir.mli: parser_cocci_menhir.mly lexer_cocci.mll
121 lexer_script.ml: lexer_script.mll