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) (fun s -> invalid_arg "No anonymous argument") "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 = match Unix.getenv var with | exception Not_found -> Unix.putenv var value | s -> Unix.putenv var (value^path_sep^s) 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; let exe = Filename.concat eclipseexe "eclipse.exe" in Unix.execv exe [| exe; "-b"; "col_solve_dumpeco.pl"; "-e"; "halt"; "-g"; "3000M"; |]