From 3cb24c15f3b5f4238d4574e21683dc8bd0181adc Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Sun, 20 Nov 2022 17:29:25 +0000 Subject: [PATCH] Remove SDL_image dep from SDL1 build Fixes #5504 --- 3rdParty/SDL_image/CMakeLists.txt | 20 ++++------- CMake/Dependencies.cmake | 59 +++++++++++++------------------ Source/CMakeLists.txt | 5 ++- 3 files changed, 35 insertions(+), 49 deletions(-) diff --git a/3rdParty/SDL_image/CMakeLists.txt b/3rdParty/SDL_image/CMakeLists.txt index 2094b6cfc..957029adc 100644 --- a/3rdParty/SDL_image/CMakeLists.txt +++ b/3rdParty/SDL_image/CMakeLists.txt @@ -18,17 +18,11 @@ endif() include(functions/FetchContent_MakeAvailableExcludeFromAll) include(FetchContent) -if(USE_SDL1) - FetchContent_Declare(SDL_image - URL https://github.com/libsdl-org/SDL_image/archive/refs/tags/release-1.2.12.tar.gz - URL_HASH MD5=5d499e3cf6be00bfb0a7bff1cbdbd348 - ) -else() - FetchContent_Declare(SDL_image - URL https://github.com/libsdl-org/SDL_image/archive/refs/tags/release-2.0.5.tar.gz - URL_HASH MD5=3446ed7ee3c700065dcb33426a9b0c6e - ) -endif() + +FetchContent_Declare(SDL_image + URL https://github.com/libsdl-org/SDL_image/archive/refs/tags/release-2.0.5.tar.gz + URL_HASH MD5=3446ed7ee3c700065dcb33426a9b0c6e +) FetchContent_MakeAvailableExcludeFromAll(SDL_image) if(DEVILUTIONX_STATIC_SDL_IMAGE) @@ -41,9 +35,7 @@ target_include_directories(SDL_image PRIVATE ${sdl_image_SOURCE_DIR}) target_compile_definitions(SDL_image PRIVATE LOAD_PNG SDL_IMAGE_USE_COMMON_BACKEND) target_link_libraries(SDL_image PNG::PNG) -if(USE_SDL1) - target_link_libraries(SDL_image ${SDL_LIBRARY}) -elseif(TARGET SDL2::SDL2) +if(TARGET SDL2::SDL2) target_link_libraries(SDL_image SDL2::SDL2) add_library(SDL2::SDL2_image ALIAS SDL_image) elseif(TARGET SDL2::SDL2-static) diff --git a/CMake/Dependencies.cmake b/CMake/Dependencies.cmake index 04d023ca7..909636651 100644 --- a/CMake/Dependencies.cmake +++ b/CMake/Dependencies.cmake @@ -83,46 +83,37 @@ else() endif() macro(_find_SDL_image QUIET_OR_REQUIRED) - if(USE_SDL1) - find_package(SDL_image ${QUIET_OR_REQUIRED}) - else() - # vcpkg uses sdl2-image as the package name - find_package(sdl2-image QUIET) - set(SDL_image_FOUND ${sdl2-image_FOUND}) - - if(NOT SDL_image_FOUND) - # Fall back on PkgConfig via FindSDL2_image.cmake - find_package(SDL2_image ${QUIET_OR_REQUIRED}) - set(SDL_image_FOUND ${SDL2_image_FOUND}) - endif() + # vcpkg uses sdl2-image as the package name + find_package(sdl2-image QUIET) + set(SDL_image_FOUND ${sdl2-image_FOUND}) + + if(NOT SDL_image_FOUND) + # Fall back on PkgConfig via FindSDL2_image.cmake + find_package(SDL2_image ${QUIET_OR_REQUIRED}) + set(SDL_image_FOUND ${SDL2_image_FOUND}) endif() endmacro() -if(EMSCRIPTEN) - emscripten_system_library("SDL_image" SDL2::SDL2_image USE_SDL_IMAGE=2 "SDL2_IMAGE_FORMATS='[\"png\"]'") -else() - if(NOT DEFINED DEVILUTIONX_SYSTEM_SDL_IMAGE) - _find_SDL_image(QUIET) - if(SDL_image_FOUND) - message("-- Found SDL_image") +if(NOT USE_SDL1) + if(EMSCRIPTEN) + emscripten_system_library("SDL_image" SDL2::SDL2_image USE_SDL_IMAGE=2 "SDL2_IMAGE_FORMATS='[\"png\"]'") + else() + if(NOT DEFINED DEVILUTIONX_SYSTEM_SDL_IMAGE) + _find_SDL_image(QUIET) + if(SDL_image_FOUND) + message("-- Found SDL_image") + else() + message("-- Suitable system SDL_image package not found, will use SDL_image from source") + set(DEVILUTIONX_SYSTEM_SDL_IMAGE OFF) + endif() + endif() + dependency_options("SDL_image" DEVILUTIONX_SYSTEM_SDL_IMAGE ON DEVILUTIONX_STATIC_SDL_IMAGE) + if(DEVILUTIONX_SYSTEM_SDL_IMAGE) + _find_SDL_image(REQUIRED) else() - message("-- Suitable system SDL_image package not found, will use SDL_image from source") - set(DEVILUTIONX_SYSTEM_SDL_IMAGE OFF) + add_subdirectory(3rdParty/SDL_image) endif() endif() - dependency_options("SDL_image" DEVILUTIONX_SYSTEM_SDL_IMAGE ON DEVILUTIONX_STATIC_SDL_IMAGE) - if(DEVILUTIONX_SYSTEM_SDL_IMAGE) - _find_SDL_image(REQUIRED) - else() - add_subdirectory(3rdParty/SDL_image) - endif() -endif() - -add_library(DevilutionX::SDL_image INTERFACE IMPORTED GLOBAL) -if(USE_SDL1) - target_link_libraries(DevilutionX::SDL_image INTERFACE SDL_image) -else() - target_link_libraries(DevilutionX::SDL_image INTERFACE SDL2::SDL2_image) endif() if(NOT DEFINED DEVILUTIONX_SYSTEM_LIBFMT) diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 9fcd48e4d..cc2b3c7bd 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -249,7 +249,6 @@ endif() target_link_libraries(libdevilutionx PUBLIC Threads::Threads DevilutionX::SDL - DevilutionX::SDL_image fmt::fmt PKWare libmpq @@ -259,6 +258,10 @@ target_link_libraries(libdevilutionx PUBLIC hoehrmann_utf8 ) +if(NOT USE_SDL1) + target_link_libraries(libdevilutionx PUBLIC SDL2::SDL2_image) +endif() + if(NOT NONET) if(NOT DISABLE_TCP) target_link_libraries(libdevilutionx PUBLIC asio)