From 9ad5eb2c35b72e6a69e381e94471ddbfb2ad8a6c Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 17 Jul 2022 22:49:44 +0200
Subject: [PATCH] cmake: add support for vendored libxmp
---
CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++----------------
external/libxmp | 2 +-
2 files changed, 35 insertions(+), 17 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dfba021d..d73c2cea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,7 +82,7 @@ cmake_dependent_option(SDL2MIXER_MOD_MODPLUG "Support loading MOD music via modp
cmake_dependent_option(SDL2MIXER_MOD_MODPLUG_SHARED "Dynamically load modplug" "${SDL2MIXER_DEPS_SHARED}" SDL2MIXER_MOD_MODPLUG OFF)
cmake_dependent_option(SDL2MIXER_MOD_XMP "Support loading MOD music via libxmp" ON SDL2MIXER_MOD OFF)
-cmake_dependent_option(SDL2MIXER_MOD_XMP_LITE "Use libxmp-lite instead of libxmp" OFF SDL2MIXER_MOD_XMP OFF)
+cmake_dependent_option(SDL2MIXER_MOD_XMP_LITE "Use libxmp-lite instead of libxmp" OFF "SDL2MIXER_MOD_XMP;NOT SDL2MIXER_VENDORED" OFF)
cmake_dependent_option(SDL2MIXER_MOD_XMP_SHARED "Dynamically load libxmp(-lite)" "${SDL2MIXER_DEPS_SHARED}" SDL2MIXER_MOD_XMP OFF)
if(SDL2MIXER_MOD AND NOT (SDL2MIXER_MOD_MODPLUG OR SDL2MIXER_MOD_XMP))
@@ -583,24 +583,42 @@ endif()
if(SDL2MIXER_MOD_XMP)
target_compile_definitions(SDL2_mixer PRIVATE MUSIC_MOD_XMP)
if(SDL2MIXER_VENDORED)
- message(STATUS "Using vendored libxmp/libxmp-lite")
- message(WARNING "Neither libxmp or libxmp-lite are vendored. Using system libxmp instead.")
- endif()
- if(SDL2MIXER_MOD_XMP_LITE)
- message(STATUS "Using system libxmp-lite")
- find_package(libxmp-lite REQUIRED)
- set(tgt_xmp libxmp-lite::libxmp-lite)
- set(xmp_name libxmp-lite)
- if(NOT SDL2MIXER_MOD_XMP_SHARED)
- list(APPEND PC_REQUIRES libxmplite)
+ message(STATUS "Using vendored libxmp")
+ sdl_check_project_in_subfolder(external/libxmp libxmp SDL2MIXER_VENDORED)
+ if(SDL2MIXER_MOD_XMP_SHARED)
+ set(BUILD_STATIC OFF)
+ set(BUILD_SHARED ON)
+ set(tgt_xmp xmp_shared)
+ else()
+ set(BUILD_STATIC ON)
+ set(BUILD_SHARED OFF)
+ set(tgt_xmp xmp_static)
endif()
- else()
- message(STATUS "Using system libxmp")
- find_package(libxmp REQUIRED)
- set(tgt_xmp libxmp::libxmp)
set(xmp_name libxmp)
+ add_subdirectory(external/libxmp EXCLUDE_FROM_ALL)
+ if(SDL2MIXER_MOD_XMP_SHARED OR NOT SDL2MIXER_BUILD_SHARED_LIBS)
+ list(APPEND INSTALL_EXTRA_TARGETS ${tgt_xmp})
+ endif()
if(NOT SDL2MIXER_MOD_XMP_SHARED)
- list(APPEND PC_REQUIRES libxmp)
+ list(APPEND PC_LIBS -l$<TARGET_FILE_BASE_NAME:${tgt_xmp}>)
+ endif()
+ else()
+ if(SDL2MIXER_MOD_XMP_LITE)
+ message(STATUS "Using system libxmp-lite")
+ find_package(libxmp-lite REQUIRED)
+ set(tgt_xmp libxmp-lite::libxmp-lite)
+ set(xmp_name libxmp-lite)
+ if(NOT SDL2MIXER_MOD_XMP_SHARED)
+ list(APPEND PC_REQUIRES libxmplite)
+ endif()
+ else()
+ message(STATUS "Using system libxmp")
+ find_package(libxmp REQUIRED)
+ set(tgt_xmp libxmp::libxmp)
+ set(xmp_name libxmp)
+ if(NOT SDL2MIXER_MOD_XMP_SHARED)
+ list(APPEND PC_REQUIRES libxmp)
+ endif()
endif()
endif()
if(SDL2MIXER_MOD_XMP_SHARED)
diff --git a/external/libxmp b/external/libxmp
index 1d71f847..0e40b134 160000
--- a/external/libxmp
+++ b/external/libxmp
@@ -1 +1 @@
-Subproject commit 1d71f84719ab970606c46ea824b7d5a7a014feaf
+Subproject commit 0e40b1349bf60011eff6d78fe128e5a95d93408d