Rule.t
supports the description of build-rules in jenga.
Two varieties:
Alias.t
to stand for some dependencies.Action.t
.An alias-rule is constructed by alias
of which default
is a useful special case.
A target-rule is constructed by create
.
Target-rule.t
allows the description of dynamic build rules: Although the targets
must be static, the dependencies and action may be contingent on further dependencies.
This is achieved by constructing a target-rule from a value of type: Action.t Dep.t
Make-style rule-triples are a trivial special case, and can be constructed using the
convenience wrapper simple
, defined as:
let simple ~targets ~deps ~action = create ~targets ( Dep.all_unit deps *>>| fun () -> action )
module Target_rule : sig ... end
include sig ... end
val sexp_of_t : t ‑> Sexplib.Sexp.t
val targets : t ‑> Jenga_lib.Path.Rel.t list
val alias : Jenga_lib.Alias.t ‑> unit Jenga_lib.Dep.t list ‑> t
val default : dir:Jenga_lib.Path.t ‑> unit Jenga_lib.Dep.t list ‑> t
val create : targets:Jenga_lib.Path.t list ‑> Jenga_lib.Action.t Jenga_lib.Dep.t ‑> t
val simple : targets:Jenga_lib.Path.t list ‑> deps:unit Jenga_lib.Dep.t list ‑> action:Jenga_lib.Action.t ‑> t