module Command: sig .. end
type tags = Tags.t 
type pathname = string 
val jobs : int Pervasives.ref
type t = 
| | 
Seq of t list | 
| | 
Cmd of spec | 
| | 
Echo of string list * pathname | 
| | 
Nop | 
type spec = 
| | 
N | 
| | 
S of spec list | 
| | 
A of string | 
| | 
P of pathname | 
| | 
Px of pathname | 
| | 
Sh of string | 
| | 
T of Tags.t | 
| | 
V of string | 
| | 
Quote of spec | 
val no_tag_handler : 'a -> 'b
val tag_handler : (Tags.t -> spec) Pervasives.ref
val atomize : string list -> spec
val atomize_paths : pathname list -> spec
val env_path : string list lazy_t
val virtual_solvers : (string, unit -> spec) Hashtbl.t
val setup_virtual_command_solver : string -> (unit -> spec) -> unit
val virtual_solver : string -> spec
val search_in_path : string -> string
val string_of_command_spec_with_calls : (Tags.t -> 'a) ->
       (pathname -> unit) -> bool -> spec -> string
val string_of_command_spec : spec -> string
val string_target_and_tags_of_command_spec : spec -> string * pathname * Tags.t
val string_print_of_command_spec : spec -> bool -> bool -> unit -> string
val print_escaped_string : Format.formatter -> string -> unit
val print : Format.formatter -> t -> unit
val to_string : t -> string
module Primitives: sig .. end
val list_rev_iter : ('a -> unit) -> 'a list -> unit
val flatten_commands : bool -> bool -> t -> (unit -> string) list
val execute_many : ?quiet:bool -> ?pretend:bool -> t list -> (bool list * exn) option
val execute : ?quiet:bool -> ?pretend:bool -> t -> unit
val iter_tags : (Tags.t -> unit) -> t -> unit
val fold_pathnames : (pathname -> 'a -> 'a) -> t -> 'a -> 'a
val reduce : spec -> spec
val digest : t -> My_std.Digest.t
val all_deps_of_tags : (Tags.t * pathname list) list Pervasives.ref
val cons : 'a list -> 'a list -> 'a list
val deps_of_tags : Tags.t -> pathname list
val set_deps_of_tags : Tags.t -> pathname list -> unit
val dep : string list -> pathname list -> unit
val pdep : Tags.elt list -> Tags.elt -> (string -> pathname list) -> unit