aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2026-03-08 22:33:51 +0100
committercrueter <crueter@eden-emu.dev>2026-03-08 22:33:51 +0100
commit3d1a67af18128831539c24f804b112f75b0194fd (patch)
tree1ef4f00e6933520eeb0f06e2b65ddcd4a1aeb53c
parentc7b23f4a1aec49b445bf88196d7206c93b1a8759 (diff)
[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
-rw-r--r--.patch/httplib/0002-fix-zstd.patch89
-rw-r--r--cpmfile.json8
-rw-r--r--externals/cpmfile.json25
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp4
-rwxr-xr-xtools/cpm/package/update.sh29
-rwxr-xr-xtools/cpm/package/util/fix-hash.sh8
10 files changed, 145 insertions, 25 deletions
diff --git a/.patch/httplib/0002-fix-zstd.patch b/.patch/httplib/0002-fix-zstd.patch
new file mode 100644
index 0000000000..f54485ea53
--- /dev/null
+++ b/.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}
diff --git a/cpmfile.json b/cpmfile.json
index 774f160360..c938e67e88 100644
--- a/cpmfile.json
+++ b/cpmfile.json
@@ -46,9 +46,9 @@
"package": "ZLIB",
"repo": "madler/zlib",
"tag": "v%VERSION%",
- "hash": "06eaa3a1eaaeb31f461a2283b03a91ed8eb2406e62cd97ea1c69836324909edeecd93edd03ff0bf593d9dde223e3376149134c5b1fe2e8688c258cadf8cd60ff",
+ "hash": "16fea4df307a68cf0035858abe2fd550250618a97590e202037acd18a666f57afc10f8836cbbd472d54a0e76539d0e558cb26f059d53de52ff90634bbf4f47d4",
"version": "1.2",
- "git_version": "1.3.1.2",
+ "git_version": "1.3.2",
"options": [
"ZLIB_BUILD_SHARED OFF",
"ZLIB_INSTALL OFF"
@@ -98,9 +98,9 @@
"package": "VVL",
"repo": "KhronosGroup/Vulkan-ValidationLayers",
"tag": "vulkan-sdk-%VERSION%",
- "git_version": "1.4.335.0",
+ "git_version": "1.4.341.0",
"artifact": "android-binaries-%VERSION%.zip",
- "hash": "48167c4a17736301bd08f9290f41830443e1f18cce8ad867fc6f289b49e18b40e93c9850b377951af82f51b5b6d7313aa6a884fc5df79f5ce3df82696c1c1244"
+ "hash": "8812ae84cbe49e6a3418ade9c458d3be6d74a3dffd319d4502007b564d580998056e8190414368ec11b27bc83993c7a0dad713c31bcc3d9553b51243efee3753"
},
"quazip": {
"package": "QuaZip-Qt6",
diff --git a/externals/cpmfile.json b/externals/cpmfile.json
index 9644647638..de024fd40e 100644
--- a/externals/cpmfile.json
+++ b/externals/cpmfile.json
@@ -9,7 +9,7 @@
},
"sirit": {
"repo": "eden-emulator/sirit",
- "git_version": "1.0.3",
+ "git_version": "1.0.4",
"tag": "v%VERSION%",
"artifact": "sirit-source-%VERSION%.tar.zst",
"hash_suffix": "sha512sum",
@@ -28,11 +28,12 @@
"httplib": {
"repo": "yhirose/cpp-httplib",
"tag": "v%VERSION%",
- "hash": "a229e24cca4afe78e5c0aa2e482f15108ac34101fd8dbd927365f15e8c37dec4de38c5277d635017d692a5b320e1b929f8bfcc076f52b8e4dcdab8fe53bfdf2e",
- "git_version": "0.30.1",
+ "hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded",
+ "git_version": "0.37.0",
"find_args": "MODULE GLOBAL",
"patches": [
- "0001-mingw.patch"
+ "0001-mingw.patch",
+ "0002-fix-zstd.patch"
],
"options": [
"HTTPLIB_REQUIRE_OPENSSL ON"
@@ -55,8 +56,8 @@
"package": "xbyak",
"repo": "herumi/xbyak",
"tag": "v%VERSION%",
- "hash": "ac333d7bea1d61865bebebb116201a58db431946aa2f11aa042ef5795c390ff30af4d6c90ed3b3d24443a1d430703b08f14fc13b2fa405c155a241456ed78a47",
- "git_version": "7.33.2"
+ "hash": "b6475276b2faaeb315734ea8f4f8bd87ededcee768961b39679bee547e7f3e98884d8b7851e176d861dab30a80a76e6ea302f8c111483607dde969b4797ea95a",
+ "git_version": "7.35.2"
},
"oaknut": {
"repo": "eden-emulator/oaknut",
@@ -146,9 +147,9 @@
"package": "Catch2",
"repo": "catchorg/Catch2",
"tag": "v%VERSION%",
- "hash": "acb3f463a7404d6a3bce52e474075cdadf9bb241d93feaf147c182d756e5a2f8bd412f4658ca186d15ab8fed36fc587d79ec311f55642d8e4ded16df9e213656",
+ "hash": "7eea385d79d88a5690cde131fe7ccda97d5c54ea09d6f515000d7bf07c828809d61c1ac99912c1ee507cf933f61c1c47ecdcc45df7850ffa82714034b0fccf35",
"version": "3.0.1",
- "git_version": "3.12.0",
+ "git_version": "3.13.0",
"patches": [
"0001-solaris-isnan-fix.patch"
]
@@ -256,15 +257,15 @@
"repo": "KhronosGroup/Vulkan-Headers",
"package": "VulkanHeaders",
"version": "1.4.317",
- "hash": "26e0ad8fa34ab65a91ca62ddc54cc4410d209a94f64f2817dcdb8061dc621539a4262eab6387e9b9aa421db3dbf2cf8e2a4b041b696d0d03746bae1f25191272",
- "git_version": "1.4.342",
+ "hash": "d2846ea228415772645eea4b52a9efd33e6a563043dd3de059e798be6391a8f0ca089f455ae420ff22574939ed0f48ed7c6ff3d5a9987d5231dbf3b3f89b484b",
+ "git_version": "1.4.345",
"tag": "v%VERSION%"
},
"vulkan-utility-libraries": {
"repo": "KhronosGroup/Vulkan-Utility-Libraries",
"package": "VulkanUtilityLibraries",
- "hash": "8147370f964fd82c315d6bb89adeda30186098427bf3efaa641d36282d42a263f31e96e4586bfd7ae0410ff015379c19aa4512ba160630444d3d8553afd1ec14",
- "git_version": "1.4.342",
+ "hash": "114f6b237a6dcba923ccc576befb5dea3f1c9b3a30de7dc741f234a831d1c2d52d8a224afb37dd57dffca67ac0df461eaaab6a5ab5e503b393f91c166680c3e1",
+ "git_version": "1.4.345",
"tag": "v%VERSION%"
},
"frozen": {
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 21affffb6b..dfb311b327 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,6 @@
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
+
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 08d6e73688..7566372b51 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -1220,7 +1220,7 @@ target_link_libraries(core PRIVATE
RenderDoc::API
ZLIB::ZLIB)
-target_link_libraries(core PRIVATE httplib::httplib)
+target_link_libraries(core PUBLIC httplib::httplib zstd::zstd)
if (ENABLE_WEB_SERVICE)
target_compile_definitions(core PUBLIC ENABLE_WEB_SERVICE)
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
index 38cec7c750..f037919eb0 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
+++ b/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& 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:
// if (new_pc & 1) {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
index 108a341a71..f2af4e5b80 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
+++ b/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};
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.GetImmediateU1()) {
// In range for a valid LEA materialisation
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
index 2ba67f5a13..85ee3584eb 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
+++ b/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
/* 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 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 reg_a = ctx.reg_alloc.UseGpr(code, args[0]).cvt32();
diff --git a/tools/cpm/package/update.sh b/tools/cpm/package/update.sh
index be6a0fbbef..92f4f423a9 100755
--- a/tools/cpm/package/update.sh
+++ b/tools/cpm/package/update.sh
@@ -19,7 +19,8 @@ Check a specific package or packages for updates.
Options:
-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
@@ -38,6 +39,7 @@ while :; do
case "$char" in
a) ALL=1 ;;
n) UPDATE=false ;;
+ c) COMMIT=true ;;
h) usage ;;
*) die "Invalid option -$char" ;;
esac
@@ -46,6 +48,7 @@ while :; do
--dry-run) UPDATE=false ;;
--all) ALL=1 ;;
--help) usage ;;
+ --commit) COMMIT=true ;;
"$0") break ;;
"") break ;;
*) packages="$packages $1" ;;
@@ -56,6 +59,7 @@ done
[ "$ALL" != 1 ] || packages="${LIBS:-$packages}"
: "${UPDATE:=true}"
+: "${COMMIT:=false}"
[ -n "$packages" ] || usage
for pkg in $packages; do
@@ -93,6 +97,9 @@ for pkg in $packages; do
filter_out yotta # mbedtls
+ # ????????????????????????????????
+ filter_out vksc
+
# ignore betas/alphas (remove if needed)
filter_out alpha
filter_out beta
@@ -119,19 +126,35 @@ for pkg in $packages; do
else
NEW_GIT_VERSION=$(echo "$LATEST" | sed "s/$VERSION_PREFIX//g")
fi
+ else
+ NEW_GIT_VERSION="$LATEST"
fi
+ _commit="$_commit
+* $PACKAGE: $GIT_VERSION -> $NEW_GIT_VERSION"
+
echo "-- * Version $LATEST available, current is $TAG"
if [ "$UPDATE" = "true" ]; then
if [ "$HAS_REPLACE" = "true" ]; then
NEW_JSON=$(echo "$JSON" | jq ".git_version = \"$NEW_GIT_VERSION\"")
else
- NEW_JSON=$(echo "$JSON" | jq ".tag = \"$LATEST\"")
+ NEW_JSON=$(echo "$JSON" | jq ".tag = \"$NEW_GIT_VERSION\"")
fi
"$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
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
diff --git a/tools/cpm/package/util/fix-hash.sh b/tools/cpm/package/util/fix-hash.sh
index 07b9d266dd..3a69f0aaa7 100755
--- a/tools/cpm/package/util/fix-hash.sh
+++ b/tools/cpm/package/util/fix-hash.sh
@@ -3,9 +3,15 @@
# SPDX-FileCopyrightText: Copyright 2026 crueter
# SPDX-License-Identifier: LGPL-3.0-or-later
+# shellcheck disable=SC1091
+
: "${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
[ "$CI" = null ] || exit 0