Release coccinelle-0.1.2
[bpt/coccinelle.git] / engine / Makefile
index 044cc14..105528d 100644 (file)
 # Coccinelle under other licenses.
 
 
+##############################################################################
+# Variables
+##############################################################################
+#TARGET=matcher
 TARGET=cocciengine
 CTLTARGET=engine
 
-SOURCES = flag_engine.ml lib_engine.ml pretty_print_engine.ml \
-         check_exhaustive_pattern.ml \
-         check_reachability.ml \
-         c_vs_c.ml isomorphisms_c_c.ml \
-          cocci_vs_c_3.ml pattern3.ml sgrep.ml transformation3.ml  \
-         asttomember.ml asttoctl2.ml ctltotex.ml \
-         postprocess_transinfo.ml ctlcocci_integration.ml
+SRC= flag_matcher.ml lib_engine.ml pretty_print_engine.ml \
+      check_exhaustive_pattern.ml \
+      check_reachability.ml \
+      c_vs_c.ml isomorphisms_c_c.ml \
+      cocci_vs_c.ml pattern_c.ml sgrep.ml transformation_c.ml  \
+      asttomember.ml asttoctl2.ml ctltotex.ml \
+      postprocess_transinfo.ml ctlcocci_integration.ml
+
+#c_vs_c.ml
+#SRC= flag_matcher.ml \
+#  c_vs_c.ml cocci_vs_c.ml \
+#  lib_engine.ml \
+#  pattern_c.ml transformation_c.ml 
+
+#LIBS=../commons/commons.cma ../parsing_c/parsing_c.cma
+#INCLUDES= -I ../commons -I ../parsing_c
+INCLUDES = -I ../commons -I ../commons/ocamlextra -I ../globals \
+              -I ../ctl -I ../parsing_cocci -I ../parsing_c 
+LIBS=../commons/commons.cma ../globals/globals.cma \
+     ../ctl/ctl.cma ../parsing_c/parsing_c.cma ../parsing_cocci/cocci_parser.cma
+
+SYSLIBS= str.cma unix.cma 
+
 
 # just to test asttoctl
 # CTLSOURCES = lib_engine.ml pretty_print_engine.ml asttoctl.ml ctltotex.ml \
 #      main.ml
 
-INCLUDES = -I ../commons -I ../commons/ocamlextra -I ../globals \
-              -I ../ctl -I ../parsing_c -I ../parsing_cocci
-
-SYSLIBS = str.cma unix.cma
-LIBS=../commons/commons.cma ../globals/globals.cma \
-     ../ctl/ctl.cma ../parsing_c/c_parser.cma ../parsing_cocci/cocci_parser.cma
-
+##############################################################################
+# Generic variables
+##############################################################################
 
-# The Caml compilers.
+#for warning:  -w A 
+#for profiling:  -p -inline 0   with OCAMLOPT
 OCAMLCFLAGS ?= -g -dtypes
-OCAMLC =ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
-OCAMLOPT = ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
-OCAMLDEP = ocamldep$(OPTBIN) $(INCLUDES)
-
-EXEC=$(TARGET).byte
-LIB=$(TARGET).cma
-OPTLIB=$(LIB:.cma=.cmxa)
-
-CTLEXEC=$(CTLTARGET)
 
-OBJS = $(SOURCES:.ml=.cmo)
-OPTOBJS = $(OBJS:.cmo=.cmx)
+OCAMLC=ocamlc$(OPTBIN) $(OCAMLCFLAGS) $(INCLUDES)
+OCAMLOPT=ocamlopt$(OPTBIN) $(OPTFLAGS) $(INCLUDES)
+OCAMLLEX=ocamllex$(OPTBIN) #-ml
+OCAMLYACC=ocamlyacc -v
+OCAMLDEP=ocamldep$(OPTBIN) $(INCLUDES)
+OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDES)
 
-CTLOBJS = $(CTLSOURCES:.ml=.cmo)
-CTLOPTOBJS = $(CTLOBJS:.cmo=.cmx)
 
+OBJS = $(SRC:.ml=.cmo)
+OPTOBJS = $(SRC:.ml=.cmx)
 
-#all: $(EXEC) $(LIB)
-all: $(LIB)
 
-all.opt: $(OPTLIB)
+##############################################################################
+# Top rules
+##############################################################################
+all: $(TARGET).cma
+all.opt: $(TARGET).cmxa
 
-ctl: $(CTLEXEC)
+$(TARGET).cma: $(OBJS)
+       $(OCAMLC) -a -o $(TARGET).cma $(OBJS)
 
+$(TARGET).cmxa: $(OPTOBJS) $(LIBS:.cma=.cmxa)
+       $(OCAMLOPT) -a -o $(TARGET).cmxa $(OPTOBJS)
 
-$(LIB): $(OBJS)
-       $(OCAMLC) -a -o $(LIB) $(OBJS)
+$(TARGET).top: $(OBJS) $(LIBS)
+       $(OCAMLMKTOP) -o $(TARGET).top $(SYSLIBS) $(LIBS) $(OBJS)
 
-# clean rule for LIB
 clean::
-       rm -f $(LIB)
+       rm -f $(TARGET).top
 
 
-$(OPTLIB): $(OPTOBJS) 
-       $(OCAMLOPT) -a -o $(OPTLIB) $(OPTOBJS)
 
+##############################################################################
+# Pad's rules
+##############################################################################
 
-$(EXEC): $(OBJS) main.cmo $(LIBS)
-       $(OCAMLC) -o $(EXEC) $(SYSLIBS) $(LIBS) $(OBJS) main.cmo
+##############################################################################
+# Generic rules
+##############################################################################
 
-$(CTLEXEC): $(CTLOBJS) $(LIBS)
-       $(OCAMLC) -o $(CTLEXEC) $(SYSLIBS) $(LIBS) $(CTLOBJS)
-
-
-# clean rule for LIB.opt
-clean::
-       rm -f $(OPTLIB) $(LIB:.cma=.a)  
-       rm -f $(TARGET) rm -f $(TARGET).byte
-       rm -f $(CTLTARGET)
-
-
-.SUFFIXES:
 .SUFFIXES: .ml .mli .cmo .cmi .cmx
 
 .ml.cmo:
        $(OCAMLC) -c $<
-
 .mli.cmi:
        $(OCAMLC) -c $<
-
 .ml.cmx:
        $(OCAMLOPT) -c $<
 
+.ml.mldepend: 
+       $(OCAMLC) -i $<
 
-# clean rule for others files
 clean::
-       rm -f *.cm[iox] *.o  *.annot
-       rm -f *~ .*~ #*# 
-
-beforedepend:
+       rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot
+clean::
+       rm -f *~ .*~ gmon.out #*#
 
-depend: beforedepend
-       $(OCAMLDEP) *.mli *.ml > .depend
+beforedepend::
 
-.depend: 
-       $(OCAMLDEP) *.mli *.ml > .depend
+depend:: beforedepend
+       $(OCAMLDEP) *.mli *.ml    > .depend
 
 -include .depend