Use ; as path separator for OCAMLPATH on Cygwin

Since this is what ocamlfind expects
This commit is contained in:
Jeremie Dimino 2018-03-19 19:22:58 -04:00
parent 3f22d9f82b
commit fae09828af
2 changed files with 13 additions and 4 deletions

View File

@ -1,5 +1,7 @@
(** OCaml binaries *)
(** Character used to separate entries in [PATH] and similar
environment variables *)
val path_sep : char
(** Contents of [PATH] *)

View File

@ -255,18 +255,25 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
in
let env =
let cwd = Sys.getcwd () in
let extend_var var v =
let ocamlpath_sep =
if Sys.cygwin then
(* because that's what ocamlfind expects *)
';'
else
Bin.path_sep
in
let extend_var var ?(path_sep=Bin.path_sep) v =
let v = Filename.concat cwd (Path.to_string v) in
match Env.get env var with
| None -> (var, v)
| Some prev -> (var, sprintf "%s%c%s" v Bin.path_sep prev)
| Some prev -> (var, sprintf "%s%c%s" v path_sep prev)
in
let vars =
[ extend_var "CAML_LD_LIBRARY_PATH"
(Path.relative
(Config.local_install_dir ~context:name)
"lib/stublibs")
; extend_var "OCAMLPATH"
; extend_var "OCAMLPATH" ~path_sep:ocamlpath_sep
(Path.relative
(Config.local_install_dir ~context:name)
"lib")
@ -399,7 +406,7 @@ let create_for_opam ?root ~targets ~switch ~name ?(merlin=false) () =
in
let path =
match Env.Map.find vars "PATH" with
| None -> Bin.path
| None -> Bin.path
| Some s -> Bin.parse_path s
in
let env = Env.extend (Env.initial ()) ~vars in