1
1
module Pkg_args = struct
2
2
type t = {
3
- compile_dir : Fpath .t ;
4
- link_dir : Fpath .t ;
3
+ odoc_dir : Fpath .t ;
4
+ odocl_dir : Fpath .t ;
5
5
pages : (string * Fpath .t ) list ;
6
6
libs : (string * Fpath .t ) list ;
7
7
}
8
8
9
9
let map_rel dir = List. map (fun (a , b ) -> (a, Fpath. (dir // b)))
10
10
11
- let compiled_pages v = map_rel v.compile_dir v.pages
12
- let compiled_libs v = map_rel v.compile_dir v.libs
13
- let linked_pages v = map_rel v.link_dir v.pages
14
- let linked_libs v = map_rel v.link_dir v.libs
11
+ let compiled_pages v = map_rel v.odoc_dir v.pages
12
+ let compiled_libs v = map_rel v.odoc_dir v.libs
13
+ let linked_pages v = map_rel v.odocl_dir v.pages
14
+ let linked_libs v = map_rel v.odocl_dir v.libs
15
15
16
16
let combine v1 v2 =
17
- if v1.compile_dir <> v2.compile_dir then
18
- Fmt. invalid_arg " combine: compile_dir differs" ;
19
- if v1.link_dir <> v2.link_dir then
20
- Fmt. invalid_arg " combine: link_dir differs" ;
17
+ if v1.odoc_dir <> v2.odoc_dir then
18
+ Fmt. invalid_arg " combine: odoc_dir differs" ;
19
+ if v1.odocl_dir <> v2.odocl_dir then
20
+ Fmt. invalid_arg " combine: odocl_dir differs" ;
21
21
{
22
- compile_dir = v1.compile_dir ;
23
- link_dir = v1.link_dir ;
22
+ odoc_dir = v1.odoc_dir ;
23
+ odocl_dir = v1.odocl_dir ;
24
24
pages = v1.pages @ v2.pages;
25
25
libs = v1.libs @ v2.libs;
26
26
}
@@ -32,8 +32,8 @@ module Pkg_args = struct
32
32
Format. fprintf fmt " (%s, %a)" a Fpath. pp b))
33
33
in
34
34
Format. fprintf fmt
35
- " @[<hov>compile_dir : %a@;link_dir : %a@;pages: [%a]@;libs: [%a]@]" Fpath. pp
36
- x.compile_dir Fpath. pp x.link_dir sfp_pp x.pages sfp_pp x.libs
35
+ " @[<hov>odoc_dir : %a@;odocl_dir : %a@;pages: [%a]@;libs: [%a]@]" Fpath. pp
36
+ x.odoc_dir Fpath. pp x.odocl_dir sfp_pp x.pages sfp_pp x.libs
37
37
end
38
38
39
39
type index = {
@@ -50,7 +50,6 @@ let pp_index fmt x =
50
50
51
51
type 'a unit = {
52
52
parent_id : Odoc.Id .t ;
53
- odoc_dir : Fpath .t ;
54
53
input_file : Fpath .t ;
55
54
output_dir : Fpath .t ;
56
55
odoc_file : Fpath .t ;
@@ -98,7 +97,6 @@ and pp : all_kinds unit Fmt.t =
98
97
fun fmt x ->
99
98
Format. fprintf fmt
100
99
" @[<hov>parent_id: %s@;\
101
- odoc_dir: %a@;\
102
100
input_file: %a@;\
103
101
output_dir: %a@;\
104
102
odoc_file: %a@;\
@@ -110,8 +108,8 @@ and pp : all_kinds unit Fmt.t =
110
108
kind:%a@;\
111
109
@]"
112
110
(Odoc.Id. to_string x.parent_id)
113
- Fpath. pp x.odoc_dir Fpath. pp x.input_file Fpath. pp x.output_dir Fpath. pp
114
- x.odoc_file Fpath. pp x. odocl_file Pkg_args. pp x.pkg_args x.pkgname
111
+ Fpath. pp x.input_file Fpath. pp x.output_dir Fpath. pp x.odoc_file Fpath. pp
112
+ x.odocl_file Pkg_args. pp x.pkg_args x.pkgname
115
113
Fmt. (list ~sep: comma Fpath. pp)
116
114
(Fpath.Set. to_list x.include_dirs)
117
115
(Fmt. option pp_index) x.index pp_kind
@@ -121,12 +119,10 @@ let doc_dir pkg = Fpath.(pkg.Packages.pkg_dir / "doc")
121
119
let lib_dir pkg lib =
122
120
Fpath. (pkg.Packages. pkg_dir / " lib" / lib.Packages. lib_name)
123
121
124
- let of_packages ~output_dir ~ linked_dir ~index_dir ~extra_libs_paths
122
+ let of_packages ~odoc_dir ~ odocl_dir ~index_dir ~extra_libs_paths
125
123
(pkgs : Packages.t list ) : t list =
126
- let linked_dir =
127
- match linked_dir with None -> output_dir | Some dir -> dir
128
- in
129
- let index_dir = match index_dir with None -> output_dir | Some dir -> dir in
124
+ let odocl_dir = match odocl_dir with None -> odoc_dir | Some dir -> dir in
125
+ let index_dir = match index_dir with None -> odoc_dir | Some dir -> dir in
130
126
131
127
(* [module_of_hash] Maps a hash to the corresponding [Package.t], library name and
132
128
[Packages.modulety]. [lib_dirs] maps a library name to the odoc dir containing its
@@ -168,12 +164,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
168
164
let base_args pkg lib_deps : Pkg_args.t =
169
165
let own_page = dash_p pkg in
170
166
let own_libs = List. concat_map dash_l (Util.StringSet. to_list lib_deps) in
171
- {
172
- pages = [ own_page ];
173
- libs = own_libs;
174
- compile_dir = output_dir;
175
- link_dir = linked_dir;
176
- }
167
+ { pages = [ own_page ]; libs = own_libs; odoc_dir; odocl_dir }
177
168
in
178
169
let args_of_config config : Pkg_args.t =
179
170
let { Global_config. deps = { packages; libraries } } = config in
@@ -186,12 +177,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
186
177
packages
187
178
in
188
179
let libs_rel = List. concat_map dash_l libraries in
189
- {
190
- pages = pages_rel;
191
- libs = libs_rel;
192
- compile_dir = output_dir;
193
- link_dir = linked_dir;
194
- }
180
+ { pages = pages_rel; libs = libs_rel; odoc_dir; odocl_dir }
195
181
in
196
182
let args_of =
197
183
let cache = Hashtbl. create 10 in
@@ -222,19 +208,19 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
222
208
let ( // ) = Fpath. ( // ) in
223
209
let ( / ) = Fpath. ( / ) in
224
210
let pkg_args = args_of pkg lib_deps in
225
- let odoc_dir = output_dir // rel_dir in
226
211
let parent_id = rel_dir |> Odoc.Id. of_fpath in
227
- let odoc_file = odoc_dir / (String. uncapitalize_ascii name ^ " .odoc" ) in
212
+ let odoc_file =
213
+ odoc_dir // rel_dir / (String. uncapitalize_ascii name ^ " .odoc" )
214
+ in
228
215
(* odoc will uncapitalise the output filename *)
229
216
let odocl_file =
230
- linked_dir // rel_dir / (String. uncapitalize_ascii name ^ " .odocl" )
217
+ odocl_dir // rel_dir / (String. uncapitalize_ascii name ^ " .odocl" )
231
218
in
232
219
{
233
- output_dir;
220
+ output_dir = odoc_dir ;
234
221
pkgname = pkg.Packages. name;
235
222
pkg_args;
236
223
parent_id;
237
- odoc_dir;
238
224
input_file;
239
225
odoc_file;
240
226
odocl_file;
@@ -268,7 +254,8 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
268
254
let include_dirs, kind =
269
255
let deps = build_deps intf.mif_deps in
270
256
let include_dirs =
271
- List. map (fun u -> u.odoc_dir) deps |> Fpath.Set. of_list
257
+ List. map (fun u -> Fpath. parent u.odoc_file) deps
258
+ |> Fpath.Set. of_list
272
259
in
273
260
let kind = `Intf { hidden; hash = intf.mif_hash; deps } in
274
261
(include_dirs, kind)
@@ -291,7 +278,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
291
278
let rel_dir = lib_dir pkg lib in
292
279
let include_dirs =
293
280
let deps = build_deps impl.mip_deps in
294
- List. map (fun u -> u.odoc_dir ) deps |> Fpath.Set. of_list
281
+ List. map (fun u -> Fpath. parent u.odoc_file ) deps |> Fpath.Set. of_list
295
282
in
296
283
let kind =
297
284
let src_name = Fpath. filename src_path in
@@ -334,7 +321,7 @@ let of_packages ~output_dir ~linked_dir ~index_dir ~extra_libs_paths
334
321
List. map (fun (lib : Packages.libty ) -> lib_dir pkg lib) pkg.libraries
335
322
in
336
323
let include_dirs =
337
- (output_dir // rel_dir) :: include_dirs |> Fpath.Set. of_list
324
+ (odoc_dir // rel_dir) :: include_dirs |> Fpath.Set. of_list
338
325
in
339
326
let kind = `Mld in
340
327
let name = mld_path |> Fpath. rem_ext |> Fpath. basename |> ( ^ ) " page-" in
0 commit comments