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()