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 "$/") - 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 "$/") - 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