From 5049d8189e0ca6f304c24154a2620b4e5536bda6 Mon Sep 17 00:00:00 2001 From: crueter Date: Mon, 11 Aug 2025 14:24:39 -0400 Subject: [PATCH] [cmake] fix bundled externals Signed-off-by: crueter --- CMakeLists.txt | 4 ++-- CMakeModules/CPMUtil.cmake | 15 +++++++++++++-- CMakeModules/DownloadExternals.cmake | 7 ++++--- externals/CMakeLists.txt | 2 +- externals/ffmpeg/CMakeLists.txt | 4 ++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b47596333b..f654ac7d46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -477,7 +477,7 @@ if (ENABLE_SDL2) endif() if (DEFINED SDL2_VER) - download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX) + download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX 2.32.8) endif() set(SDL2_FOUND YES) @@ -608,7 +608,7 @@ endif() if (WIN32 AND YUZU_CRASH_DUMPS) set(BREAKPAD_VER "breakpad-c89f9dd") - download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX) + download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd") set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include") set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib") diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake index 203a3164d1..bd1a15b0cc 100644 --- a/CMakeModules/CPMUtil.cmake +++ b/CMakeModules/CPMUtil.cmake @@ -94,9 +94,20 @@ function(AddPackage) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${PKG_GIT_URL}) if (${PKG_ARGS_NAME}_ADDED) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${PKG_ARGS_SHA}) + if (DEFINED PKG_ARGS_SHA) + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${PKG_ARGS_SHA}) + elseif(DEFINED PKG_ARGS_VERSION) + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${PKG_ARGS_VERSION}) + else() + message(WARNING "CPMUtil: Package ${PKG_ARGS_NAME} has no specified sha or version") + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown") + endif() else() - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)") + if (DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION) + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)") + else() + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown (system)") + endif() endif() # pass stuff to parent scope diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake index 5f98a03204..62cf2689ab 100644 --- a/CMakeModules/DownloadExternals.cmake +++ b/CMakeModules/DownloadExternals.cmake @@ -6,7 +6,7 @@ # remote_path: path to the file to download, relative to the remote repository root # prefix_var: name of a variable which will be set with the path to the extracted contents set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR}) -function(download_bundled_external remote_path lib_name cpm_key prefix_var) +function(download_bundled_external remote_path lib_name cpm_key prefix_var version) set(package_base_url "https://github.com/eden-emulator/") set(package_repo "no_platform") set(package_extension "no_platform") @@ -31,6 +31,7 @@ function(download_bundled_external remote_path lib_name cpm_key prefix_var) AddPackage( NAME ${cpm_key} + VERSION ${version} URL ${full_url} DOWNLOAD_ONLY YES KEY ${CACHE_KEY} @@ -45,11 +46,11 @@ function(download_win_archives) set(FORCE_WIN_ARCHIVES ON) set(FFmpeg_EXT_NAME "ffmpeg-7.1.1") - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "") + download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "" 7.1.1) # TODO(crueter): separate handling for arm64 set(SDL2_VER "SDL2-2.32.8") - download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "") + download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "" 2.32.8) set(FORCE_WIN_ARCHIVES OFF) endfunction() diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 0b33392ea1..e9f763d3f3 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -342,7 +342,7 @@ AddPackage( SHA 1076b348ab HASH a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772 FIND_PACKAGE_ARGUMENTS "CONFIG" - SYSTEM_PACKAGE ON + # SYSTEM_PACKAGE ON ) set(VulkanMemoryAllocator_SOURCE_DIR "${VulkanMemoryAllocator_SOURCE_DIR}" PARENT_SCOPE) diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 28c7aa0624..02ce6c1f7c 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -240,7 +240,7 @@ elseif(ANDROID) message(FATAL_ERROR "Unsupported architecture for Android FFmpeg") endif() - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH) + download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1) set(FFmpeg_FOUND YES) set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/lib" CACHE PATH "Path to FFmpeg library directory" FORCE) @@ -265,7 +265,7 @@ elseif(WIN32) # Use yuzu FFmpeg binaries set(FFmpeg_EXT_NAME "ffmpeg-7.1.1") - download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH) + download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1) set(FFmpeg_FOUND YES) set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE) set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE)