X-Git-Url: http://git.nguyen.vg/gitweb/?p=tatoo.git;a=blobdiff_plain;f=build;h=d5eb3a558fe1345e9a71fdf47ef0488f7aebe69d;hp=ed3876a9cdbfcd54f8ab1d39e9e1c7a657ff051d;hb=90abd87dee295c60122d5dc1cfc6c27d1d92e903;hpb=d89f59cf6220e605bfbb67fd3cb83f9165fde5a5 diff --git a/build b/build index ed3876a..d5eb3a5 100755 --- 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