From 90bafc5739e02152ac16ad3ced378d0c8afdaa88 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sat, 7 Dec 2024 01:39:58 +0100
Subject: [PATCH] cmake: install licenses of vendored libraries
---
CMakeLists.txt | 19 +++++++++++++++++++
build-scripts/release-info.json | 6 ++++--
external/jpeg | 2 +-
3 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 22407010..45b2f681 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -331,6 +331,12 @@ if(SDLIMAGE_BUILD_SHARED_LIBS)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
+set(install_license_names)
+macro(register_license NAME FILE)
+ list(APPEND install_license_names ${NAME})
+ set(install_license_${NAME} "${FILE}")
+endmacro()
+
set(INSTALL_EXTRA_TARGETS)
set(INSTALL_EXTRA_CMAKE_MODULES)
set(PC_LIBS)
@@ -380,6 +386,7 @@ if(SDLIMAGE_ZLIB)
set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "zlib examples" FORCE)
sdl_check_project_in_subfolder(external/zlib zlib SDLIMAGE_VENDORED)
add_subdirectory(external/zlib EXCLUDE_FROM_ALL)
+ register_license(zlib external/zlib/LICENSE)
# PNG_BUILD_ZLIB variable is used by vendored libpng
set(PNG_BUILD_ZLIB ON CACHE BOOL "libpng option to tell it should use 'our' vendored ZLIB library" FORCE)
# ZLIB_INCLUDE_DIR variable is used by vendored libpng
@@ -413,6 +420,7 @@ if(SDLIMAGE_DAV1D)
message(STATUS "${PROJECT_NAME}: Using vendored dav1d")
set(BUILD_SHARED_LIBS ${SDLIMAGE_DAV1D_SHARED})
add_subdirectory(external/dav1d EXCLUDE_FROM_ALL)
+ register_license(dav1d external/dav1d/COPYING)
if(DAV1D_ASM AND (SDL_CPU_X64 OR SDL_CPU_X86))
enable_language(ASM_NASM)
endif()
@@ -451,6 +459,7 @@ if(SDLIMAGE_AOM)
set(AOM_TARGET_CPU "aarch64")
endif()
add_subdirectory(external/aom EXCLUDE_FROM_ALL)
+ register_license(aom external/aom/LICENSE)
set(AOM_LIBRARY aom)
if(SDLIMAGE_AOM_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS aom)
@@ -479,6 +488,7 @@ if(SDLIMAGE_AVIF)
set(BUILD_SHARED_LIBS ${SDLIMAGE_AVIF_SHARED})
set(AOM_LIBRARIES "aom" CACHE STRING "aom libraries" FORCE)
add_subdirectory(external/libavif EXCLUDE_FROM_ALL)
+ register_license(avif external/libavif/LICENSE)
if(SDLIMAGE_AVIF_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS avif)
endif()
@@ -555,6 +565,7 @@ if(SDLIMAGE_JPG)
sdl_check_project_in_subfolder(external/jpeg libjpeg SDLIMAGE_VENDORED)
set(BUILD_SHARED_LIBS ${SDLIMAGE_JPG_SHARED})
add_subdirectory(external/jpeg EXCLUDE_FROM_ALL)
+ register_license(jpeg external/jpeg/COPYING)
if(SDLIMAGE_JPG_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS jpeg)
endif()
@@ -625,6 +636,7 @@ if(SDLIMAGE_JXL)
sdl_check_project_in_subfolder(external/libjxl libjxl SDLIMAGE_VENDORED)
set(BUILD_SHARED_LIBS ${SDLIMAGE_JXL_SHARED})
add_subdirectory(external/libjxl EXCLUDE_FROM_ALL)
+ register_license(jxl external/libjxl/LICENSE)
if(SDLIMAGE_JXL_SHARED)
set(jxl_lib jxl)
set(jxl_install_libs brotlidec brotlicommon brotlienc jxl)
@@ -704,6 +716,7 @@ if(SDLIMAGE_PNG)
set(SKIP_INSTALL_EXPORT TRUE)
sdl_check_project_in_subfolder(external/libpng libpng SDLIMAGE_VENDORED)
add_subdirectory(external/libpng EXCLUDE_FROM_ALL)
+ register_license(zlib external/libpng/LICENSE)
if(SDLIMAGE_PNG_SHARED)
set(PNG_LIBRARY png_shared)
else()
@@ -825,6 +838,7 @@ if(SDLIMAGE_TIF)
sdl_check_project_in_subfolder(external/libtiff libtiff SDLIMAGE_VENDORED)
set(BUILD_SHARED_LIBS ${SDLIMAGE_TIF_SHARED})
add_subdirectory(external/libtiff EXCLUDE_FROM_ALL)
+ register_license(tiff external/libtiff/LICENSE.md)
add_library(TIFF::TIFF ALIAS tiff)
set(SDL2IMAGE_TIF_TARGET "TIFF::tiff")
if(SDLIMAGE_TIF_SHARED OR NOT SDLIMAGE_BUILD_SHARED_LIBS)
@@ -885,6 +899,7 @@ if(SDLIMAGE_WEBP)
sdl_check_project_in_subfolder(external/libwebp libwebp SDLIMAGE_VENDORED)
set(BUILD_SHARED_LIBS ${SDLIMAGE_WEBP_SHARED})
add_subdirectory(external/libwebp EXCLUDE_FROM_ALL)
+ register_license(webp external/libwebp/COPYING)
target_include_directories(${sdl3_image_target_name} PRIVATE external/libwebp/src)
add_library(WebP::webp ALIAS webp)
add_library(WebP::webpdemux ALIAS webpdemux)
@@ -1055,6 +1070,10 @@ if(SDLIMAGE_INSTALL)
COMPONENT library
)
+ foreach(license_name IN LISTS install_license_names)
+ install(FILES "${install_license_${license_name}}" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}/optional" RENAME "LICENSE.${license_name}.txt")
+ endforeach()
+
if(SDLIMAGE_INSTALL_CPACK)
if(MSVC)
set(CPACK_GENERATOR "ZIP")
diff --git a/build-scripts/release-info.json b/build-scripts/release-info.json
index 7764afe3..c8c56d2c 100644
--- a/build-scripts/release-info.json
+++ b/build-scripts/release-info.json
@@ -160,7 +160,8 @@
"bin/aom.dll",
"bin/tiff.dll",
"bin/libwebp.dll",
- "bin/libwebpdemux.dll"
+ "bin/libwebpdemux.dll",
+ "share/licenses/SDL3_image/optional/*.txt"
]
},
"files-devel": {
@@ -175,7 +176,8 @@
"bin/aom.dll",
"bin/tiff.dll",
"bin/libwebp.dll",
- "bin/libwebpdemux.dll"
+ "bin/libwebpdemux.dll",
+ "share/licenses/SDL3_image/optional/*.txt"
]
}
},
diff --git a/external/jpeg b/external/jpeg
index ebe60fcf..a2b96a05 160000
--- a/external/jpeg
+++ b/external/jpeg
@@ -1 +1 @@
-Subproject commit ebe60fcf1d822a0f243fcb1c3526e11016143fc5
+Subproject commit a2b96a055f06083bbfe06a75a87f91385bae9606