Skip to content

Commit 24ca148

Browse files
authored
refactor(boot): move alias/source file processing to separate functions (ocaml#12225)
In preparation for another step to be added here Signed-off-by: Rudi Grinberg <[email protected]>
1 parent 263ad15 commit 24ca148

File tree

1 file changed

+36
-29
lines changed

1 file changed

+36
-29
lines changed

boot/duneboot.ml

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,40 @@ module Library = struct
992992
| Some `X86 -> architecture = "amd64" || architecture = "x86_64"
993993
;;
994994

995+
let gen_build_info_module wrapper m =
996+
let src =
997+
let fn = String.uncapitalize_ascii m ^ ".ml" in
998+
{ file = fn; kind = Ml }
999+
in
1000+
let mangled = Wrapper.mangle_filename wrapper src in
1001+
let oc = open_out (build_dir ^/ mangled) in
1002+
let+ () = Build_info.gen_data_module oc in
1003+
close_out oc;
1004+
src, mangled
1005+
;;
1006+
1007+
let process_source_file wrapper ~header ({ file = fn; kind } as source) =
1008+
let mangled = Wrapper.mangle_filename wrapper source in
1009+
let dst = build_dir ^/ mangled in
1010+
let+ mangled =
1011+
match kind with
1012+
| Asm _ ->
1013+
copy fn dst;
1014+
Fiber.return [ mangled ]
1015+
| Header | C _ ->
1016+
copy_with_directive ~directive:"line" fn dst;
1017+
Fiber.return [ mangled ]
1018+
| Ml | Mli ->
1019+
copy_with_header ~header fn dst;
1020+
Fiber.return [ mangled ]
1021+
| Mll -> copy_lexer fn dst ~header >>> Fiber.return [ mangled ]
1022+
| Mly ->
1023+
(* CR rgrinberg: what if the parser already has an mli? *)
1024+
copy_parser fn dst ~header >>> Fiber.return [ mangled; mangled ^ "i" ]
1025+
in
1026+
List.map mangled ~f:(fun m -> source, m)
1027+
;;
1028+
9951029
let process
9961030
{ Libs.path = dir
9971031
; main_module_name = namespace
@@ -1021,39 +1055,12 @@ module Library = struct
10211055
let header = Wrapper.header wrapper in
10221056
let+ files, build_info_file =
10231057
Fiber.fork_and_join
1024-
(fun () ->
1025-
Fiber.parallel_map files ~f:(fun ({ file = fn; kind } as source) ->
1026-
let mangled = Wrapper.mangle_filename wrapper source in
1027-
let dst = build_dir ^/ mangled in
1028-
let+ mangled =
1029-
match kind with
1030-
| Asm _ ->
1031-
copy fn dst;
1032-
Fiber.return [ mangled ]
1033-
| Header | C _ ->
1034-
copy_with_directive ~directive:"line" fn dst;
1035-
Fiber.return [ mangled ]
1036-
| Ml | Mli ->
1037-
copy_with_header ~header fn dst;
1038-
Fiber.return [ mangled ]
1039-
| Mll -> copy_lexer fn dst ~header >>> Fiber.return [ mangled ]
1040-
| Mly ->
1041-
(* CR rgrinberg: what if the parser already has an mli? *)
1042-
copy_parser fn dst ~header >>> Fiber.return [ mangled; mangled ^ "i" ]
1043-
in
1044-
List.map mangled ~f:(fun m -> source, m)))
1058+
(fun () -> Fiber.parallel_map files ~f:(process_source_file wrapper ~header))
10451059
(fun () ->
10461060
match build_info_module with
10471061
| None -> Fiber.return None
10481062
| Some m ->
1049-
let src =
1050-
let fn = String.uncapitalize_ascii m ^ ".ml" in
1051-
{ file = fn; kind = Ml }
1052-
in
1053-
let mangled = Wrapper.mangle_filename wrapper src in
1054-
let oc = open_out (build_dir ^/ mangled) in
1055-
let+ () = Build_info.gen_data_module oc in
1056-
close_out oc;
1063+
let+ src, mangled = gen_build_info_module wrapper m in
10571064
Some (src, mangled))
10581065
in
10591066
let alias_file = Wrapper.generate_wrapper wrapper modules in

0 commit comments

Comments
 (0)