sig
  exception SDL_init_exception of string
  type subsystem = [ `AUDIO | `CDROM | `JOYSTICK | `TIMER | `VIDEO ]
  val init :
    ?auto_clean:bool ->
    [< `AUDIO
     | `CDROM
     | `EVENTTHREAD
     | `EVERYTHING
     | `JOYSTICK
     | `NOPARACHUTE
     | `TIMER
     | `VIDEO ]
    list -> unit
  val init_subsystem : Sdl.subsystem list -> unit
  val was_init : unit -> Sdl.subsystem list
  val quit : unit -> unit
  val quit_subsystem : Sdl.subsystem list -> unit
  type version = { major : int; minor : int; patch : int; }
  val version : unit -> Sdl.version
  val string_of_version : Sdl.version -> string
  val getenv : string -> string
  val putenv : string -> string -> unit
  type rwops_in
  val rwops_from_mem : string -> Sdl.rwops_in
  val rwops_in_close : Sdl.rwops_in -> unit
end