CAMLP4FLAGS=@CAMLP4FLAGS@
-PPOPTSFLAGS= $($CAMLP4FLAGS:%=ppopt(%))
-OCAMLBUILDFLAGS=-j 0 -use-ocamlfind @OCAMLBUILDFLAGS@
+OCAMLBUILDFLAGS=-j 0 -use-ocamlfind @OCAMLBUILDFLAGS@ $(CAMLP4FLAGS:%=-tag %)
OCAMLBUILD=@OCAMLBUILD@
PACKAGE = @PACKAGE_TARNAME@
- TARGETS=tatoo.native
+ NATIVE=$(PACKAGE).native
+ BYTE=$(PACKAGE).byte
+ TARGETS=$(NATIVE)
+
ifeq ($(BYTE), true)
- TARGETS += tatoo.byte
+ TARGETS += $(BYTE)
endif
+
INLINE=@INLINE@
- TAGS= inline($INLINE)
+ TAGS= -tag 'inline($(INLINE))'
- .PHONY: clean distclean
+ .PHONY: clean distclean test test_byte test_native do_test all $(TARGETS)
- all: $(TARGETS)
+ all:
@
%:
- open Ocamlbuild_plugin ;;
+ open Ocamlbuild_plugin
+ let includes =
+ let open Pathname in
+ let d = Array.to_list (readdir "include") in
+ List.map (concat "include") d
- let includes = [ "include/utils.ml"; "include/utils32.ml"; "include/utils64.ml"; "include/debug.ml" ]
+let ml_str_rule () =
+ rule ".ml.str" ~dep:"%.ml.str" ~prod:"%.ml"
+ (fun env _ ->
+ let mlstr = env "%.ml.str" and ml = env "%.ml" in
+ let cmd = Printf.sprintf "echo -n 'let content = \"' > %s ;\
+ sed -e 's/\\([\"\\\\]\\)/\\\\\\1/g' %s | sed -e 's/^\\(.*\\)$/\\1\\\\n\\\\/g' >> %s ;\
+ echo '' >> %s ;\
+ echo '\"' >> %s" ml mlstr ml ml ml
+ in
+ Cmd ( Sh cmd ))
+
let () =
- dispatch begin function
+ dispatch (function
| After_rules ->
dep ["ocaml";"compile";] includes;
dep ["ocaml";"ocamldep"; ] includes;
- pflag ["ocaml";"compile";] "ppopt" (fun s -> S [A"-ppopt"; A (s)]);
+ pflag ["ocaml";"compile";] "ppopt" (fun s -> S [A"-ppopt"; A (s)]);
pflag ["ocaml";"ocamldep";] "ppopt" (fun s -> S [A"-ppopt"; A (s)]);
+ ml_str_rule ()
| _ -> ()
-
- end;;
+ )