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 *) (** OCaml binaries *)
(** Character used to separate entries in [PATH] and similar
environment variables *)
val path_sep : char val path_sep : char
(** Contents of [PATH] *) (** Contents of [PATH] *)

View File

@ -255,18 +255,25 @@ let create ~(kind : Kind.t) ~path ~env ~name ~merlin ~targets () =
in in
let env = let env =
let cwd = Sys.getcwd () in 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 let v = Filename.concat cwd (Path.to_string v) in
match Env.get env var with match Env.get env var with
| None -> (var, v) | 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 in
let vars = let vars =
[ extend_var "CAML_LD_LIBRARY_PATH" [ extend_var "CAML_LD_LIBRARY_PATH"
(Path.relative (Path.relative
(Config.local_install_dir ~context:name) (Config.local_install_dir ~context:name)
"lib/stublibs") "lib/stublibs")
; extend_var "OCAMLPATH" ; extend_var "OCAMLPATH" ~path_sep:ocamlpath_sep
(Path.relative (Path.relative
(Config.local_install_dir ~context:name) (Config.local_install_dir ~context:name)
"lib") "lib")