151 lines
5.8 KiB
CMake
151 lines
5.8 KiB
CMake
# sdl3_image cmake project-config input for CMakeLists.txt script
|
|
|
|
include(FeatureSummary)
|
|
set_package_properties(SDL3_image PROPERTIES
|
|
URL "https://www.libsdl.org/projects/SDL_image/"
|
|
DESCRIPTION "SDL_image is an image file loading library"
|
|
)
|
|
|
|
set(SDL3_image_FOUND ON)
|
|
|
|
set(SDLIMAGE_AVIF @SDLIMAGE_AVIF_ENABLED@)
|
|
set(SDLIMAGE_AVIF_SHARED @SDLIMAGE_AVIF_SHARED@)
|
|
set(SDLIMAGE_BMP @SDLIMAGE_BMP_ENABLED@)
|
|
set(SDLIMAGE_GIF @SDLIMAGE_GIF_ENABLED@)
|
|
set(SDLIMAGE_JPG @SDLIMAGE_JPG_ENABLED@)
|
|
set(SDLIMAGE_JPG_SHARED @SDLIMAGE_JPG_SHARED@)
|
|
set(SDLIMAGE_JXL @SDLIMAGE_JXL_ENABLED@)
|
|
set(SDLIMAGE_JXL_SHARED @SDLIMAGE_JXL_SHARED@)
|
|
set(SDLIMAGE_LBM @SDLIMAGE_LBM_ENABLED@)
|
|
set(SDLIMAGE_PCX @SDLIMAGE_PCX_ENABLED@)
|
|
set(SDLIMAGE_PNG @SDLIMAGE_PNG_ENABLED@)
|
|
set(SDLIMAGE_PNG_SHARED @SDLIMAGE_PNG_SHARED@)
|
|
set(SDLIMAGE_PNM @SDLIMAGE_PNM_ENABLED@)
|
|
set(SDLIMAGE_QOI @SDLIMAGE_QOI_ENABLED@)
|
|
set(SDLIMAGE_SVG @SDLIMAGE_SVG_ENABLED@)
|
|
set(SDLIMAGE_TGA @SDLIMAGE_TGA_ENABLED@)
|
|
set(SDLIMAGE_TIF @SDLIMAGE_TIF_ENABLED@)
|
|
set(SDLIMAGE_TIF_SHARED @SDLIMAGE_TIF_SHARED@)
|
|
set(SDLIMAGE_XCF @SDLIMAGE_XCF_ENABLED@)
|
|
set(SDLIMAGE_XPM @SDLIMAGE_XPM_ENABLED@)
|
|
set(SDLIMAGE_XV @SDLIMAGE_XV_ENABLED@)
|
|
set(SDLIMAGE_WEBP @SDLIMAGE_WEBP_ENABLED@)
|
|
set(SDLIMAGE_WEBP_SHARED @SDLIMAGE_WEBP_SHARED@)
|
|
|
|
set(SDLIMAGE_JPG_SAVE @SDLIMAGE_JPG_SAVE@)
|
|
set(SDLIMAGE_PNG_SAVE @SDLIMAGE_PNG_SAVE@)
|
|
|
|
set(SDLIMAGE_PNG_LIBPNG @SDLIMAGE_PNG_LIBPNG@)
|
|
|
|
set(SDLIMAGE_VENDORED @SDLIMAGE_VENDORED@)
|
|
|
|
set(SDLIMAGE_BACKEND_IMAGEIO @SDLIMAGE_BACKEND_IMAGEIO@)
|
|
set(SDLIMAGE_BACKEND_STB @SDLIMAGE_BACKEND_STB@)
|
|
set(SDLIMAGE_BACKEND_WIC @SDLIMAGE_BACKEND_WIC@)
|
|
|
|
set(SDLIMAGE_SDL3_REQUIRED_VERSION @SDL_REQUIRED_VERSION@)
|
|
|
|
set(SDL3_image_SDL3_image-shared_FOUND FALSE)
|
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL3_image-shared-targets.cmake")
|
|
include("${CMAKE_CURRENT_LIST_DIR}/SDL3_image-shared-targets.cmake")
|
|
set(SDL3_image_SDL3_image-shared_FOUND TRUE)
|
|
endif()
|
|
|
|
set(SDL3_image_SDL3_image-static_FOUND FALSE)
|
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL3_image-static-targets.cmake")
|
|
|
|
if(SDLIMAGE_VENDORED)
|
|
if(SDLIMAGE_AVIF AND NOT SDLIMAGE_AVIF_SHARED)
|
|
find_package(Threads)
|
|
endif()
|
|
if(SDLIMAGE_JXL AND NOT SDLIMAGE_JXL_SHARED)
|
|
include(CheckLanguage)
|
|
check_language(CXX)
|
|
if(NOT CMAKE_CXX_COMPILER AND NOT _sdl3image_nowarning)
|
|
message(WARNING "CXX language not enabled. Linking to SDL3_image::SDL3_image-static might fail.")
|
|
endif()
|
|
endif()
|
|
if(SDLIMAGE_TIF AND NOT SDLIMAGE_TIF_SHARED)
|
|
if(NOT TARGET CMath::CMath)
|
|
add_library(CMath::CMath INTERFACE IMPORTED)
|
|
find_library(CMATH_LIBRARY NAMES m)
|
|
if(CMATH_LIBRARY)
|
|
set_property(TARGET CMath::CMath PROPERTY INTERFACE_LINK_LIBRARIES "${CMAKE_LIBRARY}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
if(SDLIMAGE_WEBP AND NOT SDLIMAGE_WEBP_SHARED)
|
|
find_package(Threads)
|
|
endif()
|
|
else()
|
|
set(_sdl_cmake_module_path "${CMAKE_MODULE_PATH}")
|
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
|
|
|
include(CMakeFindDependencyMacro)
|
|
|
|
if(SDLIMAGE_AVIF AND NOT TARGET avif AND NOT SDLIMAGE_AVIF_SHARED)
|
|
find_package(libavif 1.0 QUIET)
|
|
if(NOT libavif_FOUND)
|
|
find_package(libavif @LIBAVIF_MINIMUM_VERSION@ QUIET)
|
|
endif()
|
|
if(NOT libavif_FOUND)
|
|
set(SDL3_image_FOUND FALSE)
|
|
return()
|
|
endif()
|
|
endif()
|
|
|
|
if(SDLIMAGE_JPG AND NOT TARGET JPEG::JPEG AND NOT SDLIMAGE_JPG_SHARED AND NOT (SDLIMAGE_BACKEND_STB OR SDLIMAGE_BACKEND_WIC OR SDLIMAGE_BACKEND_IMAGEIO))
|
|
find_dependency(JPEG)
|
|
endif()
|
|
|
|
if(SDLIMAGE_JXL AND NOT TARGET libjxl::libjxl AND NOT SDLIMAGE_JXL_SHARED)
|
|
list(APPEND libjxl_ROOT "${CMAKE_CURRENT_LIST_DIR}")
|
|
find_dependency(libjxl)
|
|
endif()
|
|
|
|
if(SDLIMAGE_PNG AND SDLIMAGE_PNG_LIBPNG AND NOT TARGET PNG::PNG AND NOT SDLIMAGE_PNG_SHARED)
|
|
find_dependency(PNG)
|
|
endif()
|
|
|
|
if(SDLIMAGE_TIF AND NOT TARGET TIFF::TIFF AND NOT SDLIMAGE_TIF_SHARED AND NOT (SDLIMAGE_BACKEND_IMAGEIO OR SDLIMAGE_BACKEND_WIC))
|
|
find_dependency(TIFF)
|
|
endif()
|
|
|
|
if(SDLIMAGE_WEBP AND NOT TARGET WebP::webp AND NOT SDLIMAGE_WEBP_SHARED)
|
|
list(APPEND webp_ROOT "${CMAKE_CURRENT_LIST_DIR}")
|
|
find_dependency(webp)
|
|
endif()
|
|
|
|
set(CMAKE_MODULE_PATH "${_sdl_cmake_module_path}")
|
|
unset(_sdl_cmake_module_path)
|
|
|
|
endif()
|
|
|
|
include("${CMAKE_CURRENT_LIST_DIR}/SDL3_image-static-targets.cmake")
|
|
set(SDL3_image_SDL3_image-static_FOUND TRUE)
|
|
endif()
|
|
|
|
function(_sdl_create_target_alias_compat NEW_TARGET TARGET)
|
|
if(CMAKE_VERSION VERSION_LESS "3.18")
|
|
# Aliasing local targets is not supported on CMake < 3.18, so make it global.
|
|
add_library(${NEW_TARGET} INTERFACE IMPORTED)
|
|
set_target_properties(${NEW_TARGET} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET}")
|
|
else()
|
|
add_library(${NEW_TARGET} ALIAS ${TARGET})
|
|
endif()
|
|
endfunction()
|
|
|
|
# Make sure SDL3_image::SDL3_image always exists
|
|
if(NOT TARGET SDL3_image::SDL3_image)
|
|
if(TARGET SDL3_image::SDL3_image-shared)
|
|
_sdl_create_target_alias_compat(SDL3_image::SDL3_image SDL3_image::SDL3_image-shared)
|
|
elseif(TARGET SDL3_image::SDL3_image-static)
|
|
_sdl_create_target_alias_compat(SDL3_image::SDL3_image SDL3_image::SDL3_image-static)
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT SDL3_image_COMPONENTS AND NOT TARGET SDL3_image::SDL3_image-shared AND NOT TARGET SDL3_image::SDL3_image-static)
|
|
set(SDL3_image_FOUND FALSE)
|
|
endif()
|
|
@PACKAGE_INIT@
|
|
check_required_components(SDL3_image)
|