module type Format = sig type source_object type target_object val target_of : source_object -> target_object val string_of_source_object : source_object -> string val string_of_target_object : target_object -> string val build : source_object -> unit 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 val make : (F.source_object * F.source_object list) list -> unit end