From 96222ee68151b3ff7c0b3a846e93ba0848cb16e7 Mon Sep 17 00:00:00 2001 From: Rudi Grinberg Date: Wed, 21 Mar 2018 15:33:52 +0800 Subject: [PATCH] Don't error out when asm is a blank value Treat it as missing instead --- src/ocaml-config/ocaml_config.ml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ocaml-config/ocaml_config.ml b/src/ocaml-config/ocaml_config.ml index a6a30f82..b6e370df 100644 --- a/src/ocaml-config/ocaml_config.ml +++ b/src/ocaml-config/ocaml_config.ml @@ -193,10 +193,10 @@ exception E of string let fail fmt = Printf.ksprintf (fun msg -> raise (E msg)) fmt -let split_prog ~var s = +let split_prog s = match String.extract_blank_separated_words s with - | [] -> fail "Variable %S contains only spaces." var - | prog :: args -> { prog; args } + | [] -> None + | prog :: args -> Some { prog; args } module Vars = struct module M = Map.Make(String) @@ -253,10 +253,15 @@ module Vars = struct | Some s -> String.extract_blank_separated_words s let get_prog_and_args t var = - split_prog ~var (get t var) + split_prog (get t var) + + let get_prog_and_args_exn t var = + match get_prog_and_args t var with + | None -> fail "Variable %S contains only spaces." var + | Some prog -> prog let get_prog_and_args_opt t var = - Option.map (get_opt t var) ~f:(split_prog ~var) + Option.bind (get_opt t var) ~f:split_prog end let get_arch_sixtyfour stdlib_dir = @@ -282,10 +287,10 @@ let make vars = match let open Vars in let bytecomp_c_compiler = - get_prog_and_args vars "bytecomp_c_compiler" + get_prog_and_args_exn vars "bytecomp_c_compiler" in let native_c_compiler = - get_prog_and_args vars "native_c_compiler" + get_prog_and_args_exn vars "native_c_compiler" in let c_compiler, ocamlc_cflags, ocamlopt_cflags = match get_prog_and_args_opt vars "c_compiler" with