From 85c8fff7f578e531524cc042a4075cd0d1a9cd07 Mon Sep 17 00:00:00 2001 From: Jeremie Dimino Date: Fri, 30 Mar 2018 18:53:31 -0400 Subject: [PATCH] Add Arg_spec.Hidden_deps --- src/arg_spec.ml | 10 ++++++++-- src/arg_spec.mli | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/arg_spec.ml b/src/arg_spec.ml index 87fc4fe2..062d1b83 100644 --- a/src/arg_spec.ml +++ b/src/arg_spec.ml @@ -12,13 +12,15 @@ type 'a t = | Target of Path.t | Path of Path.t | Paths of Path.t list + | Hidden_deps of Path.t list | Dyn of ('a -> nothing t) let rec add_deps ts set = List.fold_left ts ~init:set ~f:(fun set t -> match t with - | Dep fn -> Pset.add set fn - | Deps fns -> Pset.union set (Pset.of_list fns) + | Dep fn -> Pset.add set fn + | Deps fns + | Hidden_deps fns -> Pset.union set (Pset.of_list fns) | S ts | Concat (_, ts) -> add_deps ts set | _ -> set) @@ -51,6 +53,9 @@ let expand ~dir ts x = | Concat (sep, ts) -> [String.concat ~sep (loop_dyn (S ts))] | Target _ -> die "Target not allowed under Dyn" | Dyn _ -> assert false + | Hidden_deps l -> + dyn_deps := Pset.union !dyn_deps (Pset.of_list l); + [] in let rec loop = function | A s -> [s] @@ -61,6 +66,7 @@ let expand ~dir ts x = | Concat (sep, ts) -> [String.concat ~sep (loop (S ts))] | Target fn -> [Path.reach fn ~from:dir] | Dyn f -> loop_dyn (f x) + | Hidden_deps _ -> [] in let l = List.concat_map ts ~f:loop in (l, !dyn_deps) diff --git a/src/arg_spec.mli b/src/arg_spec.mli index ac54d5f8..a8fa9f5d 100644 --- a/src/arg_spec.mli +++ b/src/arg_spec.mli @@ -38,6 +38,8 @@ type 'a t = | Target of Path.t | Path of Path.t | Paths of Path.t list + | Hidden_deps of Path.t list + (** Register dependencies but produce no argument *) | Dyn of ('a -> nothing t) val add_deps : _ t list -> Path.Set.t -> Path.Set.t