diff --git a/src/context.ml b/src/context.ml index baea3baf..d2b5a12b 100644 --- a/src/context.ml +++ b/src/context.ml @@ -337,25 +337,31 @@ let create ~(kind : Kind.t) ~path ~base_env ~env_extra ~name ~merlin else env,env_extra in + let split_prog s = + let len = String.length s in + let rec loop i = + if i = len then + (s, "") + else + match s.[i] with + | ' ' | '\t' -> + (String.sub s ~pos:0 ~len:i, + String.sub s ~pos:i ~len:(len - i)) + | _ -> loop (i + 1) + in + loop 0 + in let c_compiler, ocamlc_cflags, ocamlopt_cflags = match get_opt "c_compiler" with | Some c_compiler -> (* >= 4.06 *) - (c_compiler, get "ocamlc_cflags", get "ocamlopt_cflags") + let c_compiler, extra_args = split_prog c_compiler in + let args var = + if String.length extra_args > 0 then + sprintf "%s %s" extra_args (get var) + else + get var in + (c_compiler, args "ocamlc_cflags", args "ocamlopt_cflags") | None -> - let split_prog s = - let len = String.length s in - let rec loop i = - if i = len then - (s, "") - else - match s.[i] with - | ' ' | '\t' -> - (String.sub s ~pos:0 ~len:i, - String.sub s ~pos:i ~len:(len - i)) - | _ -> loop (i + 1) - in - loop 0 - in let c_compiler, ocamlc_cflags = split_prog (get "bytecomp_c_compiler") in let _, ocamlopt_cflags = split_prog (get "native_c_compiler") in (c_compiler, ocamlc_cflags, ocamlopt_cflags)