forked from ocaml/dune
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlib_file_deps.ml
36 lines (29 loc) · 1.16 KB
/
lib_file_deps.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
open Stdune
open Dune_file
open Build_system
let string_of_exts = String.concat ~sep:"-and-"
let lib_files_alias ~dir ~name ~exts =
Alias.make (sprintf "lib-%s%s-all"
(Lib_name.to_string name) (string_of_exts exts)) ~dir
let setup_file_deps_alias t ~dir ~exts lib files =
Super_context.add_alias_deps t
(lib_files_alias ~dir ~name:(Library.best_name lib) ~exts) files
let setup_file_deps_group_alias t ~dir ~exts lib =
setup_file_deps_alias t lib ~dir ~exts
(List.map exts ~f:(fun ext ->
Alias.stamp_file
(lib_files_alias ~dir ~name:(Library.best_name lib) ~exts:[ext]))
|> Path.Set.of_list)
module L = struct
let file_deps_of_lib t (lib : Lib.t) ~exts =
if Lib.is_local lib then
Alias.stamp_file
(lib_files_alias ~dir:(Lib.src_dir lib) ~name:(Lib.name lib) ~exts)
else
Build_system.stamp_file_for_files_of (Super_context.build_system t)
~dir:(Lib.obj_dir lib) ~ext:(string_of_exts exts)
let file_deps_with_exts t lib_exts =
List.rev_map lib_exts ~f:(fun (lib, exts) -> file_deps_of_lib t lib ~exts)
let file_deps t libs ~exts =
List.rev_map libs ~f:(file_deps_of_lib t ~exts)
end