Remove spurious debugging messages.
[tatoo.git] / build
1 #!/usr/bin/env ocaml
2
3 let file_content =
4   let buffer = Buffer.create 128 in
5   begin fun f ->
6     Buffer.clear buffer;
7     try
8       let in_f = open_in f in
9       while true do
10         let line = input_line in_f in
11         Buffer.add_string buffer line;
12         Buffer.add_char buffer ' ';
13       done;
14       failwith "finished"
15     with
16       e -> let s = Buffer.contents buffer in s
17   end
18
19 let target = ref [ ]
20 let debug = ref false
21 let profile = ref false
22 let verbose = ref false
23
24 let dir = Sys.getcwd ()
25 let project_root = Filename.dirname Sys.argv.(0)
26
27 let () =
28   for i = 1 to Array.length Sys.argv - 1 do
29     match Sys.argv.(i) with
30     | "-d" -> debug := true
31     | "-p" -> profile := true
32     | "-v" -> verbose := true
33     | x -> target := x :: !target
34   done
35
36 let oprofile = if !profile then " -tag profile " else ""
37 let odebug = if !profile then " -tag debug " else ""
38 let clean_first = ref false
39 let () =
40   Sys.chdir project_root;
41   Printf.printf "Entering directory `%s'\n%!" project_root
42
43 let otarget = List.fold_left (fun acc t ->
44   if t = "clean" || t = "-clean" then (clean_first := true; acc)
45   else
46     let t =
47       if Filename.check_suffix t ".otarget" then
48         file_content ((Filename.chop_suffix t ".otarget") ^ ".itarget")
49       else t
50     in
51     t ^ " " ^ acc) "" (if (!target == []) then [ "main.otarget" ] else !target)
52 let overbose = if !verbose then " -classic-display " else ""
53 let clean_cmd = if !clean_first then "ocamlbuild -clean;" else ""
54 let build_cmd = if otarget = "" then "" else
55     Printf.sprintf "ocamlbuild -use-ocamlfind %s %s %s %s"
56       overbose  oprofile  odebug otarget
57 let i = Sys.command  (clean_cmd ^ build_cmd)
58 let () = Sys.chdir dir;
59   Printf.printf "Leaving directory `%s'\n%!" project_root
60 let _ = exit i