sig
  type t
  val build_cmd : Topkg_conf.t -> Topkg_conf.os -> Topkg_cmd.t
  val clean_cmd : Topkg_conf.os -> build_dir:Topkg_fpath.t -> Topkg_cmd.t
  val v :
    ?prepare_on_pin:bool ->
    ?dir:Topkg_fpath.t ->
    ?pre:(Topkg_conf.t -> unit Topkg_result.result) ->
    ?cmd:(Topkg_conf.t ->
          Topkg_conf.os -> Topkg_fpath.t list -> unit Topkg_result.result) ->
    ?post:(Topkg_conf.t -> unit Topkg_result.result) ->
    ?clean:(Topkg_conf.os ->
            build_dir:Topkg_fpath.t -> unit Topkg_result.result) ->
    unit -> Topkg_build.t
  val with_dir : Topkg_build.t -> Topkg_fpath.t -> Topkg_build.t
  val prepare_on_pin : Topkg_build.t -> bool
  val dir : Topkg_build.t -> Topkg_fpath.t
  val pre : Topkg_build.t -> Topkg_conf.t -> unit Topkg_result.result
  val cmd :
    Topkg_build.t ->
    Topkg_conf.t ->
    Topkg_conf.os -> Topkg_fpath.t list -> unit Topkg_result.result
  val post : Topkg_build.t -> Topkg_conf.t -> unit Topkg_result.result
  val clean :
    Topkg_build.t ->
    Topkg_conf.os -> build_dir:Topkg_fpath.t -> unit Topkg_result.result
  val codec : Topkg_build.t Topkg_codec.t
  val ocb_tag : Topkg_conf.t -> 'Topkg_conf.key -> string -> Topkg_cmd.t
  val ocb_bool_tag :
    Topkg_conf.t -> bool Topkg_conf.key -> string -> Topkg_cmd.t
  val ocb_bool_tags :
    Topkg_conf.t -> (bool Topkg_conf.key * string) list -> Topkg_cmd.t
end