@@ -5,7 +5,7 @@ module SC = Super_context
55module Includes = struct
66 type t = string list Arg_spec .t Cm_kind.Dict .t
77
8- let make sctx ~requires : _ Cm_kind.Dict. t =
8+ let make sctx ~opaque ~ requires : _ Cm_kind.Dict. t =
99 match requires with
1010 | Error exn -> Cm_kind.Dict. make_all (Arg_spec. Dyn (fun _ -> raise exn ))
1111 | Ok libs ->
@@ -18,15 +18,25 @@ module Includes = struct
1818 (SC.Libs. file_deps sctx libs ~ext: " .cmi" )
1919 ]
2020 in
21- let cmi_and_cmx_includes =
22- Arg_spec. S [ iflags
23- ; Hidden_deps
24- (SC.Libs. file_deps sctx libs ~ext: " .cmi-and-.cmx" )
25- ]
21+ let cmx_includes =
22+ Arg_spec. S
23+ [ iflags
24+ ; Hidden_deps
25+ ( if opaque then
26+ List. map libs ~f: (fun lib ->
27+ (lib, if Lib. is_local lib then
28+ " .cmi"
29+ else
30+ " .cmi-and-.cmx" ))
31+ |> SC.Libs. file_deps_with_exts sctx
32+ else
33+ SC.Libs. file_deps sctx libs ~ext: " .cmi-and-.cmx"
34+ )
35+ ]
2636 in
2737 { cmi = cmi_includes
2838 ; cmo = cmi_includes
29- ; cmx = cmi_and_cmx_includes
39+ ; cmx = cmx_includes
3040 }
3141
3242 let empty =
@@ -47,6 +57,7 @@ type t =
4757 ; includes : Includes .t
4858 ; preprocessing : Preprocessing .t
4959 ; no_keep_locs : bool
60+ ; opaque : bool
5061 }
5162
5263let super_context t = t.super_context
@@ -62,12 +73,14 @@ let requires t = t.requires
6273let includes t = t.includes
6374let preprocessing t = t.preprocessing
6475let no_keep_locs t = t.no_keep_locs
76+ let opaque t = t.opaque
6577
6678let context t = Super_context. context t.super_context
6779
6880let create ~super_context ~scope ~dir ?(dir_kind =File_tree.Dune_file.Kind. Dune )
6981 ?(obj_dir =dir) ~modules ?alias_module ?lib_interface_module ~flags
70- ~requires ?(preprocessing =Preprocessing. dummy) ?(no_keep_locs =false ) () =
82+ ~requires ?(preprocessing =Preprocessing. dummy) ?(no_keep_locs =false )
83+ ~opaque () =
7184 { super_context
7285 ; scope
7386 ; dir
@@ -78,9 +91,10 @@ let create ~super_context ~scope ~dir ?(dir_kind=File_tree.Dune_file.Kind.Dune)
7891 ; lib_interface_module
7992 ; flags
8093 ; requires
81- ; includes = Includes. make super_context ~requires
94+ ; includes = Includes. make super_context ~opaque ~ requires
8295 ; preprocessing
8396 ; no_keep_locs
97+ ; opaque
8498 }
8599
86100let for_alias_module t =
0 commit comments