Add a new test case.
[tatoo.git] / build
diff --git a/build b/build
index ed3876a..d5eb3a5 100755 (executable)
--- a/build
+++ b/build
@@ -1,24 +1,36 @@
 #!/usr/bin/env ocaml
 
-let target = ref "main.otarget"
+let target = ref [ "main.otarget" ]
 let debug = ref false
 let profile = ref false
 let verbose = ref false
 
+let dir = Sys.getcwd ()
+let project_root = Filename.dirname Sys.argv.(0)
+
 let () =
   for i = 1 to Array.length Sys.argv - 1 do
     match Sys.argv.(i) with
     | "-d" -> debug := true
     | "-p" -> profile := true
     | "-v" -> verbose := true
-    | x -> target := x
+    | x -> target := x :: !target
   done
 
 let oprofile = if !profile then " -tag profile " else ""
 let odebug = if !profile then " -tag debug " else ""
-let otarget = if !target = "clean" then " -clean " else !target
+let otarget = List.fold_left (fun acc t ->
+  let t = if t = "clean" then "-clean" else t in
+  t ^ " " ^ acc) "" !target
 let overbose = if !verbose then " -classic-display " else ""
+let () =
+  Sys.chdir project_root;
+  Printf.printf "Entering directory `%s'\n%!" project_root
 
-let cmd = "ocamlbuild -use-ocamlfind " ^ overbose ^ oprofile ^ odebug ^ otarget
-let _ = Sys.command cmd
+let cmd = Printf.sprintf "ocamlbuild -use-ocamlfind %s %s %s %s"
+  overbose  oprofile  odebug otarget
+let i = Sys.command cmd
+let () = Sys.chdir dir;
+  Printf.printf "Leaving directory `%s'\n%!" project_root
+let _ = exit i