sig
  type includes = As_path.t list
  type name = As_path.t
  type pkgs = As_ctx.t -> string list
  val compile_src_ast :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    dumpast:As_acmd.cmd ->
    [ `Ml | `Mli ] -> src:As_path.t -> unit -> As_action.t
  val compile_mli :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlc:As_acmd.cmd ->
    annot:bool ->
    incs:As_action_ocaml.includes -> src:As_path.t -> unit -> As_action.t
  val compile_ml_byte :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlc:As_acmd.cmd ->
    annot:bool ->
    has_mli:bool ->
    incs:As_action_ocaml.includes -> src:As_path.t -> unit -> As_action.t
  val compile_ml_native :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlopt:As_acmd.cmd ->
    annot:bool ->
    has_mli:bool ->
    incs:As_action_ocaml.includes -> src:As_path.t -> unit -> As_action.t
  val compile_c :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlc:As_acmd.cmd -> src:As_path.t -> unit -> As_action.t
  val archive_byte :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlc:As_acmd.cmd ->
    cmos:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
  val archive_native :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlopt:As_acmd.cmd ->
    cmx_s:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
  val archive_shared :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlopt:As_acmd.cmd ->
    cmx_s:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
  val archive_c :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlmklib:As_acmd.cmd ->
    objs:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
  val link_byte :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlc:As_acmd.cmd ->
    objs:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
  val link_native :
    ?needs:As_path.t list ->
    ?pkgs:As_action_ocaml.pkgs ->
    ?args:string list ->
    ocamlopt:As_acmd.cmd ->
    objs:As_path.t list -> name:As_action_ocaml.name -> unit -> As_action.t
end