X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=myocamlbuild.ml;h=dbc0a4549d4d3941d5ee536cd1dccb10c3e63d91;hb=3fadb034bfc0075d420bdd1383214014500501b8;hp=2d9913ed76fd456be656e45551f5cbb4da6c495b;hpb=30bc0bb1291426e5e26eb2dee1ffc41e4c246349;p=tatoo.git diff --git a/myocamlbuild.ml b/myocamlbuild.ml index 2d9913e..dbc0a45 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -1,28 +1,28 @@ open Ocamlbuild_plugin -open Command +let includes = + let open Pathname in + let d = Array.to_list (readdir "include") in + List.map (concat "include") d -let ocamlfind_packages = "unix,ulex,expat,camlp4,camlp4.lib,camlp4.macro" -let ocamlfind x = S[ T (Tags.singleton "ocamlfind"); - A "ocamlfind"; x ; - A "-package"; - A ocamlfind_packages; - A "-syntax"; - A "camlp4o"; - A "-ppopt"; A "-I"; A"-ppopt"; A"include" - ] - -let () = dispatch begin - function - | Before_rules -> - Options.ocamlc := ocamlfind (A"ocamlc"); - Options.ocamlopt := ocamlfind (A"ocamlopt"); - Options.ocamldep := ocamlfind (A"ocamldep"); - Options.ocamldoc := ocamlfind (A"ocamldoc"); - Options.ocamlmktop := ocamlfind (A"ocamlmktop"); - dep [ "extension:ml" ] - (List.map (fun s -> "include/" ^ s ) - (Array.to_list (Pathname.readdir "include"))); - flag [ "ocaml"; "link" ] (A"-linkpkg") - | _ -> () -end +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 (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 () + | _ -> () + )