SDL_mixer: CMake: Prioritise config mode with vcpkg/conan.

From 203b668534b31aab0f2f7652577d956f0c47f5f8 Mon Sep 17 00:00:00 2001
From: Pierre Wendling <[EMAIL REDACTED]>
Date: Tue, 7 Mar 2023 18:45:41 -0500
Subject: [PATCH] CMake: Prioritise config mode with vcpkg/conan.

When vcpkg or conan is detected, prioritise CONFIG mode over Find
modules, and disable vendored libraries.
---
 CMakeLists.txt                  | 9 +++++++--
 cmake/SDL3_mixerConfig.cmake.in | 4 ++++
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0a325abf..df27aacf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -47,13 +47,18 @@ endif()
 
 # Assume MSVC projects don't have a package manager and need vendored dependencies (by default).
 # Most other platforms have some kind of package manager.
-# FIXME: consider a package manager such as conan/vcpkg instead of vendoring
-if(ANDROID OR MSVC)
+if(ANDROID OR MSVC AND NOT VCPKG_TOOLCHAIN AND NOT CONAN_CMD)
     set(vendored_default ON)
 else()
     set(vendored_default OFF)
 endif()
 
+# Both vcpkg and conan provide the upstream CMake config for the
+# dependencies, so prioritise them over the Find modules
+if(VCPKG_TOOLCHAIN OR CONAN_CMD)
+    set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
+endif()
+
 set(sdl3mixer_install_enableable ON)
 if ((TARGET SDL3 OR TARGET SDL3-static) AND SDL3_DISABLE_INSTALL)
     # Cannot install SDL3_mixer when SDL3 is built in same built, and is not installed.
diff --git a/cmake/SDL3_mixerConfig.cmake.in b/cmake/SDL3_mixerConfig.cmake.in
index 436dccb6..d44fa4e6 100644
--- a/cmake/SDL3_mixerConfig.cmake.in
+++ b/cmake/SDL3_mixerConfig.cmake.in
@@ -62,6 +62,10 @@ if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/SDL3_mixer-static-targets.cmake")
     include(CMakeFindDependencyMacro)
     include(PkgConfigHelper)
 
+    if(VCPKG_TOOLCHAIN OR CONAN_CMD)
+        set(CMAKE_FIND_PACKAGE_PREFER_CONFIG ON)
+    endif()
+
     if(SDL3MIXER_SNDFILE AND NOT SDL3MIXER_VENDORED AND NOT TARGET SndFile::sndfile)
         find_dependency(SndFile)
     endif()