diff options
Diffstat (limited to 'ocaml-binary-annot/ocamlbuild/rule.mli')
| -rw-r--r-- | ocaml-binary-annot/ocamlbuild/rule.mli | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ocaml-binary-annot/ocamlbuild/rule.mli b/ocaml-binary-annot/ocamlbuild/rule.mli new file mode 100644 index 0000000000..16af0f6fef --- /dev/null +++ b/ocaml-binary-annot/ocamlbuild/rule.mli @@ -0,0 +1,80 @@ +(***********************************************************************) +(* ocamlbuild *) +(* *) +(* Nicolas Pouillard, Berke Durak, projet Gallium, INRIA Rocquencourt *) +(* *) +(* Copyright 2007 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + + +(* Original author: Nicolas Pouillard *) +open My_std +open Resource + +type env = Pathname.t -> Pathname.t +type builder = Pathname.t list list -> (Pathname.t, exn) Outcome.t list +type action = env -> builder -> Command.t + +type 'a gen_rule + +type rule = Pathname.t gen_rule +type rule_scheme = resource_pattern gen_rule + +type 'a rule_printer = (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a gen_rule -> unit + +(** This exception can be raised inside the action of a rule to make the + algorithm skip this rule. *) +exception Failed + +val name_of_rule : 'a gen_rule -> string +val deps_of_rule : 'a gen_rule -> Pathname.t list +val prods_of_rule : 'a gen_rule -> 'a list + +val rule : string -> + ?tags:string list -> + ?prods:string list -> + ?deps:string list -> + ?prod:string -> + ?dep:string -> + ?stamp:string -> + ?insert:[`top | `before of string | `after of string | `bottom] -> + action -> unit + +(** [copy_rule name ?insert source destination] *) +val copy_rule : string -> + ?insert:[`top | `before of string | `after of string | `bottom] -> + string -> string -> unit + +module Common_commands : sig + val mv : Pathname.t -> Pathname.t -> Command.t + val cp : Pathname.t -> Pathname.t -> Command.t + val cp_p : Pathname.t -> Pathname.t -> Command.t + val ln_f : Pathname.t -> Pathname.t -> Command.t + val ln_s : Pathname.t -> Pathname.t -> Command.t + val rm_f : Pathname.t -> Command.t + val chmod : Command.spec -> Pathname.t -> Command.t + val cmp : Pathname.t -> Pathname.t -> Command.t +end + +val print : Format.formatter -> rule -> unit +val pretty_print : 'a rule_printer + +(** For system use only *) + +val subst : Resource.env -> rule_scheme -> rule +val can_produce : Pathname.t -> rule_scheme -> rule option +(* val tags_matches : Tags.t -> t -> t option *) +val compare : 'a gen_rule -> 'a gen_rule -> int + +val print_rule_name : Format.formatter -> 'a gen_rule -> unit +val print_rule_contents : 'a rule_printer + +val get_rules : unit -> rule_scheme list +val clear_rules : unit -> unit + +val call : builder -> rule -> unit + +val build_deps_of_tags : builder -> Tags.t -> Pathname.t list |
