if(TARGET SDL2-static)
    return()
endif()

message(STATUS "Third-party: creating target 'SDL2::SDL2'")

set(SDL_STATIC ON CACHE BOOL "" FORCE)
set(SDL_SHARED OFF CACHE BOOL "" FORCE)
set(SDL_TEST OFF CACHE BOOL "" FORCE)
set(SDL2_DISABLE_INSTALL OFF CACHE BOOL "" FORCE)

set(
	internal_sdl2_options

		"SDL_STATIC ON"
		"SDL_SHARED OFF"
		"SDL_TEST OFF"
		"SDL2_DISABLE_INSTALL OFF"
)

if(${CMAKE_SYSTEM} MATCHES Windows)
	list(APPEND internal_sdl2_options "SDL2_DISABLE_SDL2MAIN OFF")
	option(SDL2_DISABLE_SDL2MAIN   "Disable building/installation of SDL2main" OFF)
	set(SDL2_DISABLE_SDL2MAIN OFF CACHE BOOL "" FORCE)
endif()
if(${CMAKE_SYSTEM} MATCHES Darwin)
	list(APPEND internal_sdl2_options "SDL2_DISABLE_SDL2MAIN OFF")
	option(SDL2_DISABLE_SDL2MAIN   "Disable building/installation of SDL2main" OFF)
	set(SDL2_DISABLE_SDL2MAIN OFF CACHE BOOL "" FORCE)
endif()
if(${CMAKE_SYSTEM} MATCHES Linux)
	list(APPEND internal_sdl2_options "SDL2_DISABLE_SDL2MAIN ON")
	option(SDL2_DISABLE_SDL2MAIN   "Disable building/installation of SDL2main" ON)
	set(SDL2_DISABLE_SDL2MAIN ON CACHE BOOL "" FORCE)
endif()

include(FetchContent)

if (SDL2_USE_THIRDPARTY)
	FetchContent_Declare(
		SDL2
		VERSION 2.30.0
		GITHUB_REPOSITORY "libsdl-org/SDL"
		GIT_TAG release-2.30.0
		OPTIONS ${internal_sdl2_options}
		OVERRIDE_FIND_PACKAGE
	)
else()
	FetchContent_Declare(
		SDL2
		SOURCE_DIR "${CMAKE_SOURCE_DIR}/thirdparty/SDL2/"
		OPTIONS ${internal_sdl2_options}
		OVERRIDE_FIND_PACKAGE
	)
endif()

FetchContent_MakeAvailable(SDL2)

set(SDL2_INCLUDE_DIR "${SDL2_BINARY_DIR}/include" CACHE PATH "" FORCE)
set(SDL2_LIBRARY "${SDL2_BINARY_DIR}/SDL2-staticd.lib" CACHE PATH "" FORCE)
set(SDL2_DIR ${SDL2_BINARY_DIR} CACHE PATH "" FORCE)