X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=myocamlbuild.ml;h=3b3e516241494244cd78542b6ab72a2da5584cc3;hb=a718c76f2cf07c28fcf8a272e9ad699889049d3b;hp=5ce02af533c6bb663649a58225053673b7d1042b;hpb=ce09a30489dce8ac9e389c8c1525a34d1e02354e;p=tatoo.git diff --git a/myocamlbuild.ml b/myocamlbuild.ml index 5ce02af..3b3e516 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -1,53 +1,16 @@ 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 includes = ref StringSet.empty -let register_include dir = - if not (StringSet.mem dir !includes) then begin - includes := StringSet.add dir !includes; - dep [ "extension:ml" ] - (List.map (fun s -> dir ^ "/" ^ s ) - (Array.to_list (Pathname.readdir dir))) - end - -let set_flags tag_list action_list = - List.iter (fun s -> - List.iter (fun (fl, fu) -> - pflag s fl fu) - action_list - ) tag_list - -let macro_flags = [ - "macro_include", - (fun s -> register_include s; S [A"-ppopt"; A "-I"; A"-ppopt"; A s]); - "macro_define", (fun s -> S [A"-ppopt"; A ("-D"^s)]); -] - -let () = dispatch begin - function - | Before_rules -> () - | After_rules -> - set_flags [["ocaml";"compile"]; ["ocaml"; "ocamldep"] ] macro_flags; - pflag [ "ocaml"; "compile" ] "warning" (fun s -> (S[ A"-w"; A s])); - flag [ "ocaml"; "compile"; "debug" ] (S[ A"-g"; A"-ppopt"; A"-DDEBUG"]); - flag [ "ocaml"; "compile"; "htmltrace" ] (S[ A"-ppopt"; A"-DHTMLTRACE"]); - flag [ "ocaml"; "ocamldep"; "htmltrace" ] (S[ A"-ppopt"; A"-DHTMLTRACE"]); - flag [ "ocaml"; "link"; "debug" ] (A"-g"); - flag [ "ocaml"; "compile"; "profile"] (S[A"-ppopt"; A"-DPROFILE"]); - flag [ "ocaml"; "compile"; "profile"; "native"] (A"-p"); - flag [ "ocaml"; "link"; "profile"; "native"] (A"-p"); - pflag [ "ocaml"; "compile"; "native" ] "inline" (fun i -> (S[ A"-inline"; A i ])); - pflag [ "ocaml"; "compile" ] "unsafe" (fun s -> (if s = "true" then S[A"-ppopt";A "-unsafe"] else N)); - - - rule "Java compilation" - ~prod:"%.class" - ~dep:"%.java" - begin fun env _build -> - let java = env "%.java" in - let tags = tags_of_pathname java ++ "compile" in - Cmd( S[ A"javac" ; P java; T tags ]) - end - | _ -> () -end +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)]); + | _ -> () + )