blob: 25ee4118a4e1b00399a6a560cb10c87bdc69f054 [file] [edit]
function(fetch_sdl2_library directory url filename hash)
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${filename})
message(STATUS "Downloading ${filename}")
file(DOWNLOAD ${url}${filename} ${CMAKE_CURRENT_LIST_DIR}/${filename}
SHOW_PROGRESS
TIMEOUT 120
EXPECTED_HASH SHA1=${hash}
TLS_VERIFY ON)
endif()
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${directory})
message(STATUS "Extracting ${filename}")
if(${CMAKE_VERSION} VERSION_LESS "3.18")
# tar -xf should work on Windows 10 build 17063 or later (Dec 2017)
execute_process(COMMAND tar -xf ${filename}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR})
else()
file(ARCHIVE_EXTRACT INPUT ${CMAKE_CURRENT_LIST_DIR}/${filename} DESTINATION ${CMAKE_CURRENT_LIST_DIR})
endif()
endif()
endfunction(fetch_sdl2_library)
set(SDL2_VERSION 2.28.5)
set(SDL2_IMAGE_VERSION 2.8.12)
set(SDL2_NET_VERSION 2.2.0)
if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/include)
fetch_sdl2_library(
SDL2-${SDL2_VERSION}
https://github.com/libsdl-org/SDL/releases/download/release-${SDL2_VERSION}/
SDL2-devel-${SDL2_VERSION}-VC.zip
7469e9ea44d30a48b0510328cd94b25596e0aa0f
)
fetch_sdl2_library(
SDL2_image-${SDL2_IMAGE_VERSION}
https://github.com/libsdl-org/SDL_image/releases/download/release-${SDL2_IMAGE_VERSION}/
SDL2_image-devel-${SDL2_IMAGE_VERSION}-VC.zip
fbb2bff20c616949b1dc2fc35bad0ec55cf9d9f8
)
fetch_sdl2_library(
SDL2_net-${SDL2_NET_VERSION}
https://github.com/libsdl-org/SDL_net/releases/download/release-${SDL2_NET_VERSION}/
SDL2_net-devel-${SDL2_NET_VERSION}-VC.zip
c8ff358a5c8338002b05ab6de7ce91ee1c86bd45
)
endif()
include(${CMAKE_CURRENT_LIST_DIR}/SDL2-${SDL2_VERSION}/cmake/sdl2-config.cmake)
get_property(SDL2_DLL TARGET SDL2::SDL2 PROPERTY IMPORTED_LOCATION)
# help cmake to find the other libs
set(SDL2_image_DIR ${CMAKE_CURRENT_LIST_DIR}/SDL2_image-${SDL2_IMAGE_VERSION}/cmake)
set(SDL2_net_DIR ${CMAKE_CURRENT_LIST_DIR}/SDL2_net-${SDL2_NET_VERSION}/cmake)
# the latest SDL2_net (2.4.0) still has cmake_minimum_required(VERSION 3.0) in its config file for VC
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)