From 345ffa0f6f1d6643041d2e920af33df42424f51a Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Thu, 12 May 2022 00:27:09 +0200
Subject: [PATCH] Export SDL2_image::SDL2_image target + allow disabling
install
---
CMakeLists.txt | 95 ++++++++++++++++++++++++++------------------------
1 file changed, 49 insertions(+), 46 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 058a57e..d14819f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -234,6 +234,7 @@ include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
option(VENDORED_DEFAULT "Default value for *_VENDORED options. Can be overridden for each library. Is only used in the first configure run." ON)
+option(SDL2_IMAGE_DISABLE_INSTALL "Disable installing SDL2_image" OFF)
option(BACKEND_STB "Use stb_image for loading JPEG and PNG files" ON)
cmake_dependent_option(BACKEND_WIC "Add WIC backend (Windows Imaging Component)" OFF "WIN32" OFF)
@@ -315,7 +316,7 @@ add_library(SDL2_image
IMG_xv.c
IMG_xxx.c
)
-add_library(SDL2::image ALIAS SDL2_image)
+add_library(SDL2_image::SDL2_image ALIAS SDL2_image)
target_compile_definitions(SDL2_image PRIVATE
SDL_BUILD_MAJOR_VERSION=${MAJOR_VERSION}
@@ -646,56 +647,58 @@ if (BUILD_SHARED_LIBS)
endif()
endif()
-if (BUILD_SHARED_LIBS)
- target_link_libraries(SDL2_image PRIVATE SDL2::SDL2)
-else()
- target_link_libraries(SDL2_image PRIVATE SDL2::SDL2-static)
-endif()
-
-install(TARGETS SDL2_image EXPORT SDL2ImageExports
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL2"
- )
+if (NOT SDL2_IMAGE_DISABLE_INSTALL)
+ if (BUILD_SHARED_LIBS)
+ target_link_libraries(SDL2_image PRIVATE SDL2::SDL2)
+ else()
+ target_link_libraries(SDL2_image PRIVATE SDL2::SDL2-static)
+ endif()
-if (INSTALL_EXTRA_TARGETS)
- install(TARGETS ${INSTALL_EXTRA_TARGETS} EXPORT SDL2ImageExports
+ install(TARGETS SDL2_image EXPORT SDL2ImageExports
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- PUBLIC_HEADER DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/external_include"
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL2"
)
-endif()
-configure_package_config_file(SDL2_image-config.cmake.in SDL2_image-config.cmake
- INSTALL_DESTINATION "${CMAKE_INSTALL_LBDIR}/cmake/SDL2_image")
-
-set(prefix "${CMAKE_INSTALL_PREFIX}")
-set(exec_prefix "${CMAKE_INSTALL_FULL_LIBEXECDIR}")
-set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
-set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
-set(PACKAGE "${PROJECT_NAME}")
-set(VERSION "${FULL_VERSION}")
-set(SDL_VERSION "${SDL_REQUIRED_VERSION}")
-string(JOIN " " PC_REQUIRES ${PC_REQUIRES})
-configure_file(SDL2_image.pc.in SDL2_image.pc @ONLY)
-
-install(EXPORT SDL2ImageExports NAMESPACE SDL2::
- DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SDL2_image" FILE SDL2_image-targets.cmake)
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL2_image-config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SDL2_image")
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL2_image.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
-install(FILES "LICENSE.txt" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}")
-if (NOT (WIN32 OR CYGWIN OR MINGW))
- if(BUILD_SHARED_LIBS)
- set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
- get_target_property(SONAME SDL2_image OUTPUT_NAME)
- if(NOT ANDROID)
- install(CODE "
- execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
- \"lib${SONAME}${SOEXT}\" \"libSDL2_image${SOEXT}\"
- WORKING_DIRECTORY \"${PROJECT_BINARY_DIR}\")")
- install(FILES ${PROJECT_BINARY_DIR}/libSDL2_image${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ if (INSTALL_EXTRA_TARGETS)
+ install(TARGETS ${INSTALL_EXTRA_TARGETS} EXPORT SDL2ImageExports
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ PUBLIC_HEADER DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/external_include"
+ )
+ endif()
+
+ configure_package_config_file(SDL2_image-config.cmake.in SDL2_image-config.cmake
+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SDL2_image")
+
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
+ set(exec_prefix "\${prefix}")
+ set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}")
+ set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
+ set(PACKAGE "${PROJECT_NAME}")
+ set(VERSION "${FULL_VERSION}")
+ set(SDL_VERSION "${SDL_REQUIRED_VERSION}")
+ string(JOIN " " PC_REQUIRES ${PC_REQUIRES})
+ file(GENERATE OUTPUT SDL2_image.pc INPUT SD2_image.pc.in)
+
+ install(EXPORT SDL2ImageExports NAMESPACE SDL2_image::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SDL2_image" FILE SDL2_image-targets.cmake)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL2_image-config.cmake" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SDL2_image")
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL2_image.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ install(FILES "LICENSE.txt" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}")
+ if (NOT (WIN32 OR CYGWIN OR MINGW))
+ if(BUILD_SHARED_LIBS)
+ set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX}) # ".so", ".dylib", etc.
+ get_target_property(SONAME SDL2_image OUTPUT_NAME)
+ if(NOT ANDROID)
+ install(CODE "
+ execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
+ \"lib${SONAME}${SOEXT}\" \"libSDL2_image${SOEXT}\"
+ WORKING_DIRECTORY \"${PROJECT_BINARY_DIR}\")")
+ install(FILES ${PROJECT_BINARY_DIR}/libSDL2_image${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ endif()
endif()
endif()
endif()
@@ -709,7 +712,7 @@ if (BUILD_SAMPLES)
target_link_libraries(${prog} PRIVATE mingw32)
target_link_options(${prog} PRIVATE -mwindows)
endif()
- target_link_libraries(${prog} PRIVATE SDL2::image)
+ target_link_libraries(${prog} PRIVATE SDL2_image::SDL2_image)
if (TARGET SDL2::SDL2main)
target_link_libraries(${prog} PRIVATE SDL2::SDL2main)
endif()