Coccinelle release 1.0.0-rc13
[bpt/coccinelle.git] / tools / Makefile
index 35a7364..e86f2fb 100644 (file)
 # Coccinelle under other licenses.
 
 
--include ../Makefile.config
+ifneq ($(MAKECMDGOALS),distclean)
+include ../Makefile.config
+endif
+
+OCAMLCFLAGS ?= -g -dtypes
+OPTFLAGS ?= -g -dtypes
 
 PROGS=spp gitgrep splitpatch extract_c_and_res #generate_dependencies
 
 all: $(SUBDIRS) $(PROGS)
 
-# for recursive make
-all.opt: $(PROGS)
+all.opt:
+       @$(MAKE) $(PROGS) BUILD_OPT=yes
 
 gitgrep: gitgrep.ml
-       ocamlopt -o gitgrep str.cmxa gitgrep.ml
+       $(OCAMLOPT) -o gitgrep str.cmxa gitgrep.ml
 
 gitsort: gitsort.ml
-       ocamlopt -o gitsort str.cmxa gitsort.ml
+       $(OCAMLOPT) -o gitsort str.cmxa gitsort.ml
 
 isoprof: process_isoprofile.ml
-       ocamlc -g -o isoprof str.cma process_isoprofile.ml
+       $(OCAMLC) -g -o isoprof str.cma process_isoprofile.ml
 
 alloc_free: alloc_free.ml
-       ocamlopt -o alloc_free str.cmxa alloc_free.ml
+       $(OCAMLOPT) -o alloc_free str.cmxa alloc_free.ml
 
 # more flexible version of alloc_free
 bridge: bridge.ml
-       ocamlopt -o bridge str.cmxa dumper.mli dumper.ml bridge.ml
+       $(OCAMLOPT) -o bridge str.cmxa dumper.mli dumper.ml bridge.ml
 
 install_bridge: bridge
        cp -f bridge /usr/local/bin
@@ -59,46 +64,48 @@ INCLUDE=-I ../commons -I ../extra -I  ../parsing_c
 LIBS=../commons/commons.cma ../globals/globals.cma \
      ../parsing_c/parsing_c.cma ../extra/extra.cma
 
-OCAMLC=ocamlc$(OPTBIN) -g -dtypes   $(INCLUDE)
-OCAMLOPT=ocamlopt$(OPTBIN)   $(INCLUDE) $(OPTFLAGS)
-#OCAMLLEX=ocamllex$(OPTBIN) -ml
-OCAMLLEX=ocamllex$(OPTBIN)
-OCAMLYACC=ocamlyacc -v
-OCAMLDEP=ocamldep$(OPTBIN) $(INCLUDE)
-OCAMLMKTOP=ocamlmktop -g -custom $(INCLUDE)
+OCAMLC_CMD=$(OCAMLC) -thread $(OCAMLCFLAGS) $(INCLUDE)
+OCAMLOPT_CMD=$(OCAMLOPT) -thread $(OPTFLAGS) $(INCLUDE)
+OCAMLDEP_CMD=$(OCAMLDEP) $(INCLUDE)
+OCAMLMKTOP_CMD=$(OCAMLMKTOP) -g -custom $(INCLUDE)
+OCAMLYACC_CMD=$(OCAMLYACC) -v
 
 spp: spp.ml
-       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
-#      ocamlc -I ../commons/ -o spp str.cma unix.cma bigarray.cma  ../commons/common.cmo spp.ml
+       $(OCAMLC_CMD) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS) $+
 
 splitpatch: splitpatch.cmo
-       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $+
+       $(OCAMLC_CMD) -o $@ $(SYSLIBS) $(INCLUDE) $+
 
 extract_c_and_res: extract_c_and_res.cmo
-       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
+       $(OCAMLC_CMD) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
 
 generate_dependencies: generate_dependencies.cmo
-       $(OCAMLC) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
+       $(OCAMLC_CMD) -o $@ $(SYSLIBS) $(INCLUDE) $(LIBS)  $+
 
 .SUFFIXES: .ml .mli .cmo .cmi .cmx
 
 .ml.cmo:
-       $(OCAMLC) -c $<
+       $(OCAMLC_CMD) -c $<
 .mli.cmi:
-       $(OCAMLC) -c $<
+       $(OCAMLC_CMD) -c $<
 .ml.cmx:
-       $(OCAMLOPT) -c $<
+       $(OCAMLOPT_CMD) -c $<
 
 clean:
        rm -f $(PROGS)
        rm -f *.cm[ioxa] *.o *.a *.cmxa *.annot
+       rm -f .depend
 
-beforedepend::
+distclean: clean
 
-depend:: beforedepend
-       ocamldep $(INCLUDE) *.mli *.ml    > .depend
-
-distclean:: clean
-       rm -f .depend
+.PHONEY: depend
+.depend depend: beforedepend
+       ocamldep $(INCLUDE) *.mli *.ml > .depend
 
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),distclean)
 -include .depend
+endif
+endif
+
+include ../Makefile.common