sig
  type var
  val ( === ) : string -> string list -> [> `Var of Makefile.var ]
  val ( =:= ) : string -> string list -> [> `Var of Makefile.var ]
  val ( =::= ) : string -> string list -> [> `Var of Makefile.var ]
  val ( =+= ) : string -> string list -> [> `Var of Makefile.var ]
  val ( =?= ) : string -> string list -> [> `Var of Makefile.var ]
  module Infix :
    sig
      val ( === ) : string -> string list -> [> `Var of Makefile.var ]
      val ( =:= ) : string -> string list -> [> `Var of Makefile.var ]
      val ( =::= ) : string -> string list -> [> `Var of Makefile.var ]
      val ( =+= ) : string -> string list -> [> `Var of Makefile.var ]
      val ( =?= ) : string -> string list -> [> `Var of Makefile.var ]
    end
  type rule
  val rule :
    ?ext:bool ->
    ?order_only_prereqs:string list ->
    targets:string list ->
    prereqs:string list ->
    recipe:string list list -> unit -> [> `Rule of Makefile.rule ]
  type statement = [ `Rule of Makefile.rule | `Var of Makefile.var ]
  type t =
      [ `Blank
      | `Comment of string
      | `Rule of Makefile.rule
      | `Var of Makefile.var ] list
  val to_string : Makefile.t -> string
end