diff --git a/darwin/ninja.exe b/darwin/ninja.exe index 419f0e2eaa..1794707600 100755 Binary files a/darwin/ninja.exe and b/darwin/ninja.exe differ diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index 1445ed5962..b2a2433ab5 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -179,8 +179,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in - let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in - let bs_dep = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -228,14 +226,14 @@ let output_ninja_and_namespace_map ~namespace ~digest ~package_name - ~bsc:bsc_path - ~warnings - ~bs_dep + ~warnings ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) ~dev_incls (* its own devs *) + ~bs_dependencies + ~bs_dev_dependencies generators in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in @@ -243,12 +241,14 @@ let output_ninja_and_namespace_map let finger_file = fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log" in - Bsb_ninja_targets.output_finger - Bsb_ninja_global_vars.g_finger - (String.concat " " - (Ext_list.map_append bs_dependencies - (Ext_list.map bs_dev_dependencies finger_file) finger_file)) - oc ; + Ext_list.iter bs_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); + Ext_list.iter bs_dev_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); (match gentype_config with | None -> () | Some x -> output_string oc ("cleaner = " ^ x.path ^ "\n")); diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 49d35f856a..e48b3e7cfd 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -123,16 +123,18 @@ let make_custom_rules ~(package_specs: Bsb_package_specs.t) ~(namespace : string option) ~package_name - ~bsc - ~warnings - ~(bs_dep : string) + ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~(dpkg_incls : string) ~(lib_incls : string) ~(dev_incls : string) + ~bs_dependencies + ~bs_dev_dependencies (custom_rules : command Map_string.t) : builtin = + let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in + let bsc = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc in (** FIXME: We don't need set [-o ${out}] when building ast since the default is already good -- it does not*) let buf = Ext_buffer.create 100 in @@ -172,8 +174,12 @@ let make_custom_rules Ext_buffer.add_string buf package_name; Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") end; - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + begin match bs_dependencies, bs_dev_dependencies with + | [], [] -> () + | _, _ -> + Ext_buffer.add_string buf " -bs-v"; + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_finger; + end; Ext_buffer.add_string buf " $i"; begin match postbuild with | None -> () diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index b3bd671bfe..055054bf97 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -79,14 +79,14 @@ val make_custom_rules : package_specs:Bsb_package_specs.t -> namespace:string option -> package_name:string -> - bsc:string -> warnings:string -> - bs_dep:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> lib_incls:string -> dev_incls:string -> + bs_dependencies:Bsb_config_types.dependencies -> + bs_dev_dependencies:Bsb_config_types.dependencies -> command Map_string.t -> builtin diff --git a/jscomp/ext/ext_buffer.ml b/jscomp/ext/ext_buffer.ml index ded5d8447e..503e2a16b0 100644 --- a/jscomp/ext/ext_buffer.ml +++ b/jscomp/ext/ext_buffer.ml @@ -110,14 +110,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/jscomp/ext/ext_buffer.mli b/jscomp/ext/ext_buffer.mli index ba8f4698b6..3830c94074 100644 --- a/jscomp/ext/ext_buffer.mli +++ b/jscomp/ext/ext_buffer.mli @@ -111,7 +111,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index dac3563ad7..9ad3045719 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -648,7 +648,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -772,14 +771,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position @@ -12741,14 +12740,14 @@ val make_custom_rules : package_specs:Bsb_package_specs.t -> namespace:string option -> package_name:string -> - bsc:string -> warnings:string -> - bs_dep:string -> ppx_files:Bsb_config_types.ppx list -> bsc_flags:string -> dpkg_incls:string -> lib_incls:string -> dev_incls:string -> + bs_dependencies:Bsb_config_types.dependencies -> + bs_dev_dependencies:Bsb_config_types.dependencies -> command Map_string.t -> builtin @@ -12880,16 +12879,18 @@ let make_custom_rules ~(package_specs: Bsb_package_specs.t) ~(namespace : string option) ~package_name - ~bsc - ~warnings - ~(bs_dep : string) + ~warnings ~(ppx_files : Bsb_config_types.ppx list) ~bsc_flags ~(dpkg_incls : string) ~(lib_incls : string) ~(dev_incls : string) + ~bs_dependencies + ~bs_dev_dependencies (custom_rules : command Map_string.t) : builtin = + let bs_dep = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep in + let bsc = Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc in (** FIXME: We don't need set [-o ${out}] when building ast since the default is already good -- it does not*) let buf = Ext_buffer.create 100 in @@ -12929,8 +12930,12 @@ let make_custom_rules Ext_buffer.add_string buf package_name; Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d") end; - Ext_buffer.add_string buf " -bs-v "; - Ext_buffer.add_ninja_prefix_var buf '-' Bsb_ninja_global_vars.g_finger; + begin match bs_dependencies, bs_dev_dependencies with + | [], [] -> () + | _, _ -> + Ext_buffer.add_string buf " -bs-v"; + Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_finger; + end; Ext_buffer.add_string buf " $i"; begin match postbuild with | None -> () @@ -13682,8 +13687,6 @@ let output_ninja_and_namespace_map let warnings = Bsb_warning.to_bsb_string ~package_kind warning in let bsc_flags = (get_bsc_flags bsc_flags) in - let bsc_path = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsc) in - let bs_dep = (Ext_filename.maybe_quote Bsb_global_paths.vendor_bsdep) in let dpkg_incls = (Bsb_build_util.include_dirs_by bs_dev_dependencies (fun x -> x.package_install_path)) in @@ -13731,14 +13734,14 @@ let output_ninja_and_namespace_map ~namespace ~digest ~package_name - ~bsc:bsc_path - ~warnings - ~bs_dep + ~warnings ~ppx_files ~bsc_flags ~dpkg_incls (* dev dependencies *) ~lib_incls (* its own libs *) ~dev_incls (* its own devs *) + ~bs_dependencies + ~bs_dev_dependencies generators in let oc = open_out_bin (cwd_lib_bs // Literals.build_ninja) in @@ -13746,12 +13749,14 @@ let output_ninja_and_namespace_map let finger_file = fun (x : Bsb_config_types.dependency) -> x.package_install_path //".ninja_log" in - Bsb_ninja_targets.output_finger - Bsb_ninja_global_vars.g_finger - (String.concat " " - (Ext_list.map_append bs_dependencies - (Ext_list.map bs_dev_dependencies finger_file) finger_file)) - oc ; + Ext_list.iter bs_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); + Ext_list.iter bs_dev_dependencies (fun x -> + Bsb_ninja_targets.output_finger Bsb_ninja_global_vars.g_finger + (finger_file x) oc + ); (match gentype_config with | None -> () | Some x -> output_string oc ("cleaner = " ^ x.path ^ "\n")); diff --git a/lib/4.06.1/bsb_helper.ml b/lib/4.06.1/bsb_helper.ml index aeb74722d7..4489160f67 100644 --- a/lib/4.06.1/bsb_helper.ml +++ b/lib/4.06.1/bsb_helper.ml @@ -1667,7 +1667,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -1791,14 +1790,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/all_ounit_tests.ml b/lib/4.06.1/unstable/all_ounit_tests.ml index dc43ef4b01..9d99d22f54 100644 --- a/lib/4.06.1/unstable/all_ounit_tests.ml +++ b/lib/4.06.1/unstable/all_ounit_tests.ml @@ -6463,7 +6463,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -6587,14 +6586,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/bspack.ml b/lib/4.06.1/unstable/bspack.ml index 919fcda56b..70813b78a3 100644 --- a/lib/4.06.1/unstable/bspack.ml +++ b/lib/4.06.1/unstable/bspack.ml @@ -8811,7 +8811,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -8935,14 +8934,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index 876e4e147c..24b80c275e 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -69217,7 +69217,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -69341,14 +69340,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/unstable/js_refmt_compiler.ml b/lib/4.06.1/unstable/js_refmt_compiler.ml index 6afeeeeaef..a29bae2899 100644 --- a/lib/4.06.1/unstable/js_refmt_compiler.ml +++ b/lib/4.06.1/unstable/js_refmt_compiler.ml @@ -69217,7 +69217,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -69341,14 +69340,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 00964d5df6..65583a33fe 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -353418,7 +353418,6 @@ val add_string_char : val add_ninja_prefix_var : t -> - char -> string -> unit @@ -353542,14 +353541,14 @@ let add_char_string b c s = b.position <- new_position (* equivalent to add_char " "; add_char "$"; add_string s *) -let add_ninja_prefix_var b char s = +let add_ninja_prefix_var b s = let s_len = String.length s in let len = s_len + 2 in let new_position = b.position + len in if new_position > b.length then resize b len; let b_buffer = b.buffer in let b_position = b.position in - Bytes.unsafe_set b_buffer b_position char ; + Bytes.unsafe_set b_buffer b_position ' ' ; Bytes.unsafe_set b_buffer (b_position + 1) '$' ; Ext_bytes.unsafe_blit_string s 0 b_buffer (b_position + 2) s_len; b.position <- new_position diff --git a/ninja b/ninja index 2017637aa3..6995993bc7 160000 --- a/ninja +++ b/ninja @@ -1 +1 @@ -Subproject commit 2017637aa3bb1044175dd0713050ddd7aef061bc +Subproject commit 6995993bc7579bbcd2d22a6c5ce7ddbe879ce8c1 diff --git a/win32/ninja.exe b/win32/ninja.exe index f7572ae6ec..5d23c62a63 100644 Binary files a/win32/ninja.exe and b/win32/ninja.exe differ