+
+(* make *)
+type options = (string * string) list
+
+module type Format =
+ sig
+ type source_object
+ type target_object
+ val load_deps_file: string -> (source_object * source_object list) list
+ val target_of: options -> source_object -> target_object
+ val string_of_source_object: source_object -> string
+ val string_of_target_object: target_object -> string
+ val build: options -> source_object -> bool
+ val root_of: options -> source_object -> string option
+ val mtime_of_source_object: source_object -> float option
+ val mtime_of_target_object: target_object -> float option
+ end
+
+module Make :
+ functor (F : Format) ->
+ sig
+ (* make [root dir] [targets], targets = [] means make all *)
+ val make : string -> F.source_object list -> bool
+ end
+
+val load_deps_file: string -> (string * string list) list
+val write_deps_file: string -> (string * string list) list -> unit