sig
  val temp_files_prefix : string Pervasives.ref
  val temp_files_ext : string Pervasives.ref
  val debug : bool Pervasives.ref
  val print : (string -> unit) Pervasives.ref
  val string_of_bool : (bool -> string) Pervasives.ref
  val log_file : string Pervasives.ref
  val fatal_error : (string -> unit) Pervasives.ref
  val try_finalize : ('-> 'b) -> '-> ('-> 'd) -> '-> 'b
  val restart_on_EINTR : ('-> 'b) -> '-> 'b
  val is_suffix : suf:string -> string -> bool
  val create_temp_file : ?ext:string -> ?contents:string -> unit -> string
  val remove_empty_strings : string list -> string list
  val string_of_includes : string list -> string
  val byte_ext_to_opt : string -> string
  exception Path of string * string
  val path_sep : string
  val path_sep_regexp : Str.regexp
  val list_of_path : string -> string list
  val path_of_list : string list -> string
  val get_path : unit -> string list
  val find_in_path : (string -> bool) -> string list -> string -> string list
  type filetest =
      Fexists
    | Freadable
    | Fwritable
    | Fexecutable
    | Fdir
    | Freg
    | Flnk
    | Fnonempty
    | Fnewer of string
    | Folder of string
    | Fequal of string
  val access_map : (Sconf.OCaml_conf.filetest * Unix.access_permission) list
  val access_ok_errors : Unix.error list
  val testfile : Sconf.OCaml_conf.filetest list -> string -> bool
  val buffer_size : int
  val string_from_descr : Unix.file_descr -> string
  val descr_from_string : string -> Unix.file_descr -> unit
  val perm : int
  val string_of_file : string -> string
  val file_of_string : contents:string -> file:string -> unit
  val input_lines : Pervasives.in_channel -> string list
  val unlink_f : string -> unit
  exception Exec_failure
  val execvp_to_list : string -> string array -> string list
  type redirection =
      In_from_file of string
    | Out_to_file of string
    | Err_to_file of string
    | Out_append_to_file of string
    | Err_to_out
    | In_from_string of string
    | Err_null
    | Out_null
    | Silent
  val execvp_redirect :
    Sconf.OCaml_conf.redirection list ->
    string -> string array -> Unix.process_status
  val execvp : string -> string array -> Unix.process_status
  val exec_and_get_first_line : string -> string array -> string
  val exec_status_ok : Unix.process_status -> bool
  val string_of_date : float -> string
  val add_to_log : string -> unit
  type version = int list
  val ( << ) : 'a list -> 'a list -> bool
  val dummy_version : int list
  val version_of_string : string -> int list
  val string_of_version : int list -> string
  type ocaml_conf = {
    ocaml : string;
    ocamlc : string;
    ocamlopt : string;
    ocamldep : string;
    ocamldoc : string;
    ocamldoc_opt : string;
    ocamllex : string;
    ocamlyacc : string;
    ocamlmklib : string;
    ocamlmktop : string;
    ocamlprof : string;
    camlp4 : string;
    ocamlfind : string;
    version_string : string;
    version : Sconf.OCaml_conf.version;
  }
  exception Program_not_found of string
  val ocaml_prog : ?err:bool -> string -> string
  val ocaml_libdir : Sconf.OCaml_conf.ocaml_conf -> string
  val version_of_ocaml_version_string : string -> int list
  val check_version : ?on_err:(string -> unit) -> string -> string -> unit
  val check_conf_versions : Sconf.OCaml_conf.ocaml_conf -> unit
  val check_for_opt_prog : string -> string -> string
  val get_opt_conf :
    Sconf.OCaml_conf.ocaml_conf -> Sconf.OCaml_conf.ocaml_conf
  val ocaml_conf :
    ?withopt:bool -> ?ocamlfind:bool -> unit -> Sconf.OCaml_conf.ocaml_conf
  val print_conf : Sconf.OCaml_conf.ocaml_conf -> unit
  type compilation_mode = [ `Byte | `Opt ]
  val string_of_mode : [< `Byte | `Opt ] -> string
  val ocamlc_of_mode :
    Sconf.OCaml_conf.ocaml_conf -> [< `Byte | `Opt ] -> string
  val string_of_com_args : string -> string array -> string
  val can_compile :
    [< `Byte | `Opt ] ->
    Sconf.OCaml_conf.ocaml_conf ->
    ?includes:string list -> ?options:string list -> string -> bool
  val can_compile_prog :
    ?mes:string ->
    [< `Byte | `Opt ] ->
    Sconf.OCaml_conf.ocaml_conf ->
    ?includes:string list -> ?options:string list -> string -> bool
  val ocaml_defined :
    ?mes:string ->
    [< `Byte | `Opt ] ->
    Sconf.OCaml_conf.ocaml_conf ->
    ?includes:string list -> ?options:string list -> string -> bool
  val ocaml_value_has_type :
    ?mes:string ->
    [< `Byte | `Opt ] ->
    Sconf.OCaml_conf.ocaml_conf ->
    ?includes:string list -> ?options:'-> string -> string -> bool
  val can_link :
    ?mes:string ->
    [< `Byte | `Opt ] ->
    Sconf.OCaml_conf.ocaml_conf ->
    ?out:string ->
    ?includes:string list ->
    ?libs:string list -> ?options:string list -> string list -> bool
  val try_run : string -> bool
  val ocamlfind_query :
    Sconf.OCaml_conf.ocaml_conf -> string -> string option
  val ocamlfind_query_version :
    Sconf.OCaml_conf.ocaml_conf -> string -> string option
  val check_ocamlfind_package :
    ?min_version:int list ->
    ?max_version:int list ->
    ?fail:bool ->
    ?not_found:([ `Package_bad_version of string
                | `Package_not_installed of string ] -> unit) ->
    Sconf.OCaml_conf.ocaml_conf -> string -> bool
  val substs : (string, string) Hashtbl.t
  val add_subst : string -> string -> unit
  val subst_val : string -> string
  val get_substs_list : unit -> (string * string) list
  val output_substs : Pervasives.out_channel -> unit
  val output_substs_to_file : string -> unit
  val add_conf_variables : Sconf.OCaml_conf.ocaml_conf -> unit
end