@@ -7346,7 +7346,7 @@ end = struct
7346
7346
7347
7347
7348
7348
let config_file_bak = " bsconfig.json.bak"
7349
- let ninja = " ninja "
7349
+
7350
7350
let bsdeps = " .bsdeps"
7351
7351
7352
7352
@@ -7397,11 +7397,10 @@ let revise_merlin new_content =
7397
7397
close_out ochan
7398
7398
(* TODO: it is a little mess that [cwd] and [project dir] are shared*)
7399
7399
(* * *)
7400
- let write_ninja_file cwd =
7400
+ let write_ninja_file bsc_dir cwd =
7401
7401
let builddir = Bsb_config. lib_bs in
7402
7402
let () = Bsb_build_util. mkp builddir in
7403
- let bsc_dir = Bsb_build_util. get_bsc_dir cwd in
7404
- let bsc, bsdep, bsppx =
7403
+ let bsc, bsdep, bsppx =
7405
7404
bsc_dir // " bsc.exe" ,
7406
7405
bsc_dir // " bsb_helper.exe" ,
7407
7406
bsc_dir // " bsppx.exe" in
@@ -7574,7 +7573,7 @@ let bsb_main_flags =
7574
7573
" Also run the JS files passsed" ;*)
7575
7574
]
7576
7575
7577
- let regenerate_ninja cwd forced =
7576
+ let regenerate_ninja cwd bsc_dir forced =
7578
7577
let output_deps = Bsb_config. lib_bs // bsdeps in
7579
7578
let reason =
7580
7579
if forced then " Regenerating ninja (triggered by command line -regen)"
@@ -7584,7 +7583,7 @@ let regenerate_ninja cwd forced =
7584
7583
begin
7585
7584
print_endline reason ;
7586
7585
print_endline " Regenrating build spec" ;
7587
- let globbed_dirs = write_ninja_file cwd in
7586
+ let globbed_dirs = write_ninja_file bsc_dir cwd in
7588
7587
Literals. bsconfig_json :: globbed_dirs
7589
7588
|> List. map
7590
7589
(fun x ->
@@ -7596,6 +7595,23 @@ let regenerate_ninja cwd forced =
7596
7595
7597
7596
end
7598
7597
7598
+
7599
+ let ninja_command ninja ninja_args =
7600
+ let ninja_args_len = Array. length ninja_args in
7601
+ if ninja_args_len = 0 then
7602
+ Unix. execvp ninja [|" ninja" ; " -C" ; Bsb_config. lib_bs ; " -d" ; " keepdepfile" |]
7603
+ else
7604
+ let fixed_args_length = 5 in
7605
+ Unix. execvp ninja
7606
+ (Array. init (fixed_args_length + ninja_args_len)
7607
+ (fun i -> match i with
7608
+ | 0 -> " ninja"
7609
+ | 1 -> " -C"
7610
+ | 2 -> Bsb_config. lib_bs
7611
+ | 3 -> " -d"
7612
+ | 4 -> " keepdepfile"
7613
+ | _ -> Array. unsafe_get ninja_args (i - fixed_args_length) ))
7614
+
7599
7615
(* *
7600
7616
Cache files generated:
7601
7617
- .bsdircache in project root dir
@@ -7611,12 +7627,20 @@ let usage = "Usage : bsb.exe <bsb-options> <files> -- <ninja_options>\n\
7611
7627
Bsb options are:"
7612
7628
7613
7629
let () =
7630
+ let bsc_dir = Bsb_build_util. get_bsc_dir cwd in
7631
+ let ninja =
7632
+ if Sys. win32 then
7633
+ bsc_dir // " ninja.exe"
7634
+ else
7635
+ " ninja"
7636
+ in
7614
7637
try
7615
7638
(* see discussion #929 *)
7616
7639
if Array. length Sys. argv < = 1 then
7617
7640
begin
7618
- regenerate_ninja cwd false ;
7619
- Unix. execvp ninja [|ninja; " -C" ; Bsb_config. lib_bs ; " -d" ; " keepdepfile" |]
7641
+ regenerate_ninja cwd bsc_dir false ;
7642
+ ninja_command ninja [||]
7643
+ (* Unix.execvp ninja [|ninja; "-C"; Bsb_config.lib_bs ; "-d"; "keepdepfile" |]*)
7620
7644
end
7621
7645
else
7622
7646
begin
@@ -7625,7 +7649,7 @@ let () =
7625
7649
->
7626
7650
begin
7627
7651
Arg. parse bsb_main_flags annoymous usage;
7628
- regenerate_ninja cwd ! force_regenerate;
7652
+ regenerate_ninja cwd bsc_dir ! force_regenerate;
7629
7653
(* String_vec.iter (fun s -> print_endline s) targets; *)
7630
7654
(* ninja is not triggered in this case *)
7631
7655
end
@@ -7634,12 +7658,13 @@ let () =
7634
7658
begin
7635
7659
Arg. parse_argv bsb_args bsb_main_flags annoymous usage ;
7636
7660
(* String_vec.iter (fun s -> print_endline s) targets; *)
7637
- regenerate_ninja cwd ! force_regenerate;
7638
- Unix. execvp ninja
7661
+ regenerate_ninja cwd bsc_dir ! force_regenerate;
7662
+ ninja_command ninja ninja_args
7663
+ (* Unix.execvp ninja
7639
7664
(Array.append
7640
7665
[|ninja ; "-C"; Bsb_config.lib_bs; "-d"; "keepdepfile"|]
7641
7666
ninja_args
7642
- )
7667
+ )*)
7643
7668
7644
7669
end
7645
7670
end
0 commit comments