@@ -6,18 +6,22 @@ module Output_kind = struct
66 | Private_library_or_emit of Path.Build .t
77 | Public_library of
88 { lib_dir : Path .t
9- ; output_dir : Path.Build .t
9+ ; target_dir : Path.Build .t
10+ ; output_dir : Path.Local .t
1011 }
1112
1213 let [@ ocaml.warning " -32" ] to_dyn t =
1314 match t with
1415 | Private_library_or_emit dir ->
1516 Dyn. variant " Private_library_or_emit" [ Path.Build. to_dyn dir ]
16- | Public_library { lib_dir; output_dir } ->
17+ | Public_library { lib_dir; output_dir; target_dir } ->
1718 Dyn. variant
1819 " Public_library"
1920 [ Dyn. record
20- [ " lib_dir" , Path. to_dyn lib_dir; " output_dir" , Path.Build. to_dyn output_dir ]
21+ [ " lib_dir" , Path. to_dyn lib_dir
22+ ; " output_dir" , Path.Local. to_dyn output_dir
23+ ; " target_dir" , Path.Build. to_dyn target_dir
24+ ]
2125 ]
2226 ;;
2327end
@@ -26,8 +30,11 @@ let output_of_lib =
2630 let public_lib ~info ~target_dir lib_name =
2731 Output_kind. Public_library
2832 { lib_dir = Lib_info. src_dir info
33+ ; target_dir
2934 ; output_dir =
30- Path.Build.L. relative target_dir [ " node_modules" ; Lib_name. to_string lib_name ]
35+ Path.Local. relative
36+ (Path.Local. of_string " node_modules" )
37+ (Lib_name. to_string lib_name)
3138 }
3239 in
3340 fun ~target_dir lib ->
@@ -55,7 +62,8 @@ let make_js_name ~js_ext ~output m =
5562 let dst_dir =
5663 let src_dir = Module. file m ~ml_kind: Impl |> Option. value_exn |> Path. parent_exn in
5764 match output with
58- | Output_kind. Public_library { lib_dir; output_dir } ->
65+ | Output_kind. Public_library { lib_dir; target_dir; output_dir } ->
66+ let output_dir = Path.Build. append_local target_dir output_dir in
5967 lib_output_path ~output_dir ~lib_dir src_dir
6068 | Private_library_or_emit target_dir ->
6169 Path.Build. append_source
@@ -431,14 +439,17 @@ module Runtime_deps = struct
431439 Lib_file_deps. eval ~expander ~loc ~paths: Allow_all dep_conf)
432440 in
433441 match output with
434- | Output_kind. Public_library { lib_dir; output_dir } ->
442+ | Output_kind. Public_library { lib_dir; target_dir; output_dir } ->
435443 Path.Set. fold ~init: empty deps ~f: (fun src ({ copy; deps = _ } as acc ) ->
436444 let copy =
437445 match Path. as_external src with
438- | None -> (src, lib_output_path ~output_dir ~lib_dir src) :: copy
446+ | None ->
447+ let output_dir = Path.Build. append_local target_dir output_dir in
448+ (src, lib_output_path ~output_dir ~lib_dir src) :: copy
439449 | Some src_e ->
440450 (match Path. as_external lib_dir with
441451 | Some lib_dir_e when Path.External. is_descendant src_e ~of_: lib_dir_e ->
452+ let output_dir = Path.Build. append_local target_dir output_dir in
442453 (src, lib_output_path ~output_dir ~lib_dir src) :: copy
443454 | Some _ | None -> raise_external_dep_error src ~for_ )
444455 in
0 commit comments