SDL_mixer: cmake: correctly set SDLMIXER_MOD_XMP_LITE in SDL3_mixerConfig.cmake (e68bf)

From e68bfcf886fe056598bb7be483537ee38cdd5377 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 5 May 2026 15:32:10 +0200
Subject: [PATCH] cmake: correctly set SDLMIXER_MOD_XMP_LITE in
 SDL3_mixerConfig.cmake

(cherry picked from commit 3075d3eda55ce295c6919d330edb2554ff4edb5b)
---
 CMakeLists.txt                  | 13 ++++++++++++-
 cmake/SDL3_mixerConfig.cmake.in | 18 +++++++++++-------
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 66dbdc0e..cd83e270 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -724,6 +724,8 @@ if(SDLMIXER_GME)
     endif()
 endif()
 
+set(tgt_libxmp libxmp::xmp_shared)
+set(tgt_libxmplite libxmp-lite::xmp_lite_shared)
 list(APPEND SDLMIXER_BACKENDS MOD_XMP)
 set(SDLMIXER_MOD_XMP_ENABLED FALSE)
 if(SDLMIXER_MOD_XMP)
@@ -756,8 +758,16 @@ if(SDLMIXER_MOD_XMP)
             find_package(libxmp-lite ${required})
             if(libxmp-lite_FOUND)
                 set(SDLMIXER_MOD_XMP_ENABLED TRUE)
+                set(SDLMIXER_MOD_XMP_LITE_ENABLED TRUE)
                 message(STATUS "Using system libxmp-lite")
-                set(tgt_xmp libxmp-lite::libxmp-lite)
+                if(TARGET libxmp-lite::xmp_lite_shared)
+                  set(tgt_xmp libxmp-lite::xmp_lite_shared)
+                elseif(TARGET libxmp-lite::xmp_lite_static)
+                  set(tgt_xmp libxmp-lite::xmp_lite_static)
+                else()
+                  set(tgt_xmp libxmp-lite::libxmp-lite)
+                endif()
+                set(tgt_libxmplite ${tgt_xmp})
                 set(xmp_name libxmp-lite)
                 if(NOT SDLMIXER_MOD_XMP_SHARED)
                     list(APPEND PC_REQUIRES libxmp-lite)
@@ -780,6 +790,7 @@ if(SDLMIXER_MOD_XMP)
                 else()
                   set(tgt_xmp libxmp::libxmp)
                 endif()
+                set(tgt_libxmp ${tgt_xmp})
                 set(xmp_name libxmp)
                 if(NOT SDLMIXER_MOD_XMP_SHARED)
                     list(APPEND PC_REQUIRES libxmp)
diff --git a/cmake/SDL3_mixerConfig.cmake.in b/cmake/SDL3_mixerConfig.cmake.in
index acea4bdc..f1f44bac 100644
--- a/cmake/SDL3_mixerConfig.cmake.in
+++ b/cmake/SDL3_mixerConfig.cmake.in
@@ -20,7 +20,7 @@ set(SDLMIXER_GME                   @SDLMIXER_GME_ENABLED@)
 
 set(SDLMIXER_MOD                   @SDLMIXER_MOD_ENABLED@)
 set(SDLMIXER_MOD_XMP               @SDLMIXER_MOD_XMP_ENABLED@)
-set(SDLMIXER_MOD_XMP_LITE          @SDLMIXER_MOD_XMP_ENABLED@)
+set(SDLMIXER_MOD_XMP_LITE          @SDLMIXER_MOD_XMP_LITE_ENABLED@)
 
 set(SDLMIXER_MP3                   @SDLMIXER_MP3_ENABLED@)
 set(SDLMIXER_MP3_DRMP3             @SDLMIXER_MP3_DRMP3_ENABLED@)
@@ -81,12 +81,16 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL3_mixer-static-targets.cmake")
             endif()
         endif()
 
-        if(SDLMIXER_MOD_XMP AND NOT TARGET libxmp::libxmp)
-            find_dependency(libxmp)
-        endif()
-
-        if(SDLMIXER_MOD_XMP_LITE AND NOT TARGET libxmp-lite::libxmp-lite)
-            find_dependency(libxmp-lite)
+        if(SDLMIXER_MOD_XMP)
+            if(SDLMIXER_MOD_XMP_LITE)
+                if(NOT TARGET @tgt_libxmplite@)
+                    find_dependency(libxmp-lite)
+                endif()
+            else()
+                if(NOT TARGET @tgt_libxmp@)
+                    find_dependency(libxmp)
+                endif()
+            endif()
         endif()
 
         if(SDLMIXER_MP3_MPG123 AND NOT TARGET MPG123::mpg123)