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"] & 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 |
---|