open Ocamlbuild_plugin ;; 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 | After_rules -> dep ["ocaml";"compile";] includes; dep ["ocaml";"ocamldep"; ] includes; 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;;