aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2025-11-04 07:05:52 +0100
committercrueter <crueter@eden-emu.dev>2025-11-04 07:05:52 +0100
commit82a476d4580263c52825cef203a9badb24d9218d (patch)
tree16660e248c900a19898d138624470618a73e23b4
parentac2287f261cf0f8920ed9bf0657ae3404cd4e39f (diff)
[cmake] ffmpeg: use static on MSVC (#2946)
Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2946
-rw-r--r--CMakeModules/CPMUtil.cmake13
-rw-r--r--CMakeModules/CopyYuzuFFmpegDeps.cmake10
-rw-r--r--CMakeModules/CopyYuzuSDLDeps.cmake8
-rw-r--r--cpmfile.json4
-rw-r--r--docs/CPMUtil/AddCIPackage.md2
-rw-r--r--externals/cpmfile.json6
-rw-r--r--externals/ffmpeg/CMakeLists.txt3
-rw-r--r--externals/ffmpeg/cpmfile.json1
-rw-r--r--src/yuzu/CMakeLists.txt7
-rw-r--r--src/yuzu_cmd/CMakeLists.txt5
-rwxr-xr-xtools/cpm/check-updates.sh89
-rwxr-xr-xtools/cpm/download.sh2
12 files changed, 75 insertions, 75 deletions
diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake
index 1e954b2dc0..1c4a4874c6 100644
--- a/CMakeModules/CPMUtil.cmake
+++ b/CMakeModules/CPMUtil.cmake
@@ -586,15 +586,22 @@ function(AddCIPackage)
set(ARTIFACT_REPO ${PKG_ARGS_REPO})
set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE})
- # TODO: separate MinGW packages if applicable
- if ((WIN32 AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
+ if ((MSVC AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS)
add_ci_package(windows-amd64)
endif()
- if ((WIN32 AND ARCHITECTURE_arm64) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
+ if ((MSVC AND ARCHITECTURE_arm64) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS)
add_ci_package(windows-arm64)
endif()
+ if ((MINGW AND ARCHITECTURE_x86_64) AND NOT "mingw-amd64" IN_LIST DISABLED_PLATFORMS)
+ add_ci_package(mingw-amd64)
+ endif()
+
+ if ((MINGW AND ARCHITECTURE_arm64) AND NOT "mingw-arm64" IN_LIST DISABLED_PLATFORMS)
+ add_ci_package(mingw-arm64)
+ endif()
+
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
add_ci_package(android)
endif()
diff --git a/CMakeModules/CopyYuzuFFmpegDeps.cmake b/CMakeModules/CopyYuzuFFmpegDeps.cmake
deleted file mode 100644
index e50696cc02..0000000000
--- a/CMakeModules/CopyYuzuFFmpegDeps.cmake
+++ /dev/null
@@ -1,10 +0,0 @@
-# SPDX-FileCopyrightText: 2020 yuzu Emulator Project
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-function(copy_yuzu_FFmpeg_deps target_dir)
- include(WindowsCopyFiles)
- set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
- file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
- string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
- windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
-endfunction(copy_yuzu_FFmpeg_deps)
diff --git a/CMakeModules/CopyYuzuSDLDeps.cmake b/CMakeModules/CopyYuzuSDLDeps.cmake
deleted file mode 100644
index 464eed5e9c..0000000000
--- a/CMakeModules/CopyYuzuSDLDeps.cmake
+++ /dev/null
@@ -1,8 +0,0 @@
-# SPDX-FileCopyrightText: 2016 Citra Emulator Project
-# SPDX-License-Identifier: GPL-2.0-or-later
-
-function(copy_yuzu_SDL_deps target_dir)
- include(WindowsCopyFiles)
- set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
- windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll)
-endfunction(copy_yuzu_SDL_deps)
diff --git a/cpmfile.json b/cpmfile.json
index abb80c1dd7..ee5fb89c15 100644
--- a/cpmfile.json
+++ b/cpmfile.json
@@ -7,7 +7,9 @@
"version": "3.6.0",
"min_version": "1.1.1",
"disabled_platforms": [
- "macos-universal"
+ "macos-universal",
+ "mingw-amd64",
+ "mingw-arm64"
]
},
"boost": {
diff --git a/docs/CPMUtil/AddCIPackage.md b/docs/CPMUtil/AddCIPackage.md
index 559db69ea9..bcd72e10da 100644
--- a/docs/CPMUtil/AddCIPackage.md
+++ b/docs/CPMUtil/AddCIPackage.md
@@ -9,6 +9,8 @@
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
* `windows-amd64`
* `windows-arm64`
+ * `mingw-amd64`
+ * `mingw-arm64`
* `android`
* `solaris-amd64`
* `freebsd-amd64`
diff --git a/externals/cpmfile.json b/externals/cpmfile.json
index 73cdf3e305..a8376db540 100644
--- a/externals/cpmfile.json
+++ b/externals/cpmfile.json
@@ -23,7 +23,11 @@
"package": "sirit",
"name": "sirit",
"repo": "eden-emulator/sirit",
- "version": "1.0.2"
+ "version": "1.0.2",
+ "disabled_platforms": [
+ "mingw-amd64",
+ "mingw-arm64"
+ ]
},
"httplib": {
"repo": "yhirose/cpp-httplib",
diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt
index 59397f6acb..995b25a2c7 100644
--- a/externals/ffmpeg/CMakeLists.txt
+++ b/externals/ffmpeg/CMakeLists.txt
@@ -107,9 +107,10 @@ endif()
if (YUZU_USE_BUNDLED_FFMPEG)
# MSVC conflicts with ksuser otherwise
+ # MinGW has the funny quirk of requiring avutil after avcodec
# Android needs some deps to be compiled with PIC (TODO)
# TODO(crueter) fix
- if (MSVC OR ANDROID)
+ if (ANDROID)
set(BUILD_SHARED_LIBS ON)
else()
set(BUILD_SHARED_LIBS OFF)
diff --git a/externals/ffmpeg/cpmfile.json b/externals/ffmpeg/cpmfile.json
index b06008f68a..6337e083a9 100644
--- a/externals/ffmpeg/cpmfile.json
+++ b/externals/ffmpeg/cpmfile.json
@@ -15,6 +15,7 @@
"disabled_platforms": [
"freebsd-amd64",
"solaris-amd64",
+ "openbsd-amd64",
"macos-universal"
]
}
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt
index d6082dd00b..6100814cd6 100644
--- a/src/yuzu/CMakeLists.txt
+++ b/src/yuzu/CMakeLists.txt
@@ -437,13 +437,6 @@ if (ENABLE_SDL2)
target_compile_definitions(yuzu PRIVATE HAVE_SDL2)
endif()
-if (MSVC)
- include(CopyYuzuSDLDeps)
- include(CopyYuzuFFmpegDeps)
- copy_yuzu_SDL_deps(yuzu)
- copy_yuzu_FFmpeg_deps(yuzu)
-endif()
-
if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64)
target_link_libraries(yuzu PRIVATE dynarmic::dynarmic)
endif()
diff --git a/src/yuzu_cmd/CMakeLists.txt b/src/yuzu_cmd/CMakeLists.txt
index 211b3141c2..b26628e074 100644
--- a/src/yuzu_cmd/CMakeLists.txt
+++ b/src/yuzu_cmd/CMakeLists.txt
@@ -55,9 +55,4 @@ if(WIN32)
endif()
endif()
-if (MSVC)
- include(CopyYuzuSDLDeps)
- copy_yuzu_SDL_deps(yuzu-cmd)
-endif()
-
create_target_directory_groups(yuzu-cmd)
diff --git a/tools/cpm/check-updates.sh b/tools/cpm/check-updates.sh
index 7fa1904e4e..ae38b7294d 100755
--- a/tools/cpm/check-updates.sh
+++ b/tools/cpm/check-updates.sh
@@ -37,11 +37,20 @@ EOF
while true; do
case "$1" in
- (-uf|--force) UPDATE=true; FORCE=true; continue ;;
- (-u|--update) UPDATE=true; continue ;;
- (-h) usage ;;
- ("$0") break ;;
- ("") break ;;
+ -f | --force)
+ UPDATE=true
+ FORCE=true
+ shift
+ continue
+ ;;
+ -u | --update)
+ UPDATE=true
+ shift
+ continue
+ ;;
+ -h) usage ;;
+ "$0") break ;;
+ "") break ;;
esac
PACKAGE="$1"
@@ -52,68 +61,72 @@ while true; do
# shellcheck disable=SC1091
. tools/cpm/package.sh
- SKIP=$(value "skip_updates")
+ SKIP=$(value "skip_updates")
- [ "$SKIP" = "true" ] && continue
+ [ "$SKIP" = "true" ] && continue
- [ "$REPO" = null ] && continue
- [ "$GIT_HOST" != "github.com" ] && continue # TODO
- # shellcheck disable=SC2153
- [ "$TAG" = null ] && continue
+ [ "$REPO" = null ] && continue
+ [ "$GIT_HOST" != "github.com" ] && continue # TODO
+ # shellcheck disable=SC2153
+ [ "$TAG" = null ] && continue
- echo "-- Package $PACKAGE"
+ echo "-- Package $PACKAGE"
# TODO(crueter): Support for Forgejo updates w/ forgejo_token
- # Use gh-cli to avoid ratelimits lmao
- TAGS=$(gh api --method GET "/repos/$REPO/tags")
+ # Use gh-cli to avoid ratelimits lmao
+ TAGS=$(gh api --method GET "/repos/$REPO/tags")
- # filter out some commonly known annoyances
+ # filter out some commonly known annoyances
# TODO add more
- filter vulkan-sdk # vulkan
- filter yotta # mbedtls
+ filter vulkan-sdk # vulkan
+ filter yotta # mbedtls
- # ignore betas/alphas (remove if needed)
+ # ignore betas/alphas (remove if needed)
filter alpha
filter beta
filter rc
# Add package-specific overrides here, e.g. here for fmt:
- [ "$PACKAGE" = fmt ] && filter v0.11
+ [ "$PACKAGE" = fmt ] && filter v0.11
- LATEST=$(echo "$TAGS" | jq -r '.[0].name')
+ LATEST=$(echo "$TAGS" | jq -r '.[0].name')
- [ "$LATEST" = "$TAG" ] && [ "$FORCE" != "true" ] && echo "-- * Up-to-date" && continue
+ [ "$LATEST" = "$TAG" ] && [ "$FORCE" != "true" ] && echo "-- * Up-to-date" && continue
RETURN=1
- if [ "$HAS_REPLACE" = "true" ]; then
- # this just extracts the tag prefix
- VERSION_PREFIX=$(echo "$ORIGINAL_TAG" | cut -d"%" -f1)
+ if [ "$HAS_REPLACE" = "true" ]; then
+ # this just extracts the tag prefix
+ VERSION_PREFIX=$(echo "$ORIGINAL_TAG" | cut -d"%" -f1)
- # then we strip out the prefix from the new tag, and make that our new git_version
- NEW_GIT_VERSION=$(echo "$LATEST" | sed "s/$VERSION_PREFIX//g")
- fi
+ # then we strip out the prefix from the new tag, and make that our new git_version
+ if [ -z "$VERSION_PREFIX" ]; then
+ NEW_GIT_VERSION="$LATEST"
+ else
+ NEW_GIT_VERSION=$(echo "$LATEST" | sed "s/$VERSION_PREFIX//g")
+ fi
+ fi
- echo "-- * Version $LATEST available, current is $TAG"
+ echo "-- * Version $LATEST available, current is $TAG"
- HASH=$(tools/cpm/hash.sh "$REPO" "$LATEST")
+ HASH=$(tools/cpm/hash.sh "$REPO" "$LATEST")
- echo "-- * New hash: $HASH"
+ echo "-- * New hash: $HASH"
- if [ "$UPDATE" = "true" ]; then
+ if [ "$UPDATE" = "true" ]; then
RETURN=0
- if [ "$HAS_REPLACE" = "true" ]; then
- NEW_JSON=$(echo "$JSON" | jq ".hash = \"$HASH\" | .git_version = \"$NEW_GIT_VERSION\"")
- else
- NEW_JSON=$(echo "$JSON" | jq ".hash = \"$HASH\" | .tag = \"$LATEST\"")
- fi
+ if [ "$HAS_REPLACE" = "true" ]; then
+ NEW_JSON=$(echo "$JSON" | jq ".hash = \"$HASH\" | .git_version = \"$NEW_GIT_VERSION\"")
+ else
+ NEW_JSON=$(echo "$JSON" | jq ".hash = \"$HASH\" | .tag = \"$LATEST\"")
+ fi
export NEW_JSON
tools/cpm/replace.sh
- fi
+ fi
done
-exit $RETURN \ No newline at end of file
+exit $RETURN
diff --git a/tools/cpm/download.sh b/tools/cpm/download.sh
index 315f01d54b..9793db0c04 100755
--- a/tools/cpm/download.sh
+++ b/tools/cpm/download.sh
@@ -65,7 +65,7 @@ ci_package() {
echo "-- CI package $PACKAGE_NAME"
- for platform in windows-amd64 windows-arm64 android solaris-amd64 freebsd-amd64 linux-amd64 linux-aarch64 macos-universal; do
+ for platform in windows-amd64 windows-arm64 mingw-amd64 mingw-arm64 android solaris-amd64 freebsd-amd64 openbsd-amd64 linux-amd64 linux-aarch64 macos-universal; do
echo "-- * platform $platform"
case $DISABLED in