]> matita.cs.unibo.it Git - pkg-cerco/acc.git/blob - myocamlbuild.ml
Package description and copyright added.
[pkg-cerco/acc.git] / myocamlbuild.ml
1 open Ocamlbuild_plugin
2 open Myocamlbuild_config
3
4 let run_and_read      = Ocamlbuild_pack.My_unix.run_and_read
5 let blank_sep_strings = Ocamlbuild_pack.Lexers.blank_sep_strings
6
7 let find_packages () =
8   blank_sep_strings &
9     Lexing.from_string &
10       run_and_read "ocamlfind list | cut -d' ' -f1"
11
12 let find_syntaxes () = ["camlp4o"; "camlp4r"]
13
14 let ocamlfind x = S[A"ocamlfind"; x]
15
16
17 let _ = dispatch begin function
18    | Before_options ->
19        Options.ocamlc     := ocamlfind & A"ocamlc";
20        Options.ocamlopt   := ocamlfind & A"ocamlopt";
21        Options.ocamldep   := ocamlfind & A"ocamldep";
22        Options.ocamldoc   := A"admin/myocamldoc.exe";
23        Options.ocamlmktop := ocamlfind & A"ocamlmktop";
24
25    | After_rules ->
26        flag ["ocaml"; "link"; "program"] & A"-linkpkg";
27        List.iter begin fun pkg ->
28          flag ["ocaml"; "compile";  "pkg_"^pkg] & S[A"-package"; A pkg];
29          flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S[A"-package"; A pkg];
30          flag ["ocaml"; "doc";      "pkg_"^pkg] & S[A"-package"; A pkg];
31          flag ["ocaml"; "link";     "pkg_"^pkg] & S[A"-package"; A pkg];
32        end (find_packages ());
33        List.iter begin fun s ->
34          flag ["ocaml"; "compile";  "syntax_"^s] & S[A"-syntax"; A s];
35          flag ["ocaml"; "ocamldep"; "syntax_"^s] & S[A"-syntax"; A s];
36          flag ["ocaml"; "doc";      "syntax_"^s] & S[A"-syntax"; A s];
37        end (find_syntaxes ());
38        flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
39        flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
40
41        rule "admin/myocamldoc"
42          ~prod:"admin/myocamldoc.exe"
43          ~deps:["admin/myocamldoc"]
44          begin fun _ _ ->
45            Seq [ cp "admin/myocamldoc" "admin/myocamldoc.exe";
46                  chmod (A"+rx") "admin/myocamldoc.exe" ]
47          end;
48
49        dep  ["doc"] ["admin/myocamldoc.exe"]; 
50        dep  ["doc"; "docdir"; "extension:html"; "ocaml"] [ "doc/src/main" ]; 
51        flag ["doc"; "docdir"; "extension:html"; "ocaml"] 
52          (S[A "-intro"; A "doc/src/main" ]); 
53        flag ["doc"] (S[A "-keep-code"]); 
54        flag ["doc"] (S[A ("-I "^parser_lib)]);
55
56        ocaml_lib ~extern:true ~dir:parser_lib "cparser";
57
58    | _ -> ()
59 end