Newer
Older
module S = Set.Make(String)
let env_vars = ref (S.empty)
let env_var_modified v =
env_vars := S.add v !env_vars
let display_env_vars () =
let display var = Printf.printf "%s=%s\n" var (Unix.getenv var)
in S.iter display !env_vars;
Stdlib.flush Stdlib.stdout
let coldir = Filename.dirname Sys.executable_name
let concats base dirs = List.fold_left Filename.concat base dirs
let eclipsedir = ref (concats coldir ["Bin";"ECLIPSE_V7.0_45"])
let absolutise_cmdline s =
if Filename.is_relative s then
Filename.concat (Sys.getcwd ()) s
else s
let argspec =
["--eclipsedir", Arg.String (fun s -> eclipsedir := absolutise_cmdline s), " set eclipsedir directory";
]
let () = Arg.parse (Arg.align argspec)
"compile_colibri"
let arch = if Sys.win32 then "x86_64_nt" else "x86_64_linux"
let () = Unix.putenv "ECLIPSEDIR" !eclipsedir
let () = Unix.putenv "ARCH" arch
let path_sep = if Sys.win32 then ";" else ":"
let extend_env var value =
begin
(match Unix.getenv var with
| exception Not_found ->
Unix.putenv var value
| s -> Unix.putenv var (value^path_sep^s));
env_var_modified var
end
let eclipselib = Filename.concat !eclipsedir "lib"
let eclipseexe = Filename.concat eclipselib arch
let colibridir = concats coldir ["Src";"COLIBRI"]
let () =
if Sys.win32
then begin
extend_env "PATH" eclipseexe;
extend_env "PATH" colibridir;
extend_env "PATH" (List.fold_left Filename.concat colibridir ["lib";"v7";arch])
end
else
extend_env "LD_LIBRARY_PATH" eclipseexe
let () =
Sys.chdir colibridir;
env_var_modified "ECLIPSEDIR";
env_var_modified "ARCH";
display_env_vars ();
let exe = Filename.concat eclipseexe "eclipse.exe" in
Unix.execv exe
[| exe;
"-b"; "col_solve_dumpeco.pl";
"-e"; "halt";
"-g"; "3000M";
|]