diff --git a/.gitmodules b/.gitmodules index e8f977c7fd..6b891b0829 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,3 +9,4 @@ [submodule "ninja"] path = ninja url = git@github.com:rescript-lang/ninja.git + ignore = untracked diff --git a/darwin/ninja.exe b/darwin/ninja.exe index 9a64e298b6..622ce64dbc 100755 Binary files a/darwin/ninja.exe and b/darwin/ninja.exe differ diff --git a/jscomp/bsb/bsb_ninja_file_groups.ml b/jscomp/bsb/bsb_ninja_file_groups.ml index 328045665a..99d4df6636 100644 --- a/jscomp/bsb/bsb_ninja_file_groups.ml +++ b/jscomp/bsb/bsb_ninja_file_groups.ml @@ -46,20 +46,7 @@ let handle_generators oc ) -let make_common_shadows - package_specs - dirname - : Bsb_ninja_targets.shadow list - = - - [{ key = Bsb_ninja_global_vars.g_pkg_flg; - op = - Append - (Bsb_package_specs.package_flag_of_package_specs - package_specs dirname - ) - }] - + type suffixes = { impl : string; @@ -117,10 +104,6 @@ let emit_module_build let output_cmj = output_filename_sans_extension ^ Literals.suffix_cmj in let output_js = Bsb_package_specs.get_list_of_output_js package_specs output_filename_sans_extension in - let common_shadows = - make_common_shadows package_specs - (Filename.dirname output_cmi) - in Bsb_ninja_targets.output_build oc ~outputs:[output_mlast] @@ -143,20 +126,19 @@ let emit_module_build ; Bsb_ninja_targets.output_build oc ~outputs:[output_cmi] - ~shadows:common_shadows ~order_only_deps:[output_d] ~inputs:[output_mliast] ~rule:(if is_dev then rules.mi_dev else rules.mi) ; end; - let shadows = + let shadows : Bsb_ninja_targets.shadow list = match js_post_build_cmd with - | None -> common_shadows + | None -> [] | Some cmd -> - {key = Bsb_ninja_global_vars.postbuild; - op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)} - :: common_shadows + [{key = Bsb_ninja_global_vars.postbuild; + op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)}] + in let rule = if has_intf_file then diff --git a/jscomp/bsb/bsb_ninja_gen.ml b/jscomp/bsb/bsb_ninja_gen.ml index b3bacf325d..3413a0b941 100644 --- a/jscomp/bsb/bsb_ninja_gen.ml +++ b/jscomp/bsb/bsb_ninja_gen.ml @@ -204,6 +204,7 @@ let output_ninja_and_namespace_map ~has_pp:(pp_file <> None) ~has_builtin:(built_in_dependency <> None) ~reason_react_jsx + ~package_specs ~digest generators in emit_bsc_lib_includes bs_dependencies source_dirs.lib external_includes namespace oc; diff --git a/jscomp/bsb/bsb_ninja_rule.ml b/jscomp/bsb/bsb_ninja_rule.ml index 4c2760e404..1599e56002 100644 --- a/jscomp/bsb/bsb_ninja_rule.ml +++ b/jscomp/bsb/bsb_ninja_rule.ml @@ -121,6 +121,7 @@ let make_custom_rules ~(reason_react_jsx : Bsb_config_types.reason_react_jsx option) ~(digest : string) ~(refmt : string option) (* set refmt path when needed *) + ~(package_specs: Bsb_package_specs.t) (custom_rules : command Map_string.t) : builtin = (** FIXME: We don't need set [-o ${out}] when building ast @@ -133,6 +134,7 @@ let make_custom_rules Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then @@ -176,11 +178,11 @@ let make_custom_rules let build_ast = define ~command:(mk_ast ~has_pp ~has_ppx ~has_reason_react_jsx:false ) - "build_ast" in + "ast" in let build_ast_from_re = define ~command:(mk_ast ~has_pp ~has_ppx ~has_reason_react_jsx:true) - "build_ast_from_re" in + "astj" in let copy_resources = define @@ -195,13 +197,13 @@ let make_custom_rules ~restat:() ~command: ("$bsdep -hash " ^ digest ^" $g_ns $in") - "mk_deps" in + "deps" in let build_bin_deps_dev = define ~restat:() ~command: ("$bsdep -g -hash " ^ digest ^" $g_ns $in") - "mk_deps_dev" in + "deps_dev" in let aux ~name ~read_cmi ~postbuild = define ~command:(mk_ml_cmj_cmd diff --git a/jscomp/bsb/bsb_ninja_rule.mli b/jscomp/bsb/bsb_ninja_rule.mli index 3bf58376c9..9b0955847e 100644 --- a/jscomp/bsb/bsb_ninja_rule.mli +++ b/jscomp/bsb/bsb_ninja_rule.mli @@ -77,6 +77,7 @@ val make_custom_rules : reason_react_jsx : Bsb_config_types.reason_react_jsx option -> digest:string -> refmt:string option -> + package_specs:Bsb_package_specs.t -> command Map_string.t -> builtin diff --git a/jscomp/bsb/bsb_ninja_targets.ml b/jscomp/bsb/bsb_ninja_targets.ml index 84218e2b1c..887635de92 100644 --- a/jscomp/bsb/bsb_ninja_targets.ml +++ b/jscomp/bsb/bsb_ninja_targets.ml @@ -57,7 +57,7 @@ let output_build ~rule oc = let rule = Bsb_ninja_rule.get_name rule oc in (* Trigger building if not used *) - output_string oc "build "; + output_string oc "o "; Ext_list.iter outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s ); if implicit_outputs <> [] then begin output_string oc " | "; @@ -126,7 +126,7 @@ let output_build let phony ?(order_only_deps=[]) ~inputs ~output oc = - output_string oc "build "; + output_string oc "o "; output_string oc output ; output_string oc " : "; output_string oc "phony"; diff --git a/jscomp/core/js_packages_info.ml b/jscomp/core/js_packages_info.ml index f282c071f3..0f5dca5a3c 100644 --- a/jscomp/core/js_packages_info.ml +++ b/jscomp/core/js_packages_info.ml @@ -252,7 +252,7 @@ let add_npm_package_path (packages_info : t) (s : string) : t = Bsc_args.bad_arg ("invalid module system " ^ module_system) in let m = - match Ext_string.split ~keep_empty:false s ':' with + match Ext_string.split ~keep_empty:true s ':' with | [path] -> {module_system = NodeJS; path; suffix = Js} | [ module_system; path] -> diff --git a/lib/4.06.1/bsb.ml b/lib/4.06.1/bsb.ml index 8ac6b0fc6f..e66765521a 100644 --- a/lib/4.06.1/bsb.ml +++ b/lib/4.06.1/bsb.ml @@ -13048,6 +13048,7 @@ val make_custom_rules : reason_react_jsx : Bsb_config_types.reason_react_jsx option -> digest:string -> refmt:string option -> + package_specs:Bsb_package_specs.t -> command Map_string.t -> builtin @@ -13177,6 +13178,7 @@ let make_custom_rules ~(reason_react_jsx : Bsb_config_types.reason_react_jsx option) ~(digest : string) ~(refmt : string option) (* set refmt path when needed *) + ~(package_specs: Bsb_package_specs.t) (custom_rules : command Map_string.t) : builtin = (** FIXME: We don't need set [-o ${out}] when building ast @@ -13189,6 +13191,7 @@ let make_custom_rules Ext_buffer.clear buf; Ext_buffer.add_string buf "$bsc"; Ext_buffer.add_ninja_prefix_var buf Bsb_ninja_global_vars.g_pkg_flg; + Ext_buffer.add_string buf (Bsb_package_specs.package_flag_of_package_specs package_specs "$in_d"); if read_cmi = `yes then Ext_buffer.add_string buf " -bs-read-cmi"; if is_dev then @@ -13232,11 +13235,11 @@ let make_custom_rules let build_ast = define ~command:(mk_ast ~has_pp ~has_ppx ~has_reason_react_jsx:false ) - "build_ast" in + "ast" in let build_ast_from_re = define ~command:(mk_ast ~has_pp ~has_ppx ~has_reason_react_jsx:true) - "build_ast_from_re" in + "astj" in let copy_resources = define @@ -13251,13 +13254,13 @@ let make_custom_rules ~restat:() ~command: ("$bsdep -hash " ^ digest ^" $g_ns $in") - "mk_deps" in + "deps" in let build_bin_deps_dev = define ~restat:() ~command: ("$bsdep -g -hash " ^ digest ^" $g_ns $in") - "mk_deps_dev" in + "deps_dev" in let aux ~name ~read_cmi ~postbuild = define ~command:(mk_ml_cmj_cmd @@ -13448,7 +13451,7 @@ let output_build ~rule oc = let rule = Bsb_ninja_rule.get_name rule oc in (* Trigger building if not used *) - output_string oc "build "; + output_string oc "o "; Ext_list.iter outputs (fun s -> output_string oc Ext_string.single_space ; output_string oc s ); if implicit_outputs <> [] then begin output_string oc " | "; @@ -13517,7 +13520,7 @@ let output_build let phony ?(order_only_deps=[]) ~inputs ~output oc = - output_string oc "build "; + output_string oc "o "; output_string oc output ; output_string oc " : "; output_string oc "phony"; @@ -13694,20 +13697,7 @@ let handle_generators oc ) -let make_common_shadows - package_specs - dirname - : Bsb_ninja_targets.shadow list - = - - [{ key = Bsb_ninja_global_vars.g_pkg_flg; - op = - Append - (Bsb_package_specs.package_flag_of_package_specs - package_specs dirname - ) - }] - + type suffixes = { impl : string; @@ -13765,10 +13755,6 @@ let emit_module_build let output_cmj = output_filename_sans_extension ^ Literals.suffix_cmj in let output_js = Bsb_package_specs.get_list_of_output_js package_specs output_filename_sans_extension in - let common_shadows = - make_common_shadows package_specs - (Filename.dirname output_cmi) - in Bsb_ninja_targets.output_build oc ~outputs:[output_mlast] @@ -13791,20 +13777,19 @@ let emit_module_build ; Bsb_ninja_targets.output_build oc ~outputs:[output_cmi] - ~shadows:common_shadows ~order_only_deps:[output_d] ~inputs:[output_mliast] ~rule:(if is_dev then rules.mi_dev else rules.mi) ; end; - let shadows = + let shadows : Bsb_ninja_targets.shadow list = match js_post_build_cmd with - | None -> common_shadows + | None -> [] | Some cmd -> - {key = Bsb_ninja_global_vars.postbuild; - op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)} - :: common_shadows + [{key = Bsb_ninja_global_vars.postbuild; + op = Overwrite ("&& " ^ cmd ^ Ext_string.single_space ^ String.concat Ext_string.single_space output_js)}] + in let rule = if has_intf_file then @@ -14111,6 +14096,7 @@ let output_ninja_and_namespace_map ~has_pp:(pp_file <> None) ~has_builtin:(built_in_dependency <> None) ~reason_react_jsx + ~package_specs ~digest generators in emit_bsc_lib_includes bs_dependencies source_dirs.lib external_includes namespace oc; diff --git a/lib/4.06.1/unstable/js_compiler.ml b/lib/4.06.1/unstable/js_compiler.ml index e70ab42d15..885159cf95 100644 --- a/lib/4.06.1/unstable/js_compiler.ml +++ b/lib/4.06.1/unstable/js_compiler.ml @@ -92641,7 +92641,7 @@ let add_npm_package_path (packages_info : t) (s : string) : t = Bsc_args.bad_arg ("invalid module system " ^ module_system) in let m = - match Ext_string.split ~keep_empty:false s ':' with + match Ext_string.split ~keep_empty:true s ':' with | [path] -> {module_system = NodeJS; path; suffix = Js} | [ module_system; path] -> diff --git a/lib/4.06.1/unstable/js_refmt_compiler.ml b/lib/4.06.1/unstable/js_refmt_compiler.ml index 02451b4e60..52dea2aa3d 100644 --- a/lib/4.06.1/unstable/js_refmt_compiler.ml +++ b/lib/4.06.1/unstable/js_refmt_compiler.ml @@ -92641,7 +92641,7 @@ let add_npm_package_path (packages_info : t) (s : string) : t = Bsc_args.bad_arg ("invalid module system " ^ module_system) in let m = - match Ext_string.split ~keep_empty:false s ':' with + match Ext_string.split ~keep_empty:true s ':' with | [path] -> {module_system = NodeJS; path; suffix = Js} | [ module_system; path] -> diff --git a/lib/4.06.1/whole_compiler.ml b/lib/4.06.1/whole_compiler.ml index 909bc4509b..5da07936e8 100644 --- a/lib/4.06.1/whole_compiler.ml +++ b/lib/4.06.1/whole_compiler.ml @@ -370176,7 +370176,7 @@ let add_npm_package_path (packages_info : t) (s : string) : t = Bsc_args.bad_arg ("invalid module system " ^ module_system) in let m = - match Ext_string.split ~keep_empty:false s ':' with + match Ext_string.split ~keep_empty:true s ':' with | [path] -> {module_system = NodeJS; path; suffix = Js} | [ module_system; path] -> diff --git a/linux/ninja.exe b/linux/ninja.exe index dc4091b410..d396049626 100755 Binary files a/linux/ninja.exe and b/linux/ninja.exe differ diff --git a/ninja b/ninja index f044300a62..8e1eb414c4 160000 --- a/ninja +++ b/ninja @@ -1 +1 @@ -Subproject commit f044300a62a3f2f46802e3eb3c335e5439146162 +Subproject commit 8e1eb414c4363321e04637801db65eb3ab1b19f1