Add -no-hygiene to ocamlbuild flags
[SXSI/xpathcomp.git] / build
1 #!/usr/bin/env ocaml
2 #use "myocamlbuild_config.ml"
3
4 let valid_targets = [ "distclean"; "clean"; "all" ] 
5
6 module Cmdline =
7   struct
8     open Arg
9     let set r s () = r := s
10     let targets = ref []
11     let flavor = ref "native"
12     let debug = ref ""
13     let profile = ref ""
14     let verbose = ref ""
15     let jobs = ref 0
16     let specs = align
17       [ "-verbose", Unit (set verbose "-classic-display"),
18         " Display compilation commands";
19
20         "-debug", Unit (set debug "-tag debug"),
21         " Build with debugging code";
22
23         "-profile", Unit (set profile "-tag profile"),
24         " Build with profiling code";
25
26         "-byte", Unit (set flavor "byte"),
27         " Produce bytecode instead of native code";
28         "-j", Int (fun i -> if i < 0 || i > 1024
29           then raise (Bad ("Invalid job count: " ^ string_of_int i))
30           else jobs:= i),
31         " Spawns n parallel jobs (0 for unlimited, max = 1024, default = 0)"
32       ]
33     let usage_msg =
34       "usage: " ^ Sys.argv.(0) ^
35         " [options] target ... target\nvalid targets are: " ^
36         ( match valid_targets with
37             [] | [ _ ] -> assert false
38           | l::ll -> (String.concat ", " ll) ^ " and " ^ l)
39     let parse () =
40       parse specs
41       (fun x ->
42         if List.mem x valid_targets
43         then targets := x :: !targets
44         else raise (Bad ("Invalid target: " ^ x))
45       )
46       usage_msg;
47       targets := List.rev !targets;
48       if !targets = [] then targets := [ "all" ]
49   end
50
51 let tests_targets = []
52 ;;
53 let () = Cmdline.parse ()
54 let cmd_list =
55   let ocamlbuild =
56     Printf.sprintf "ocamlbuild -no-hygiene %s %s %s -j %i "
57       !Cmdline.verbose !Cmdline.profile !Cmdline.debug !Cmdline.jobs
58   in
59   List.map begin function
60     | "distclean" -> "rm myocamlbuild_config.ml; ocamlbuild -clean"
61     | "clean" -> "ocamlbuild -clean"
62     | "all" -> ocamlbuild ^ (List.assoc !Cmdline.flavor main_targets)
63     | test ->
64       ocamlbuild ^ (List.assoc (test,!Cmdline.flavor) tests_targets)
65   end !Cmdline.targets
66
67 let () = List.iter (fun cmd -> ignore (Sys.command cmd) ) cmd_list