aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrueter <crueter@eden-emu.dev>2025-10-17 04:20:11 +0200
committercrueter <crueter@eden-emu.dev>2025-10-17 04:20:11 +0200
commit551f244dfd48d0e0c1d6db82b39d1ccaa1b6dc06 (patch)
tree03cc2d6cb0de906b7c8a7a3bb3264802ad6f6163
parentef14303c483672cb15bf91bdfb387e930c7288d9 (diff)
[dynarmic, qt] fix build with QuaZip <=1.4 and fmt v9 (#2755)
Signed-off-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2755
-rw-r--r--.patch/mcl/0001-assert-macro.patch55
-rw-r--r--CMakeModules/FindDiscordRPC.cmake42
-rw-r--r--src/common/logging/log.h10
-rw-r--r--src/dynarmic/externals/cpmfile.json3
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp5
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp5
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/ir/opcodes.h8
-rw-r--r--src/qt_common/config/shared_translation.h1
-rw-r--r--src/qt_common/qt_compat.h2
-rw-r--r--src/qt_common/util/compress.cpp15
-rw-r--r--src/qt_common/util/content.cpp11
14 files changed, 108 insertions, 55 deletions
diff --git a/.patch/mcl/0001-assert-macro.patch b/.patch/mcl/0001-assert-macro.patch
new file mode 100644
index 0000000000..2d7d0dd1b0
--- /dev/null
+++ b/.patch/mcl/0001-assert-macro.patch
@@ -0,0 +1,55 @@
+diff --git a/include/mcl/assert.hpp b/include/mcl/assert.hpp
+index f77dbe7..9ec0b9c 100644
+--- a/include/mcl/assert.hpp
++++ b/include/mcl/assert.hpp
+@@ -23,8 +23,11 @@ template<typename... Ts>
+
+ } // namespace mcl::detail
+
++#ifndef UNREACHABLE
+ #define UNREACHABLE() ASSERT_FALSE("Unreachable code!")
++#endif
+
++#ifndef ASSERT
+ #define ASSERT(expr) \
+ [&] { \
+ if (std::is_constant_evaluated()) { \
+@@ -37,7 +40,9 @@ template<typename... Ts>
+ } \
+ } \
+ }()
++#endif
+
++#ifndef ASSERT_MSG
+ #define ASSERT_MSG(expr, ...) \
+ [&] { \
+ if (std::is_constant_evaluated()) { \
+@@ -50,13 +55,24 @@ template<typename... Ts>
+ } \
+ } \
+ }()
++#endif
+
++#ifndef ASSERT_FALSE
+ #define ASSERT_FALSE(...) ::mcl::detail::assert_terminate("false", __VA_ARGS__)
++#endif
+
+ #if defined(NDEBUG) || defined(MCL_IGNORE_ASSERTS)
+-# define DEBUG_ASSERT(expr) ASSUME(expr)
+-# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
++# ifndef DEBUG_ASSERT
++# define DEBUG_ASSERT(expr) ASSUME(expr)
++# endif
++# ifndef DEBUG_ASSERT_MSG
++# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
++# endif
+ #else
+-# define DEBUG_ASSERT(expr) ASSERT(expr)
+-# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
++# ifndef DEBUG_ASSERT
++# define DEBUG_ASSERT(expr) ASSERT(expr)
++# endif
++# ifndef DEBUG_ASSERT_MSG
++# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
++# endif
+ #endif
diff --git a/CMakeModules/FindDiscordRPC.cmake b/CMakeModules/FindDiscordRPC.cmake
index 44ca9904f4..5ae9f4f999 100644
--- a/CMakeModules/FindDiscordRPC.cmake
+++ b/CMakeModules/FindDiscordRPC.cmake
@@ -1,27 +1,33 @@
+# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+# SPDX-License-Identifier: GPL-3.0-or-later
+
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
#
# SPDX-License-Identifier: GPL-3.0-or-later
-find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h)
+find_package(DiscordRPC CONFIG QUIET)
-find_library(DiscordRPC_LIBRARY discord-rpc)
+if (NOT DiscordRPC_FOUND)
+ find_path(DiscordRPC_INCLUDE_DIR discord_rpc.h)
+ find_library(DiscordRPC_LIBRARY discord-rpc)
-include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(DiscordRPC
- REQUIRED_VARS
- DiscordRPC_LIBRARY
- DiscordRPC_INCLUDE_DIR
-)
+ include(FindPackageHandleStandardArgs)
+ find_package_handle_standard_args(DiscordRPC
+ REQUIRED_VARS
+ DiscordRPC_LIBRARY
+ DiscordRPC_INCLUDE_DIR
+ )
-if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc)
- add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED)
- set_target_properties(DiscordRPC::discord-rpc PROPERTIES
- IMPORTED_LOCATION "${DiscordRPC_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}"
+ if (DiscordRPC_FOUND AND NOT TARGET DiscordRPC::discord-rpc)
+ add_library(DiscordRPC::discord-rpc UNKNOWN IMPORTED)
+ set_target_properties(DiscordRPC::discord-rpc PROPERTIES
+ IMPORTED_LOCATION "${DiscordRPC_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${DiscordRPC_INCLUDE_DIR}"
+ )
+ endif()
+
+ mark_as_advanced(
+ DiscordRPC_INCLUDE_DIR
+ DiscordRPC_LIBRARY
)
endif()
-
-mark_as_advanced(
- DiscordRPC_INCLUDE_DIR
- DiscordRPC_LIBRARY
-)
diff --git a/src/common/logging/log.h b/src/common/logging/log.h
index 7b23b59aab..757cf464d5 100644
--- a/src/common/logging/log.h
+++ b/src/common/logging/log.h
@@ -40,22 +40,22 @@ void FmtLogMessage(Class log_class, Level log_level, const char* filename, unsig
#endif
#define LOG_DEBUG(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Debug, \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Debug, \
__FILE__, __LINE__, __func__, \
__VA_ARGS__)
#define LOG_INFO(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Info, \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Info, \
__FILE__, __LINE__, __func__, \
__VA_ARGS__)
#define LOG_WARNING(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Warning, \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Warning, \
__FILE__, __LINE__, __func__, \
__VA_ARGS__)
#define LOG_ERROR(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Error, \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Error, \
__FILE__, __LINE__, __func__, \
__VA_ARGS__)
#define LOG_CRITICAL(log_class, ...) \
- Common::Log::FmtLogMessage(Common::Log::Class::log_class, Common::Log::Level::Critical, \
+ ::Common::Log::FmtLogMessage(::Common::Log::Class::log_class, ::Common::Log::Level::Critical, \
__FILE__, __LINE__, __func__, \
__VA_ARGS__)
diff --git a/src/dynarmic/externals/cpmfile.json b/src/dynarmic/externals/cpmfile.json
index 099ded57a4..3479b7982b 100644
--- a/src/dynarmic/externals/cpmfile.json
+++ b/src/dynarmic/externals/cpmfile.json
@@ -13,6 +13,9 @@
"hash": "f943bac39c1879986decad7a442ff4288eaeca4a2907684c7914e115a55ecc43c2782ded85c0835763fe04e40d5c82220ce864423e489e648e408a84f54dc4f3",
"options": [
"MCL_INSTALL OFF"
+ ],
+ "patches": [
+ "0001-assert-macro.patch"
]
},
"zycore": {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
index 1ecb5424da..e472164391 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -238,7 +241,7 @@ EmittedBlockInfo EmitArm64(oaknut::CodeGenerator& code, IR::Block block, const E
#undef A32OPC
#undef A64OPC
default:
- ASSERT_FALSE("Invalid opcode: {}", inst->GetOpcode());
+ ASSERT_FALSE("Invalid opcode: {:x}", std::size_t(inst->GetOpcode()));
break;
}
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
index f9302821d2..c5cd7a6cff 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
@@ -1,3 +1,6 @@
+// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
/* This file is part of the dynarmic project.
* Copyright (c) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -140,7 +143,7 @@ EmittedBlockInfo EmitRV64(biscuit::Assembler& as, IR::Block block, const EmitCon
#undef A32OPC
#undef A64OPC
default:
- ASSERT_FALSE("Invalid opcode: {}", inst->GetOpcode());
+ ASSERT_FALSE("Invalid opcode: {:x}", std::size_t(inst->GetOpcode()));
break;
}
}
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 fb306336cf..e1f4f55f86 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
@@ -145,7 +145,7 @@ A32EmitX64::BlockDescriptor A32EmitX64::Emit(IR::Block& block) {
#undef OPCODE
#undef A32OPC
#undef A64OPC
- default: [[unlikely]] ASSERT_FALSE("Invalid opcode: {}", inst->GetOpcode());
+ default: [[unlikely]] ASSERT_FALSE("Invalid opcode: {:x}", std::size_t(inst->GetOpcode()));
}
reg_alloc.EndOfAllocScope();
func(reg_alloc);
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
index 1e673338a8..b5da18701c 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
@@ -130,7 +130,7 @@ A64EmitX64::BlockDescriptor A64EmitX64::Emit(IR::Block& block) noexcept {
#undef A32OPC
#undef A64OPC
default: [[unlikely]] {
- ASSERT_MSG(false, "Invalid opcode: {}", opcode);
+ ASSERT_MSG(false, "Invalid opcode: {:x}", std::size_t(opcode));
goto finish_this_inst;
}
}
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
index 3bc93e6fd5..47cf0a8b5c 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
@@ -59,7 +59,7 @@ std::optional<EmitX64::BlockDescriptor> EmitX64::GetBasicBlock(IR::LocationDescr
}
void EmitX64::EmitInvalid(EmitContext&, IR::Inst* inst) {
- ASSERT_MSG(false, "Invalid opcode: {}", inst->GetOpcode());
+ ASSERT_MSG(false, "Invalid opcode: {:x}", std::size_t(inst->GetOpcode()));
}
void EmitX64::EmitVoid(EmitContext&, IR::Inst*) {
diff --git a/src/dynarmic/src/dynarmic/ir/opcodes.h b/src/dynarmic/src/dynarmic/ir/opcodes.h
index a231365fa7..7e41353213 100644
--- a/src/dynarmic/src/dynarmic/ir/opcodes.h
+++ b/src/dynarmic/src/dynarmic/ir/opcodes.h
@@ -654,11 +654,3 @@ constexpr bool MayGetNZCVFromOp(const Opcode op) noexcept {
}
} // namespace Dynarmic::IR
-
-template<>
-struct fmt::formatter<Dynarmic::IR::Opcode> : fmt::formatter<std::string> {
- template<typename FormatContext>
- auto format(Dynarmic::IR::Opcode op, FormatContext& ctx) const {
- return formatter<std::string>::format(Dynarmic::IR::GetNameOf(op), ctx);
- }
-};
diff --git a/src/qt_common/config/shared_translation.h b/src/qt_common/config/shared_translation.h
index a25887bb87..1ac68de3cc 100644
--- a/src/qt_common/config/shared_translation.h
+++ b/src/qt_common/config/shared_translation.h
@@ -14,6 +14,7 @@
#include <utility>
#include <vector>
#include <QString>
+#include <QObject>
#include "common/common_types.h"
#include "common/settings_enums.h"
diff --git a/src/qt_common/qt_compat.h b/src/qt_common/qt_compat.h
index 447cd2ffb4..8215b9441f 100644
--- a/src/qt_common/qt_compat.h
+++ b/src/qt_common/qt_compat.h
@@ -3,7 +3,7 @@
#pragma once
-#include <QtVersionChecks>
+#include <QtGlobal>
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
#define STATE_CHANGED stateChanged
diff --git a/src/qt_common/util/compress.cpp b/src/qt_common/util/compress.cpp
index 6f250fcf5b..94dca41151 100644
--- a/src/qt_common/util/compress.cpp
+++ b/src/qt_common/util/compress.cpp
@@ -82,16 +82,9 @@ bool compressSubDir(QuaZip *zip,
if (dir != origDir) {
QuaZipFile dirZipFile(zip);
std::unique_ptr<QuaZipNewInfo> qzni;
- if (options.getDateTime().isNull()) {
- qzni = std::make_unique<QuaZipNewInfo>(origDirectory.relativeFilePath(dir)
- + QLatin1String("/"),
- dir);
- } else {
- qzni = std::make_unique<QuaZipNewInfo>(origDirectory.relativeFilePath(dir)
- + QLatin1String("/"),
- dir,
- options.getDateTime());
- }
+ qzni = std::make_unique<QuaZipNewInfo>(origDirectory.relativeFilePath(dir)
+ + QLatin1String("/"),
+ dir);
if (!dirZipFile.open(QIODevice::WriteOnly, *qzni, nullptr, 0, 0)) {
return false;
}
@@ -156,7 +149,7 @@ bool compressFile(QuaZip *zip,
return false;
} else {
if (!outFile.open(QIODevice::WriteOnly,
- QuaZipNewInfo(fileDest, fileName, options.getDateTime()),
+ QuaZipNewInfo(fileDest, fileName),
nullptr,
0,
options.getCompressionMethod(),
diff --git a/src/qt_common/util/content.cpp b/src/qt_common/util/content.cpp
index 62864547ae..ee30d4b22d 100644
--- a/src/qt_common/util/content.cpp
+++ b/src/qt_common/util/content.cpp
@@ -415,10 +415,8 @@ void ExportDataDir(FrontendCommon::DataManager::DataDir data_dir,
QGuiApplication::processEvents();
auto progress_callback = [=](size_t total_size, size_t processed_size) {
- QMetaObject::invokeMethod(progress,
- &QtProgressDialog::setValue,
- static_cast<int>((processed_size * 100) / total_size));
-
+ QMetaObject::invokeMethod(progress, "setValue", Qt::DirectConnection,
+ Q_ARG(int, static_cast<int>((processed_size * 100) / total_size)));
return !progress->wasCanceled();
};
@@ -501,9 +499,8 @@ void ImportDataDir(FrontendCommon::DataManager::DataDir data_dir,
QObject::connect(delete_watcher, &QFutureWatcher<bool>::finished, rootObject, [=]() {
auto progress_callback = [=](size_t total_size, size_t processed_size) {
- QMetaObject::invokeMethod(progress,
- &QtProgressDialog::setValue,
- static_cast<int>((processed_size * 100) / total_size));
+ QMetaObject::invokeMethod(progress, "setValue", Qt::DirectConnection,
+ Q_ARG(int, static_cast<int>((processed_size * 100) / total_size)));
return !progress->wasCanceled();
};