4 let buffer = Buffer.create 128 in
8 let in_f = open_in f in
10 let line = input_line in_f in
11 Buffer.add_string buffer line;
12 Buffer.add_char buffer ' ';
16 e -> let s = Buffer.contents buffer in s
21 let profile = ref false
22 let verbose = ref false
25 let dir = Sys.getcwd ()
26 let project_root = Filename.dirname Sys.argv.(0)
29 for i = 1 to Array.length Sys.argv - 1 do
30 match Sys.argv.(i) with
31 | "-d" -> debug := true
32 | "-p" -> profile := true
33 | "-v" -> verbose := true
34 | "-t" -> trace := true
35 | x -> target := x :: !target
37 let otrace = if !trace then " -tag htmltrace " else ""
38 let oprofile = if !profile then " -tag profile " else ""
39 let odebug = if !debug then " -tag debug " else ""
40 let clean_first = ref false
42 Sys.chdir project_root;
43 Printf.printf "Entering directory `%s'\n%!" project_root
45 let otarget = List.fold_left (fun acc t ->
46 if t = "clean" || t = "-clean" then (clean_first := true; acc)
49 if Filename.check_suffix t ".otarget" then
50 file_content ((Filename.chop_suffix t ".otarget") ^ ".itarget")
53 t ^ " " ^ acc) "" (if (!target == []) then [ "main.otarget" ] else !target)
54 let overbose = if !verbose then " -classic-display " else ""
55 let clean_cmd = if !clean_first then "ocamlbuild -clean;" else ""
56 let build_cmd = if otarget = "" then "" else
57 Printf.sprintf "ocamlbuild -use-ocamlfind %s %s %s %s %s"
58 overbose otrace oprofile odebug otarget
59 let i = Sys.command (clean_cmd ^ build_cmd)
60 let () = Sys.chdir dir;
61 Printf.printf "Leaving directory `%s'\n%!" project_root