X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=myocamlbuild.ml;fp=myocamlbuild.ml;h=a1fe8e98e993a1c4b603ba13d6d0c9fdc4c8af2f;hp=2d9913ed76fd456be656e45551f5cbb4da6c495b;hb=29afc3e757d710479de98f3077698a350f810cef;hpb=22e1c16ec7b0def79669c7a96a8da1eaaa4ab47f diff --git a/myocamlbuild.ml b/myocamlbuild.ml index 2d9913e..a1fe8e9 100644 --- a/myocamlbuild.ml +++ b/myocamlbuild.ml @@ -1,28 +1,30 @@ open Ocamlbuild_plugin open Command -let ocamlfind_packages = "unix,ulex,expat,camlp4,camlp4.lib,camlp4.macro" +let includes = Hashtbl.create 17 +let register_include dir = + if not (Hashtbl.mem includes dir) then begin + Hashtbl.add includes dir (); + dep [ "extension:ml" ] + (List.map (fun s -> dir ^ "/" ^ s ) + (Array.to_list (Pathname.readdir dir))) + end -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 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 -> - 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") + List.iter (fun s -> + List.iter (fun (fl, fu) -> + pflag s fl fu) macro_flags + ) + [["ocaml";"compile"]; + ["ocaml";"ocamldep"] ] +; | _ -> () end