set(SDL_SHARED OFF)
set(SDL_STATIC ON)
set(SDL_DEPS_SHARED ON CACHE BOOL "" FORCE)
set(SDL_WAYLAND_SHARED ON CACHE BOOL "" FORCE)
set(SDL_X11_SHARED ON CACHE BOOL "" FORCE)
set(SDL_TEST_LIBRARY OFF)
set(SDL_TESTS OFF)
set(SDL_DISABLE_INSTALL ON)
set(SDL_DISABLE_INSTALL_DOCS ON)
set(SDL_INSTALL_TESTS OFF)
set(SDL_UNIX_CONSOLE_BUILD ON)

set(SDL_AUDIO OFF)
set(SDL_GPU OFF)
set(SDL_CAMERA OFF)
set(SDL_TRAY OFF)

if(MODERNGEKKO_ENABLE_IMGUI_LAUNCHER)
  set(SDL_VIDEO ON)
  set(SDL_RENDER ON)
  set(SDL_DIALOG ON)
  set(SDL_WAYLAND ON)
  set(SDL_WAYLAND_LIBDECOR OFF)
  set(SDL_X11 ON CACHE BOOL "" FORCE)
  set(SDL_X11_XCURSOR OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XDBE OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XINPUT OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XFIXES OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XRANDR OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XSCRNSAVER OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XSHAPE OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XSYNC OFF CACHE BOOL "" FORCE)
  set(SDL_X11_XTEST OFF CACHE BOOL "" FORCE)
  set(SDL_OPENGL OFF)
  set(SDL_OPENGLES OFF)
  set(SDL_VULKAN ON)
  set(SDL_RENDER_VULKAN ON)
else()
  set(SDL_VIDEO OFF)
  set(SDL_RENDER OFF)
  set(SDL_DIALOG OFF)
endif()

if(CCACHE_BIN)
  set(SDL_CCACHE ON)
  set(CCACHE_BINARY ${CCACHE_BIN})
endif()

if(LibUSB_TYPE STREQUAL Bundled)
  set(LibUSB_FOUND TRUE)
  set(SDL_HIDAPI_LIBUSB_SHARED OFF)
endif()

add_subdirectory(SDL)

if (TARGET SDL3)
  dolphin_disable_warnings(SDL3)
endif()
if (TARGET SDL3-static)
  dolphin_disable_warnings(SDL3-static)
  # GCC 14's optimizer can consume enough memory to crash when SDL's
  # large generated frontend sources are compiled in parallel. SDL is not on
  # the emulated CPU hot path, so keep this target at the stable -O1 level.
  if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
    target_compile_options(SDL3-static PRIVATE -O1)
  endif()
endif()
