Browse Source

[externals] Update dependencies (#3664)

* zlib: 1.3.1.2 -> 1.3.2
* vulkan-validation-layers: 1.4.335.0 -> 1.4.341.0
* sirit: 1.0.3 -> 1.0.4
* httplib: 0.35.0 -> 0.37.0
* xbyak: 7.33.3 -> 7.35.2
* catch2: 3.12.0 -> 3.13.0
* vulkan-headers: 1.4.342 -> 1.4.345
* vulkan-utility-libraries: 1.4.342 -> 1.4.345

Also fixed a build error with newer xbyak.

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3664
pull/3698/head
crueter 2 days ago
parent
commit
3d1a67af18
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 89
      .patch/httplib/0002-fix-zstd.patch
  2. 8
      cpmfile.json
  3. 25
      externals/cpmfile.json
  4. 1
      src/CMakeLists.txt
  5. 2
      src/core/CMakeLists.txt
  6. 2
      src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
  7. 2
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
  8. 4
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
  9. 27
      tools/cpm/package/update.sh
  10. 8
      tools/cpm/package/util/fix-hash.sh

89
.patch/httplib/0002-fix-zstd.patch

@ -0,0 +1,89 @@
From 509be32bbfa6eb95014860f7c9ea6d45c8ddaa56 Mon Sep 17 00:00:00 2001
From: crueter <crueter@eden-emu.dev>
Date: Sun, 8 Mar 2026 15:11:12 -0400
Subject: [PATCH] [cmake] Simplify zstd find logic, and support pre-existing
zstd target
Some deduplication work on the zstd required/if-available logic. Also
adds support for pre-existing `zstd::libzstd` which is useful for
projects that bundle their own zstd in a way that doesn't get caught by
`CONFIG`
Signed-off-by: crueter <crueter@eden-emu.dev>
---
CMakeLists.txt | 46 ++++++++++++++++++++++++++--------------------
1 file changed, 26 insertions(+), 20 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1874e36be0..8d31198006 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -241,28 +241,34 @@ endif()
# NOTE:
# zstd < 1.5.6 does not provide the CMake imported target `zstd::libzstd`.
# Older versions must be consumed via their pkg-config file.
-if(HTTPLIB_REQUIRE_ZSTD)
- find_package(zstd 1.5.6 CONFIG)
- if(NOT zstd_FOUND)
- find_package(PkgConfig REQUIRED)
- pkg_check_modules(zstd REQUIRED IMPORTED_TARGET libzstd)
- add_library(zstd::libzstd ALIAS PkgConfig::zstd)
- endif()
- set(HTTPLIB_IS_USING_ZSTD TRUE)
-elseif(HTTPLIB_USE_ZSTD_IF_AVAILABLE)
- find_package(zstd 1.5.6 CONFIG QUIET)
- if(NOT zstd_FOUND)
- find_package(PkgConfig QUIET)
- if(PKG_CONFIG_FOUND)
- pkg_check_modules(zstd QUIET IMPORTED_TARGET libzstd)
-
- if(TARGET PkgConfig::zstd)
+if (HTTPLIB_REQUIRE_ZSTD)
+ set(HTTPLIB_ZSTD_REQUESTED ON)
+ set(HTTPLIB_ZSTD_REQUIRED REQUIRED)
+elseif (HTTPLIB_USE_ZSTD_IF_AVAILABLE)
+ set(HTTPLIB_ZSTD_REQUESTED ON)
+ set(HTTPLIB_ZSTD_REQUIRED QUIET)
+endif()
+
+if (HTTPLIB_ZSTD_REQUESTED)
+ if (TARGET zstd::libzstd)
+ set(HTTPLIB_IS_USING_ZSTD TRUE)
+ else()
+ find_package(zstd 1.5.6 CONFIG QUIET)
+
+ if (NOT zstd_FOUND)
+ find_package(PkgConfig ${HTTPLIB_ZSTD_REQUIRED})
+ pkg_check_modules(zstd ${HTTPLIB_ZSTD_REQUIRED} IMPORTED_TARGET libzstd)
+
+ if (TARGET PkgConfig::zstd)
add_library(zstd::libzstd ALIAS PkgConfig::zstd)
endif()
endif()
+
+ # This will always be true if zstd is required.
+ # If zstd *isn't* found when zstd is set to required,
+ # CMake will error out earlier in this block.
+ set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND})
endif()
- # Both find_package and PkgConf set a XXX_FOUND var
- set(HTTPLIB_IS_USING_ZSTD ${zstd_FOUND})
endif()
# Used for default, common dirs that the end-user can change (if needed)
@@ -317,13 +323,13 @@ if(HTTPLIB_COMPILE)
$<BUILD_INTERFACE:${_httplib_build_includedir}/httplib.h>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/httplib.h>
)
-
+
# Add C++20 module support if requested
# Include from separate file to prevent parse errors on older CMake versions
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.28")
include(cmake/modules.cmake)
endif()
-
+
set_target_properties(${PROJECT_NAME}
PROPERTIES
VERSION ${${PROJECT_NAME}_VERSION}

8
cpmfile.json

@ -46,9 +46,9 @@
"package": "ZLIB", "package": "ZLIB",
"repo": "madler/zlib", "repo": "madler/zlib",
"tag": "v%VERSION%", "tag": "v%VERSION%",
"hash": "06eaa3a1eaaeb31f461a2283b03a91ed8eb2406e62cd97ea1c69836324909edeecd93edd03ff0bf593d9dde223e3376149134c5b1fe2e8688c258cadf8cd60ff",
"hash": "16fea4df307a68cf0035858abe2fd550250618a97590e202037acd18a666f57afc10f8836cbbd472d54a0e76539d0e558cb26f059d53de52ff90634bbf4f47d4",
"version": "1.2", "version": "1.2",
"git_version": "1.3.1.2",
"git_version": "1.3.2",
"options": [ "options": [
"ZLIB_BUILD_SHARED OFF", "ZLIB_BUILD_SHARED OFF",
"ZLIB_INSTALL OFF" "ZLIB_INSTALL OFF"
@ -98,9 +98,9 @@
"package": "VVL", "package": "VVL",
"repo": "KhronosGroup/Vulkan-ValidationLayers", "repo": "KhronosGroup/Vulkan-ValidationLayers",
"tag": "vulkan-sdk-%VERSION%", "tag": "vulkan-sdk-%VERSION%",
"git_version": "1.4.335.0",
"git_version": "1.4.341.0",
"artifact": "android-binaries-%VERSION%.zip", "artifact": "android-binaries-%VERSION%.zip",
"hash": "48167c4a17736301bd08f9290f41830443e1f18cce8ad867fc6f289b49e18b40e93c9850b377951af82f51b5b6d7313aa6a884fc5df79f5ce3df82696c1c1244"
"hash": "8812ae84cbe49e6a3418ade9c458d3be6d74a3dffd319d4502007b564d580998056e8190414368ec11b27bc83993c7a0dad713c31bcc3d9553b51243efee3753"
}, },
"quazip": { "quazip": {
"package": "QuaZip-Qt6", "package": "QuaZip-Qt6",

25
externals/cpmfile.json

@ -9,7 +9,7 @@
}, },
"sirit": { "sirit": {
"repo": "eden-emulator/sirit", "repo": "eden-emulator/sirit",
"git_version": "1.0.3",
"git_version": "1.0.4",
"tag": "v%VERSION%", "tag": "v%VERSION%",
"artifact": "sirit-source-%VERSION%.tar.zst", "artifact": "sirit-source-%VERSION%.tar.zst",
"hash_suffix": "sha512sum", "hash_suffix": "sha512sum",
@ -28,11 +28,12 @@
"httplib": { "httplib": {
"repo": "yhirose/cpp-httplib", "repo": "yhirose/cpp-httplib",
"tag": "v%VERSION%", "tag": "v%VERSION%",
"hash": "a229e24cca4afe78e5c0aa2e482f15108ac34101fd8dbd927365f15e8c37dec4de38c5277d635017d692a5b320e1b929f8bfcc076f52b8e4dcdab8fe53bfdf2e",
"git_version": "0.30.1",
"hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
"git_version": "0.37.0",
"find_args": "MODULE GLOBAL", "find_args": "MODULE GLOBAL",
"patches": [ "patches": [
"0001-mingw.patch"
"0001-mingw.patch",
"0002-fix-zstd.patch"
], ],
"options": [ "options": [
"HTTPLIB_REQUIRE_OPENSSL ON" "HTTPLIB_REQUIRE_OPENSSL ON"
@ -55,8 +56,8 @@
"package": "xbyak", "package": "xbyak",
"repo": "herumi/xbyak", "repo": "herumi/xbyak",
"tag": "v%VERSION%", "tag": "v%VERSION%",
"hash": "ac333d7bea1d61865bebebb116201a58db431946aa2f11aa042ef5795c390ff30af4d6c90ed3b3d24443a1d430703b08f14fc13b2fa405c155a241456ed78a47",
"git_version": "7.33.2"
"hash": "b6475276b2faaeb315734ea8f4f8bd87ededcee768961b39679bee547e7f3e98884d8b7851e176d861dab30a80a76e6ea302f8c111483607dde969b4797ea95a",
"git_version": "7.35.2"
}, },
"oaknut": { "oaknut": {
"repo": "eden-emulator/oaknut", "repo": "eden-emulator/oaknut",
@ -146,9 +147,9 @@
"package": "Catch2", "package": "Catch2",
"repo": "catchorg/Catch2", "repo": "catchorg/Catch2",
"tag": "v%VERSION%", "tag": "v%VERSION%",
"hash": "acb3f463a7404d6a3bce52e474075cdadf9bb241d93feaf147c182d756e5a2f8bd412f4658ca186d15ab8fed36fc587d79ec311f55642d8e4ded16df9e213656",
"hash": "7eea385d79d88a5690cde131fe7ccda97d5c54ea09d6f515000d7bf07c828809d61c1ac99912c1ee507cf933f61c1c47ecdcc45df7850ffa82714034b0fccf35",
"version": "3.0.1", "version": "3.0.1",
"git_version": "3.12.0",
"git_version": "3.13.0",
"patches": [ "patches": [
"0001-solaris-isnan-fix.patch" "0001-solaris-isnan-fix.patch"
] ]
@ -256,15 +257,15 @@
"repo": "KhronosGroup/Vulkan-Headers", "repo": "KhronosGroup/Vulkan-Headers",
"package": "VulkanHeaders", "package": "VulkanHeaders",
"version": "1.4.317", "version": "1.4.317",
"hash": "26e0ad8fa34ab65a91ca62ddc54cc4410d209a94f64f2817dcdb8061dc621539a4262eab6387e9b9aa421db3dbf2cf8e2a4b041b696d0d03746bae1f25191272",
"git_version": "1.4.342",
"hash": "d2846ea228415772645eea4b52a9efd33e6a563043dd3de059e798be6391a8f0ca089f455ae420ff22574939ed0f48ed7c6ff3d5a9987d5231dbf3b3f89b484b",
"git_version": "1.4.345",
"tag": "v%VERSION%" "tag": "v%VERSION%"
}, },
"vulkan-utility-libraries": { "vulkan-utility-libraries": {
"repo": "KhronosGroup/Vulkan-Utility-Libraries", "repo": "KhronosGroup/Vulkan-Utility-Libraries",
"package": "VulkanUtilityLibraries", "package": "VulkanUtilityLibraries",
"hash": "8147370f964fd82c315d6bb89adeda30186098427bf3efaa641d36282d42a263f31e96e4586bfd7ae0410ff015379c19aa4512ba160630444d3d8553afd1ec14",
"git_version": "1.4.342",
"hash": "114f6b237a6dcba923ccc576befb5dea3f1c9b3a30de7dc741f234a831d1c2d52d8a224afb37dd57dffca67ac0df461eaaab6a5ab5e503b393f91c166680c3e1",
"git_version": "1.4.345",
"tag": "v%VERSION%" "tag": "v%VERSION%"
}, },
"frozen": { "frozen": {

1
src/CMakeLists.txt

@ -1,5 +1,6 @@
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later

2
src/core/CMakeLists.txt

@ -1220,7 +1220,7 @@ target_link_libraries(core PRIVATE
RenderDoc::API RenderDoc::API
ZLIB::ZLIB) ZLIB::ZLIB)
target_link_libraries(core PRIVATE httplib::httplib)
target_link_libraries(core PUBLIC httplib::httplib zstd::zstd)
if (ENABLE_WEB_SERVICE) if (ENABLE_WEB_SERVICE)
target_compile_definitions(core PUBLIC ENABLE_WEB_SERVICE) target_compile_definitions(core PUBLIC ENABLE_WEB_SERVICE)

2
src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp

@ -687,7 +687,7 @@ void A32EmitX64::EmitA32BXWritePC(A32EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst); auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto& arg = args[0]; auto& arg = args[0];
const u32 upper_without_t = (ctx.EndLocation().SetSingleStepping(false).UniqueHash() >> 32) & 0xFFFFFFFE;
const u64 upper_without_t = (ctx.EndLocation().SetSingleStepping(false).UniqueHash() >> 32) & 0xFFFFFFFE;
// Pseudocode: // Pseudocode:
// if (new_pc & 1) { // if (new_pc & 1) {

2
src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp

@ -947,7 +947,7 @@ static void EmitAdd(BlockOfCode& code, EmitContext& ctx, IR::Inst* inst, size_t
const Xbyak::Reg8 overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr(code).cvt8() : Xbyak::Reg8{-1}; const Xbyak::Reg8 overflow = overflow_inst ? ctx.reg_alloc.ScratchGpr(code).cvt8() : Xbyak::Reg8{-1};
if (args[1].IsImmediate() && args[1].GetType() == IR::Type::U32) { if (args[1].IsImmediate() && args[1].GetType() == IR::Type::U32) {
const u32 op_arg = args[1].GetImmediateU32();
const u64 op_arg = args[1].GetImmediateU64();
if (carry_in.IsImmediate()) { if (carry_in.IsImmediate()) {
if (carry_in.GetImmediateU1()) { if (carry_in.GetImmediateU1()) {
// In range for a valid LEA materialisation // In range for a valid LEA materialisation

4
src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project. /* This file is part of the dynarmic project.
@ -135,7 +135,7 @@ void EmitX64::EmitSignedSaturation(EmitContext& ctx, IR::Inst* inst) {
const u32 mask = (1u << N) - 1; const u32 mask = (1u << N) - 1;
const u32 positive_saturated_value = (1u << (N - 1)) - 1; const u32 positive_saturated_value = (1u << (N - 1)) - 1;
const u32 negative_saturated_value = 1u << (N - 1);
const u64 negative_saturated_value = 1u << (N - 1);
const Xbyak::Reg32 result = ctx.reg_alloc.ScratchGpr(code).cvt32(); const Xbyak::Reg32 result = ctx.reg_alloc.ScratchGpr(code).cvt32();
const Xbyak::Reg32 reg_a = ctx.reg_alloc.UseGpr(code, args[0]).cvt32(); const Xbyak::Reg32 reg_a = ctx.reg_alloc.UseGpr(code, args[0]).cvt32();

27
tools/cpm/package/update.sh

@ -20,6 +20,7 @@ Check a specific package or packages for updates.
Options: Options:
-n, --dry-run Do not update the package if it has an update available -n, --dry-run Do not update the package if it has an update available
-a, --all Operate on all packages in this project. -a, --all Operate on all packages in this project.
-c, --commit Automatically generate a commit message
EOF EOF
@ -38,6 +39,7 @@ while :; do
case "$char" in case "$char" in
a) ALL=1 ;; a) ALL=1 ;;
n) UPDATE=false ;; n) UPDATE=false ;;
c) COMMIT=true ;;
h) usage ;; h) usage ;;
*) die "Invalid option -$char" ;; *) die "Invalid option -$char" ;;
esac esac
@ -46,6 +48,7 @@ while :; do
--dry-run) UPDATE=false ;; --dry-run) UPDATE=false ;;
--all) ALL=1 ;; --all) ALL=1 ;;
--help) usage ;; --help) usage ;;
--commit) COMMIT=true ;;
"$0") break ;; "$0") break ;;
"") break ;; "") break ;;
*) packages="$packages $1" ;; *) packages="$packages $1" ;;
@ -56,6 +59,7 @@ done
[ "$ALL" != 1 ] || packages="${LIBS:-$packages}" [ "$ALL" != 1 ] || packages="${LIBS:-$packages}"
: "${UPDATE:=true}" : "${UPDATE:=true}"
: "${COMMIT:=false}"
[ -n "$packages" ] || usage [ -n "$packages" ] || usage
for pkg in $packages; do for pkg in $packages; do
@ -93,6 +97,9 @@ for pkg in $packages; do
filter_out yotta # mbedtls filter_out yotta # mbedtls
# ????????????????????????????????
filter_out vksc
# ignore betas/alphas (remove if needed) # ignore betas/alphas (remove if needed)
filter_out alpha filter_out alpha
filter_out beta filter_out beta
@ -119,19 +126,35 @@ for pkg in $packages; do
else else
NEW_GIT_VERSION=$(echo "$LATEST" | sed "s/$VERSION_PREFIX//g") NEW_GIT_VERSION=$(echo "$LATEST" | sed "s/$VERSION_PREFIX//g")
fi fi
else
NEW_GIT_VERSION="$LATEST"
fi fi
_commit="$_commit
* $PACKAGE: $GIT_VERSION -> $NEW_GIT_VERSION"
echo "-- * Version $LATEST available, current is $TAG" echo "-- * Version $LATEST available, current is $TAG"
if [ "$UPDATE" = "true" ]; then if [ "$UPDATE" = "true" ]; then
if [ "$HAS_REPLACE" = "true" ]; then if [ "$HAS_REPLACE" = "true" ]; then
NEW_JSON=$(echo "$JSON" | jq ".git_version = \"$NEW_GIT_VERSION\"") NEW_JSON=$(echo "$JSON" | jq ".git_version = \"$NEW_GIT_VERSION\"")
else else
NEW_JSON=$(echo "$JSON" | jq ".tag = \"$LATEST\"")
NEW_JSON=$(echo "$JSON" | jq ".tag = \"$NEW_GIT_VERSION\"")
fi fi
"$SCRIPTS"/util/replace.sh "$PACKAGE" "$NEW_JSON" "$SCRIPTS"/util/replace.sh "$PACKAGE" "$NEW_JSON"
QUIET=true "$SCRIPTS"/util/fix-hash.sh
echo "-- * -- Updating hash"
export UPDATE
QUIET=true "$SCRIPTS"/util/fix-hash.sh "$PACKAGE"
fi fi
done done
if [ "$UPDATE" = "true" ] && [ "$COMMIT" = "true" ] && [ -n "$_commit" ]; then
for file in $CPMFILES; do
git add "$file"
done
git commit -m "Update dependencies
$_commit"
fi

8
tools/cpm/package/util/fix-hash.sh

@ -3,9 +3,15 @@
# SPDX-FileCopyrightText: Copyright 2026 crueter # SPDX-FileCopyrightText: Copyright 2026 crueter
# SPDX-License-Identifier: LGPL-3.0-or-later # SPDX-License-Identifier: LGPL-3.0-or-later
# shellcheck disable=SC1091
: "${PACKAGE:=$1}" : "${PACKAGE:=$1}"
# shellcheck disable=SC1091
# re-read json files
# shellcheck disable=SC2016
PACKAGES=$(echo "$CPMFILES" | xargs jq -s 'reduce .[] as $item ({}; . * $item)')
export PACKAGES
. "$SCRIPTS"/vars.sh . "$SCRIPTS"/vars.sh
[ "$CI" = null ] || exit 0 [ "$CI" = null ] || exit 0

Loading…
Cancel
Save