SDL_mixer: cmake: configure external subprojects in different directory

From e4faf5ea9ea00f5ebb268ae32493a2a15b7f94a7 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Wed, 2 Apr 2025 18:39:17 +0200
Subject: [PATCH] cmake: configure external subprojects in different directory

(This avoid in-tree builds of external projects when doing in-tree SDL builds)
---
 CMakeLists.txt | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37672dc3..1d82eda8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -405,7 +405,7 @@ if(SDLMIXER_OGG)
         set(INSTALL_CMAKE_PACKAGE_MODULE FALSE)
         set(BUILD_TESTING OFF)
         sdl_check_project_in_subfolder(external/ogg ogg SDLMIXER_VENDORED)
-        add_subdirectory(external/ogg EXCLUDE_FROM_ALL)
+        add_subdirectory(external/ogg external/ogg-build EXCLUDE_FROM_ALL)
         if(SDLMIXER_OGG_install)
             list(APPEND INSTALL_EXTRA_TARGETS ogg)
         endif()
@@ -425,7 +425,7 @@ if(SDLMIXER_OPUS)
         set(BUILD_SHARED_LIBS ${SDLMIXER_OPUS_SHARED})
         set(BUILD_PROGRAMS OFF)
         sdl_check_project_in_subfolder(external/opus opus SDLMIXER_VENDORED)
-        add_subdirectory(external/opus EXCLUDE_FROM_ALL)
+        add_subdirectory(external/opus external/opus-build EXCLUDE_FROM_ALL)
 
         set(OP_DISABLE_DOCS TRUE)
         set(OP_DISABLE_EXAMPLES TRUE)
@@ -433,7 +433,7 @@ if(SDLMIXER_OPUS)
         message(STATUS "Using vendored opusfile")
         set(BUILD_SHARED_LIBS ${SDLMIXER_OPUS_SHARED})
         sdl_check_project_in_subfolder(external/opusfile opusfile SDLMIXER_VENDORED)
-        add_subdirectory(external/opusfile EXCLUDE_FROM_ALL)
+        add_subdirectory(external/opusfile external/opusfile-build EXCLUDE_FROM_ALL)
         if(MSVC)
             set_property(TARGET opusfile PROPERTY WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
         endif()
@@ -507,7 +507,7 @@ if(SDLMIXER_VORBIS_TREMOR)
         message(STATUS "Using vendored tremor")
         set(BUILD_SHARED_LIBS ${SDLMIXER_VORBIS_TREMOR_SHARED})
         sdl_check_project_in_subfolder(external/tremor tremor SDLMIXER_VENDORED)
-        add_subdirectory(external/tremor EXCLUDE_FROM_ALL)
+        add_subdirectory(external/tremor external/tremor-build EXCLUDE_FROM_ALL)
         if(NOT TARGET tremor::tremor)
             add_library(tremor::tremor ALIAS vorbisidec)
         endif()
@@ -568,7 +568,7 @@ if(SDLMIXER_VORBIS_VORBISFILE)
         message(STATUS "Using vendored vorbis + vorbisfile")
         set(BUILD_SHARED_LIBS ${SDLMIXER_VORBIS_VORBISFILE_SHARED})
         sdl_check_project_in_subfolder(external/vorbis vorbisfile SDLMIXER_VENDORED)
-        add_subdirectory(external/vorbis EXCLUDE_FROM_ALL)
+        add_subdirectory(external/vorbis external/vorbis-build EXCLUDE_FROM_ALL)
         if(NOT TARGET Vorbis::vorbisfile)
             add_library(Vorbis::vorbisfile ALIAS vorbisfile)
         endif()
@@ -634,7 +634,7 @@ if(SDLMIXER_FLAC_LIBFLAC)
         set(INSTALL_MANPAGES OFF)
         message(STATUS "Using vendored libflac")
         sdl_check_project_in_subfolder(external/flac libflac SDLMIXER_VENDORED)
-        add_subdirectory(external/flac EXCLUDE_FROM_ALL)
+        add_subdirectory(external/flac external/flac-build EXCLUDE_FROM_ALL)
         if(SDLMIXER_FLAC_LIBFLAC_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
             list(APPEND INSTALL_EXTRA_TARGETS FLAC)
         endif()
@@ -706,7 +706,7 @@ if(SDLMIXER_GME)
         message(STATUS "Using vendored libgme")
         sdl_check_project_in_subfolder(external/libgme libgme SDLMIXER_VENDORED)
         enable_language(CXX)
-        add_subdirectory(external/libgme EXCLUDE_FROM_ALL)
+        add_subdirectory(external/libgme external/libgme-build EXCLUDE_FROM_ALL)
         if(SDLMIXER_GME_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
             list(APPEND INSTALL_EXTRA_TARGETS ${tgt_gme})
         endif()
@@ -764,7 +764,7 @@ if(SDLMIXER_MOD_XMP)
             set(tgt_xmp xmp_static)
         endif()
         set(xmp_name libxmp)
-        add_subdirectory(external/libxmp EXCLUDE_FROM_ALL)
+        add_subdirectory(external/libxmp external/libxmp-build EXCLUDE_FROM_ALL)
         if(SDLMIXER_MOD_XMP_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
             list(APPEND INSTALL_EXTRA_TARGETS ${tgt_xmp})
         endif()
@@ -848,7 +848,7 @@ if(SDLMIXER_MP3_MPG123)
         set(BUILD_LIBOUT123 FALSE)
         set(BUILD_PROGRAMS OFF)
         set(BUILD_SHARED_LIBS "${SDLMIXER_MP3_MPG123_SHARED}")
-        add_subdirectory(external/mpg123/ports/cmake EXCLUDE_FROM_ALL)
+        add_subdirectory(external/mpg123/ports/cmake external/libmpg123-build/ports/cmake EXCLUDE_FROM_ALL)
         if(NOT TARGET MPG123::libmpg123)
             add_library(MPG123::libmpg123 ALIAS libmpg123)
         endif()
@@ -1009,7 +1009,7 @@ if(SDLMIXER_WAVPACK)
         set(WAVPACK_BUILD_WINAMP_PLUGIN OFF)
         set(WAVPACK_BUILD_DOCS OFF)
         set(BUILD_SHARED_LIBS "${SDLMIXER_WAVPACK_SHARED}")
-        add_subdirectory(external/wavpack EXCLUDE_FROM_ALL)
+        add_subdirectory(external/wavpack external/wavpack-build EXCLUDE_FROM_ALL)
         if(SDLMIXER_WAVPACK_SHARED OR NOT SDLMIXER_BUILD_SHARED_LIBS)
             list(APPEND INSTALL_EXTRA_TARGETS wavpack)
         endif()