From 43894cd8f9fd1ac7ffac74c64a535a0c73b3e884 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Wed, 21 Jan 2026 19:40:19 +0100
Subject: [PATCH] cmake: install licenses in vendored build
---
CMakeLists.txt | 20 ++++++++++++++++++++
build-scripts/release-info.json | 24 ++++++++++++------------
2 files changed, 32 insertions(+), 12 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 698c9e5d..136ef4a4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -199,6 +199,12 @@ if(NOT TARGET SDL3::Headers OR NOT TARGET ${sdl3_target_name})
find_package(SDL3 ${SDL_REQUIRED_VERSION} REQUIRED COMPONENTS ${sdl_required_components})
endif()
+set(install_license_names)
+macro(register_license NAME FILE)
+ list(APPEND install_license_names ${NAME})
+ set(install_license_${NAME} "${FILE}")
+endmacro()
+
SDL_DetectTargetCPUArchitectures(SDL_CPU_NAMES)
SDL_DetectCMakePlatform()
@@ -333,6 +339,7 @@ if(SDLMIXER_OGG)
set(BUILD_TESTING OFF)
sdl_check_project_in_subfolder(external/ogg ogg SDLMIXER_VENDORED)
add_subdirectory(external/ogg external/ogg-build EXCLUDE_FROM_ALL)
+ register_license(ogg-vorbis external/ogg/COPYING)
if(SDLMIXER_OGG_install)
list(APPEND INSTALL_EXTRA_TARGETS ogg)
endif()
@@ -353,6 +360,7 @@ if(SDLMIXER_OPUS)
set(BUILD_PROGRAMS OFF)
sdl_check_project_in_subfolder(external/opus opus SDLMIXER_VENDORED)
add_subdirectory(external/opus external/opus-build EXCLUDE_FROM_ALL)
+ register_license(opus external/opus/COPYING)
set(OP_DISABLE_DOCS TRUE)
set(OP_DISABLE_EXAMPLES TRUE)
@@ -361,6 +369,7 @@ if(SDLMIXER_OPUS)
set(BUILD_SHARED_LIBS ${SDLMIXER_OPUS_SHARED})
sdl_check_project_in_subfolder(external/opusfile opusfile SDLMIXER_VENDORED)
add_subdirectory(external/opusfile external/opusfile-build EXCLUDE_FROM_ALL)
+ register_license(opusfile external/opusfile/COPYING)
if(MSVC)
set_property(TARGET opusfile PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
endif()
@@ -433,6 +442,7 @@ if(SDLMIXER_VORBIS_TREMOR)
set(BUILD_SHARED_LIBS ${SDLMIXER_VORBIS_TREMOR_SHARED})
sdl_check_project_in_subfolder(external/tremor tremor SDLMIXER_VENDORED)
add_subdirectory(external/tremor external/tremor-build EXCLUDE_FROM_ALL)
+ register_license(tremor external/tremor/COPYING)
if(NOT TARGET tremor::tremor)
add_library(tremor::tremor ALIAS vorbisidec)
endif()
@@ -494,6 +504,7 @@ if(SDLMIXER_VORBIS_VORBISFILE)
set(BUILD_SHARED_LIBS ${SDLMIXER_VORBIS_VORBISFILE_SHARED})
sdl_check_project_in_subfolder(external/vorbis vorbisfile SDLMIXER_VENDORED)
add_subdirectory(external/vorbis external/vorbis-build EXCLUDE_FROM_ALL)
+ register_license(vorbis external/vorbis/COPYING)
if(NOT TARGET Vorbis::vorbisfile)
add_library(Vorbis::vorbisfile ALIAS vorbisfile)
endif()
@@ -560,6 +571,7 @@ if(SDLMIXER_FLAC_LIBFLAC)
message(STATUS "Using vendored libflac")
sdl_check_project_in_subfolder(external/flac libflac SDLMIXER_VENDORED)
add_subdirectory(external/flac external/flac-build EXCLUDE_FROM_ALL)
+ register_license(flac external/flac/COPYING.Xiph)
if(SDLMIXER_FLAC_LIBFLAC_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS FLAC)
endif()
@@ -638,6 +650,7 @@ if(SDLMIXER_GME)
sdl_check_project_in_subfolder(external/libgme libgme SDLMIXER_VENDORED)
enable_language(CXX)
add_subdirectory(external/libgme external/libgme-build EXCLUDE_FROM_ALL)
+ register_license(gme external/libgme/license.txt)
if(SDLMIXER_GME_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS ${targets_gme})
endif()
@@ -696,6 +709,7 @@ if(SDLMIXER_MOD_XMP)
endif()
set(xmp_name libxmp)
add_subdirectory(external/libxmp external/libxmp-build EXCLUDE_FROM_ALL)
+ register_license(xmp external/libxmp/docs/COPYING)
if(SDLMIXER_MOD_XMP_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS ${tgt_xmp})
endif()
@@ -780,6 +794,7 @@ if(SDLMIXER_MP3_MPG123)
set(BUILD_PROGRAMS OFF)
set(BUILD_SHARED_LIBS "${SDLMIXER_MP3_MPG123_SHARED}")
add_subdirectory(external/mpg123/ports/cmake external/libmpg123-build/ports/cmake EXCLUDE_FROM_ALL)
+ register_license(mpg123 external/mpg123/README)
if(NOT TARGET MPG123::libmpg123)
add_library(MPG123::libmpg123 ALIAS libmpg123)
endif()
@@ -929,6 +944,7 @@ if(SDLMIXER_WAVPACK)
set(WAVPACK_BUILD_DOCS OFF)
set(BUILD_SHARED_LIBS "${SDLMIXER_WAVPACK_SHARED}")
add_subdirectory(external/wavpack external/wavpack-build EXCLUDE_FROM_ALL)
+ register_license(wavpack external/wavpack/COPYING)
if(SDLMIXER_WAVPACK_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
list(APPEND INSTALL_EXTRA_TARGETS wavpack)
endif()
@@ -1099,6 +1115,10 @@ if(SDLMIXER_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(SDLMIXER_INSTALL_CPACK)
if(MSVC)
set(CPACK_GENERATOR "ZIP")
diff --git a/build-scripts/release-info.json b/build-scripts/release-info.json
index c8528415..1aaf57b9 100644
--- a/build-scripts/release-info.json
+++ b/build-scripts/release-info.json
@@ -168,12 +168,12 @@
"bin/opus-0.dll",
"bin/opusfile-0.dll",
"bin/libwavpack-1.dll",
- "VisualC/external/optional/x86/LICENSE.gme.txt",
- "VisualC/external/optional/x86/LICENSE.ogg-vorbis.txt",
- "VisualC/external/optional/x86/LICENSE.opus.txt",
- "VisualC/external/optional/x86/LICENSE.opusfile.txt",
- "VisualC/external/optional/x86/LICENSE.wavpack.txt",
- "VisualC/external/optional/x86/LICENSE.xmp.txt"
+ "share/licenses/SDL3_mixer/optional/LICENSE.gme.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.ogg-vorbis.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.opus.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.opusfile.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.wavpack.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.xmp.txt"
]
},
"files-devel": {
@@ -189,12 +189,12 @@
"bin/opus-0.dll",
"bin/opusfile-0.dll",
"bin/libwavpack-1.dll",
- "VisualC/external/optional/x86/LICENSE.gme.txt",
- "VisualC/external/optional/x86/LICENSE.ogg-vorbis.txt",
- "VisualC/external/optional/x86/LICENSE.opus.txt",
- "VisualC/external/optional/x86/LICENSE.opusfile.txt",
- "VisualC/external/optional/x86/LICENSE.wavpack.txt",
- "VisualC/external/optional/x86/LICENSE.xmp.txt"
+ "share/licenses/SDL3_mixer/optional/LICENSE.gme.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.ogg-vorbis.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.opus.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.opusfile.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.wavpack.txt",
+ "share/licenses/SDL3_mixer/optional/LICENSE.xmp.txt"
]
}
},