@@ -28,10 +28,12 @@ type t =
2828 ; hidden_deps : Dep.Set .t Action_builder .t
2929 }
3030
31- let build_instance ~sctx ~obj_dir ~mode instance =
32- let { module_; args; requires; target; o_target = _; hidden_targets; hidden_deps } =
33- instance
34- in
31+ let build_instance
32+ ~sctx
33+ ~obj_dir
34+ ~mode
35+ { module_; args; requires; target; o_target = _ ; hidden_targets; hidden_deps }
36+ =
3537 let ctx = Super_context. context sctx in
3638 let * ocaml = Context. ocaml ctx in
3739 let include_flags =
@@ -146,14 +148,15 @@ let build_archive ~sctx ~mode ~obj_dir ~lib ~top_sorted_modules ~modules =
146148;;
147149
148150let lib_hidden_deps ~sctx ~kind lib requires =
149- let * requires = Resolve. read_memo requires in
150- Memo.List. concat_map requires ~f: (fun dep ->
151+ let open Action_builder.O in
152+ let * requires = Resolve. read requires in
153+ Action_builder.List. concat_map requires ~f: (fun dep ->
151154 if Lib. equal lib dep
152- then Memo . return []
155+ then Action_builder . return []
153156 else (
154157 match Lib.Parameterised. status dep with
155158 | Complete ->
156- let + cm = Resolve. read_memo (get_cm ~kind dep) in
159+ let + cm = Resolve. read (get_cm ~kind dep) in
157160 [ cm ]
158161 | Partial ->
159162 Code_error. raise
@@ -167,10 +170,12 @@ let lib_hidden_deps ~sctx ~kind lib requires =
167170 match Lib_info. modules lib_info with
168171 | External None ->
169172 Code_error. raise " dependency has no modules" [ " lib" , Lib. to_dyn dep ]
170- | External (Some modules ) -> Memo . return modules
173+ | External (Some modules ) -> Action_builder . return modules
171174 | Local ->
172175 let local_lib = Lib.Local. of_lib_exn lib in
173- let + modules = Dir_contents. modules_of_local_lib sctx local_lib in
176+ let + modules =
177+ Action_builder. of_memo (Dir_contents. modules_of_local_lib sctx local_lib)
178+ in
174179 Modules.With_vlib. modules modules
175180 in
176181 Modules.With_vlib. fold_no_vlib_with_aliases
@@ -197,7 +202,9 @@ let build_modules ~sctx ~obj_dir ~modules_obj_dir ~dep_graph ~mode ~requires ~li
197202 let + ocaml = Super_context. context sctx |> Context. ocaml in
198203 ocaml.lib_config
199204 in
200- let * lib_hidden_deps = lib_hidden_deps ~sctx ~kind lib requires in
205+ let lib_hidden_deps =
206+ Action_builder. memoize " lib-hidden-deps" (lib_hidden_deps ~sctx ~kind lib requires)
207+ in
201208 let * args =
202209 (* The main module names of applied arguments is required
203210 because it's used in the instantiated filenames.
@@ -226,8 +233,9 @@ let build_modules ~sctx ~obj_dir ~modules_obj_dir ~dep_graph ~mode ~requires ~li
226233 in
227234 let hidden_deps =
228235 let open Action_builder.O in
229- let + module_deps = Dep_graph. deps_of dep_graph module_ in
230- let deps =
236+ let * lib_hidden_deps = lib_hidden_deps in
237+ let + deps =
238+ let + module_deps = Dep_graph. deps_of dep_graph module_ in
231239 List. map module_deps ~f: (fun module_ ->
232240 apply_module_name module_ args
233241 |> obj_file ~obj_dir ~kind ?ext:None
0 commit comments