Browse Source

CMake: Only link against libpng when needed

When using the system `SDL(2)_image`, we do not need to link against
libpng.
pull/3407/head
Gleb Mazovetskiy 4 years ago committed by Anders Jenbo
parent
commit
7d7b847374
  1. 17
      3rdParty/SDL_image/CMakeLists.txt
  2. 1
      CMake/ctr/modules/FindPNG.cmake
  3. 20
      CMakeLists.txt

17
3rdParty/SDL_image/CMakeLists.txt vendored

@ -1,5 +1,20 @@
include(FetchContent_MakeAvailableExcludeFromAll)
option(DEVILUTIONX_SYSTEM_LIBPNG "Use system-provided libpng" ON)
cmake_dependent_option(DEVILUTIONX_STATIC_LIBPNG "Link static libpng" OFF
"DEVILUTIONX_SYSTEM_LIBPNG AND NOT DIST" ON)
if(DEVILUTIONX_SYSTEM_LIBPNG)
find_package(PNG QUIET)
if(PNG_FOUND)
message("-- Found png ${PNG_VERSION_STRING}")
else()
message("-- Suitable system png package not found, will use png from source")
endif()
endif()
if(NOT PNG_FOUND)
add_subdirectory(../libpng libpng)
endif()
include(FetchContent_MakeAvailableExcludeFromAll)
include(FetchContent)
if(USE_SDL1)
FetchContent_Declare(SDL_image

1
CMake/ctr/modules/FindPNG.cmake

@ -63,3 +63,4 @@ set(PNG_PROCESS_LIBS PNG_LIBRARY LIBM_LIBRARY)
libfind_process(PNG)
try_add_imported_target(PNG m 3ds::zlib)
add_library(PNG::PNG ALIAS 3ds::png)

20
CMakeLists.txt

@ -89,10 +89,6 @@ option(DEVILUTIONX_SYSTEM_LIBFMT "Use system-provided libfmt" ON)
cmake_dependent_option(DEVILUTIONX_STATIC_LIBFMT "Link static libfmt" OFF
"DEVILUTIONX_SYSTEM_LIBFMT AND NOT DIST" ON)
option(DEVILUTIONX_SYSTEM_LIBPNG "Use system-provided libpng" ON)
cmake_dependent_option(DEVILUTIONX_STATIC_LIBPNG "Link static libpng" OFF
"DEVILUTIONX_SYSTEM_LIBPNG AND NOT DIST" ON)
option(DEVILUTIONX_SYSTEM_SDL_IMAGE "Use system-provided SDL_image" ON)
cmake_dependent_option(DEVILUTIONX_STATIC_SDL_IMAGE "Link static SDL_image" OFF
"DEVILUTIONX_SYSTEM_SDL_IMAGE AND NOT DIST" ON)
@ -260,21 +256,6 @@ if(NOT fmt_FOUND)
add_subdirectory(3rdParty/libfmt)
endif()
if(DEVILUTIONX_SYSTEM_LIBPNG)
find_package(PNG QUIET)
if(PNG_FOUND)
message("-- Found png ${PNG_VERSION_STRING}")
else()
message("-- Suitable system png package not found, will use png from source")
endif()
if(NOT TARGET PNG::PNG AND TARGET 3ds::png)
add_library(PNG::PNG ALIAS 3ds::png)
endif()
endif()
if(NOT PNG_FOUND)
add_subdirectory(3rdParty/libpng)
endif()
if(ANDROID)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/android-project/3rdParty/SDL2)
elseif(USE_SDL1)
@ -899,7 +880,6 @@ if(NOT NONET)
endif()
target_link_libraries(libdevilutionx PUBLIC fmt::fmt)
target_link_libraries(libdevilutionx PUBLIC PNG::PNG)
genex_for_option(DEBUG)
target_compile_definitions(libdevilutionx PUBLIC "$<${DEBUG_GENEX}:_DEBUG>")

Loading…
Cancel
Save