@@ -531,6 +531,12 @@ let jsoo_archives ~mode ctx config lib =
531531 ]))
532532;;
533533
534+ let cmo_js_of_module ~mode m =
535+ Module_name.Unique. artifact_filename
536+ (Module. obj_name m)
537+ ~ext: (Js_of_ocaml.Ext. cmo ~mode )
538+ ;;
539+
534540let link_rule
535541 ~mode
536542 cc
@@ -546,11 +552,6 @@ let link_rule
546552 =
547553 let sctx = Compilation_context. super_context cc in
548554 let dir = Compilation_context. dir cc in
549- let mod_name m =
550- Module_name.Unique. artifact_filename
551- (Module. obj_name m)
552- ~ext: (Js_of_ocaml.Ext. cmo ~mode )
553- in
554555 let ctx = Super_context. context sctx |> Context. build_context in
555556 let get_all =
556557 let open Action_builder.O in
@@ -576,12 +577,13 @@ let link_rule
576577 let special_units =
577578 List. concat_map to_link ~f: (function
578579 | Lib_flags.Lib_and_module. Lib _lib -> []
579- | Module (obj_dir , m ) -> [ in_obj_dir' ~obj_dir ~config: None [ mod_name m ] ])
580+ | Module (obj_dir , m ) ->
581+ [ in_obj_dir' ~obj_dir ~config: None [ cmo_js_of_module ~mode m ] ])
580582 in
581583 let all_libs = List. concat_map libs ~f: (jsoo_archives ~mode ctx config) in
582584 let all_other_modules =
583585 List. map cm ~f: (fun m ->
584- Path. build (in_obj_dir ~obj_dir ~config: None [ mod_name m ]))
586+ Path. build (in_obj_dir ~obj_dir ~config: None [ cmo_js_of_module ~mode m ]))
585587 in
586588 let std_exit =
587589 Path. build
@@ -648,14 +650,15 @@ let build_cm' sctx ~dir ~in_context ~mode ~src ~target ~config ~shapes ~sourcema
648650 ~sourcemap
649651;;
650652
651- let build_cm cctx ~dir ~in_context ~mode ~src ~obj_dir ~config :config_opt =
653+ let build_cm cctx ~dir ~in_context ~mode ~src ~obj_dir ~deps ~ config :config_opt =
652654 let name = with_js_ext ~mode (Path. basename src) in
653655 let target = in_obj_dir ~obj_dir ~config: config_opt [ name ] in
654656 let sctx = Compilation_context. super_context cctx in
655657 let ctx = Super_context. context sctx |> Context. build_context in
656658 let shapes =
657659 let open Action_builder.O in
658660 let + libs = Resolve.Memo. read (Compilation_context. requires_link cctx)
661+ and + deps = deps
659662 and + config =
660663 match config_opt with
661664 | None ->
@@ -665,8 +668,10 @@ let build_cm cctx ~dir ~in_context ~mode ~src ~obj_dir ~config:config_opt =
665668 |> Action_builder. map ~f: Config. of_flags
666669 | Some config -> Action_builder. return config
667670 in
668- Path. build (in_build_dir ctx ~config [ " stdlib" ; with_js_ext ~mode " stdlib.cma" ])
669- :: List. concat_map libs ~f: (fun lib -> jsoo_archives ~mode ctx config lib)
671+ (Path. build (in_build_dir ctx ~config [ " stdlib" ; with_js_ext ~mode " stdlib.cma" ])
672+ :: List. concat_map libs ~f: (fun lib -> jsoo_archives ~mode ctx config lib))
673+ @ List. map deps ~f: (fun m ->
674+ Path. build (in_obj_dir ~obj_dir ~config: config_opt [ cmo_js_of_module ~mode m ]))
670675 in
671676 build_cm'
672677 sctx
0 commit comments