sig
  val runcmd : string -> int
  val runcmdf : ('a, unit, string, int) Pervasives.format4 -> 'a
  val findcmd : ?path:string list -> string -> string
  val system_path : unit -> string list
  val search_libs_path : unit -> string list
  val read_file : string -> string
  val write_file : string -> string -> unit
  val read_from_cmd : string -> int * string
  val read_from_cmdf :
    ('a, unit, string, int * string) Pervasives.format4 -> 'a
  val env : string -> string
  val env_req : string -> string
  val env_opt : string -> string option
  type 'a cmdstate
  val code : 'Godi_script.cmdstate -> int
  val result : 'Godi_script.cmdstate -> 'a option
  val return_code : int -> 'Godi_script.cmdstate -> 'Godi_script.cmdstate
  val return_result :
    'a option -> 'Godi_script.cmdstate -> 'Godi_script.cmdstate
  val initial_state : unit -> 'Godi_script.cmdstate
  type 'a cmdlet = 'Godi_script.cmdstate -> 'Godi_script.cmdstate
  val cmd : string -> 'Godi_script.cmdlet
  val cmdf :
    ('a, unit, string, 'Godi_script.cmdlet) Pervasives.format4 -> 'a
  val cmd_output : string -> string Godi_script.cmdlet
  val cmdf_output :
    ('a, unit, string, string Godi_script.cmdlet) Pervasives.format4 -> 'a
  val set_code : int -> 'Godi_script.cmdlet
  val set_code_from :
    ('Godi_script.cmdstate -> int) -> 'Godi_script.cmdlet
  val set_bool_code : bool -> 'Godi_script.cmdlet
  val set_bool_code_from :
    ('Godi_script.cmdstate -> bool) -> 'Godi_script.cmdlet
  val ( &- ) :
    'Godi_script.cmdlet -> 'Godi_script.cmdlet -> 'Godi_script.cmdlet
  val ( |- ) :
    'Godi_script.cmdlet -> 'Godi_script.cmdlet -> 'Godi_script.cmdlet
  val ignore_code : 'Godi_script.cmdlet -> 'Godi_script.cmdlet
  val eval : 'Godi_script.cmdlet -> 'a option
  val eval_test : 'Godi_script.cmdlet -> bool
  val log : string -> unit
  val logf : ('a, unit, string, unit) Pervasives.format4 -> 'a
  val print_conf_file : string -> (string * string) list -> unit
  val parse_conf_file : string -> (string * string) list
  type lang_env = [ `C of Godi_script.c_env ]
  and c_env = {
    c_env_file : (string * string) option;
    c_incdirs : string list;
    c_libdirs : string list;
    c_libs : string list;
    c_flags : string list;
    c_ld_flags : string list;
    c_elf_rpath : bool;
    c_config_script : string option;
    c_godi_deps : string list;
    c_requirements : Godi_script.c_env list;
  }
  val empty_c_env : Godi_script.c_env
  val c_env_from_config_script :
    ?arg_cflags:string ->
    ?arg_ldflags:string ->
    ?args:string list -> script_name:string -> unit -> Godi_script.c_env
  val create_test_whether_c_function_exists : string -> string
  val c_flags : ?with_requirements:bool -> Godi_script.c_env -> string list
  val c_ld_flags :
    ?with_requirements:bool -> Godi_script.c_env -> string list
  val c_compiler_name : unit -> string
  val c_compile_test :
    Godi_script.c_env -> string -> string Godi_script.cmdlet
  val run_test : string Godi_script.cmdlet
  val find_c_library :
    ?godi_deps:string list ->
    ?pref_incdir:string ->
    ?pref_libdir:string ->
    ?flags:string list ->
    ?ld_flags:string list ->
    ?inc_name:string ->
    ?requirements:Godi_script.c_env list ->
    ?locations:string list ->
    ?frameworks:string list ->
    libs:string list ->
    test:(Godi_script.c_env -> Godi_script.c_env option) ->
    unit -> Godi_script.c_env Godi_script.cmdlet
  val parse_c_result :
    file:string -> prefix:string -> unit -> Godi_script.c_env
  val print_c_result :
    ?vars:(string * string) list ->
    file:string -> prefix:string -> Godi_script.c_env -> unit
  val main_c_finder :
    ?godi_deps:string list Pervasives.ref ->
    ?pref_incdir:string option Pervasives.ref ->
    ?pref_libdir:string option Pervasives.ref ->
    ?c_flags:string list Pervasives.ref ->
    ?ld_flags:string list Pervasives.ref -> unit -> unit
  val main_config_finder : script_basename:string -> unit -> string
end