From 6c9445ff28ca13466b3cc29887543e9a0f0364a3 Mon Sep 17 00:00:00 2001 From: oltolm Date: Fri, 10 Apr 2026 01:09:46 +0200 Subject: [PATCH 1/2] cmake: do not disable "WOLFSSL_HARDEN" and fix build with latest WolfSSL --- 3rdparty/curl/CMakeLists.txt | 30 +++++++++++++++--------------- 3rdparty/wolfssl/CMakeLists.txt | 31 +++++++++++++++---------------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/3rdparty/curl/CMakeLists.txt b/3rdparty/curl/CMakeLists.txt index 2b725169f9..0079315267 100644 --- a/3rdparty/curl/CMakeLists.txt +++ b/3rdparty/curl/CMakeLists.txt @@ -7,24 +7,24 @@ if(USE_SYSTEM_CURL) target_link_libraries(3rdparty_libcurl INTERFACE CURL::libcurl) else() message(STATUS "RPCS3: building libcurl + wolfssl submodules") - set(BUILD_CURL_EXE OFF CACHE BOOL "Set to ON to build curl executable.") - set(BUILD_STATIC_CURL OFF CACHE BOOL "Set to ON to build curl executable with static libcurl.") - set(BUILD_STATIC_LIBS ON CACHE BOOL "Set to ON to build static libcurl.") - set(BUILD_SHARED_LIBS OFF CACHE BOOL "Set to ON to build shared libcurl.") + set(BUILD_CURL_EXE OFF CACHE INTERNAL "") + set(BUILD_STATIC_CURL OFF CACHE INTERNAL "") + set(BUILD_STATIC_LIBS ON CACHE INTERNAL "") + set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "") find_package(WolfSSL REQUIRED) - set(CURL_USE_WOLFSSL ON CACHE BOOL "enable wolfSSL for SSL/TLS") - set(CURL_USE_OPENSSL OFF CACHE BOOL "Use OpenSSL code. Experimental") - set(HTTP_ONLY ON CACHE BOOL "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)") - set(USE_LIBIDN2 OFF CACHE BOOL "Use libidn2 for IDN support") # Disabled because MacOS CI doesn't work otherwise - set(CURL_CA_PATH "none" CACHE STRING "Location of default CA path. Set 'none' to disable or 'auto' for auto-detection. Defaults to 'auto'.") - option(CURL_DISABLE_INSTALL "Disable installation targets" ON) + set(CURL_USE_WOLFSSL ON CACHE INTERNAL "") + set(CURL_USE_OPENSSL OFF CACHE INTERNAL "") + set(HTTP_ONLY ON CACHE INTERNAL "") + set(USE_LIBIDN2 OFF CACHE INTERNAL "") # Disabled because MacOS CI doesn't work otherwise + set(CURL_CA_PATH "none" CACHE INTERNAL "") + set(CURL_DISABLE_INSTALL ON CACHE INTERNAL "") if(WIN32) - set(ENABLE_UNICODE ON CACHE BOOL "enable Unicode") + set(ENABLE_UNICODE ON CACHE INTERNAL "") endif() - set(CURL_USE_LIBSSH2 OFF CACHE BOOL "Use libSSH2") - set(CURL_USE_LIBPSL OFF CACHE BOOL "Use libPSL") - option(BUILD_TESTING "Build tests" OFF) - option(BUILD_EXAMPLES "Build libcurl examples" OFF) + set(CURL_USE_LIBSSH2 OFF CACHE INTERNAL "") + set(CURL_USE_LIBPSL OFF CACHE INTERNAL "") + set(BUILD_TESTING OFF CACHE INTERNAL "") + set(BUILD_EXAMPLES OFF CACHE INTERNAL "") add_subdirectory(curl EXCLUDE_FROM_ALL) diff --git a/3rdparty/wolfssl/CMakeLists.txt b/3rdparty/wolfssl/CMakeLists.txt index cf1a66a1f5..2c19c37d2f 100644 --- a/3rdparty/wolfssl/CMakeLists.txt +++ b/3rdparty/wolfssl/CMakeLists.txt @@ -4,23 +4,22 @@ if(USE_SYSTEM_WOLFSSL) add_library(wolfssl INTERFACE) target_link_libraries(wolfssl INTERFACE PkgConfig::WolfSSL) else() - option(WOLFSSL_TLS13 "Enable wolfSSL TLS v1.3 (default: enabled)" OFF) - set(WOLFSSL_SHA3 ON CACHE STRING "Enable wolfSSL SHA-3 support (default: enabled on x86_64/aarch64)") - set(WOLFSSL_SHAKE256 ON CACHE STRING "Enable wolfSSL SHAKE256 support (default: enabled on x86_64/aarch64)") - option(WOLFSSL_BASE64_ENCODE "Enable Base64 encoding (default: enabled on x86_64)" OFF) - option(WOLFSSL_DES3 "Enable DES3 (default: disabled)" ON) - option(WOLFSSL_PWDBASED "Enable PWDBASED (default: disabled)" ON) - option(WOLFSSL_FAST_MATH "Enable fast math ops (default: disabled)" ON) - option(WOLFSSL_EXAMPLES "Enable examples (default: enabled)" OFF) - option(WOLFSSL_CRYPT_TESTS "Enable Crypt Bench/Test (default: enabled)" OFF) - option(WOLFSSL_ASYNC_THREADS "Enable Asynchronous Threading (default: enabled)" OFF) - option(WOLFSSL_BUILD_OUT_OF_TREE "Don't generate files in the source tree (default: yes)" ON) - option(WOLFSSL_SNI "Enable SNI (default: disabled)" ON) - option(WOLFSSL_OPENSSLEXTRA "Enable extra OpenSSL API, size+ (default: disabled)" ON) - option(WOLFSSL_HARDEN "Enable Hardened build, Enables Timing Resistance and Blinding (default: enabled)" OFF) - option(WOLFSSL_ALT_CERT_CHAINS "Enable support for Alternate certification chains (default: disabled)" ON) + set(WOLFSSL_TLS13 OFF CACHE INTERNAL "") + set(WOLFSSL_SHA3 ON CACHE INTERNAL "") + set(WOLFSSL_SHAKE256 ON CACHE INTERNAL "") + set(WOLFSSL_BASE64_ENCODE OFF CACHE INTERNAL "") + set(WOLFSSL_DES3 ON CACHE INTERNAL "") + set(WOLFSSL_PWDBASED ON CACHE INTERNAL "") + set(WOLFSSL_FAST_MATH ON CACHE INTERNAL "") + set(WOLFSSL_EXAMPLES OFF CACHE INTERNAL "") + set(WOLFSSL_CRYPT_TESTS OFF CACHE INTERNAL "") + set(WOLFSSL_ASYNC_THREADS OFF CACHE INTERNAL "") + set(WOLFSSL_BUILD_OUT_OF_TREE ON CACHE INTERNAL "") + set(WOLFSSL_SNI ON CACHE INTERNAL "") + set(WOLFSSL_OPENSSLEXTRA ON CACHE INTERNAL "") + set(WOLFSSL_ALT_CERT_CHAINS ON CACHE INTERNAL "") add_subdirectory(wolfssl EXCLUDE_FROM_ALL) - target_compile_definitions(wolfssl PUBLIC WOLFSSL_DES_ECB HAVE_WRITE_DUP FP_MAX_BITS=8192 WOLFSSL_NO_OPTIONS_H) + target_compile_definitions(wolfssl PUBLIC WOLFSSL_DES_ECB HAVE_WRITE_DUP FP_MAX_BITS=8192 WOLFSSL_USE_OPTIONS_H) endif() From d4b7c31ec8ee6f564f230c5ac01cc2c56b8b7b3c Mon Sep 17 00:00:00 2001 From: digant73 Date: Wed, 15 Apr 2026 23:48:24 +0200 Subject: [PATCH 2/2] Allow to skip optional packages installation minor cleanup minor cleanup --- rpcs3/rpcs3qt/main_window.cpp | 5 +++-- rpcs3/rpcs3qt/pkg_install_dialog.cpp | 7 ++++++- rpcs3/rpcs3qt/pkg_install_dialog.h | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index da66bd4f38..c5e7eb09b4 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -984,7 +984,7 @@ bool main_window::HandlePackageInstallation(QStringList file_paths, bool from_bo const game_compatibility* compat = m_game_list_frame ? m_game_list_frame->GetGameCompatibility() : nullptr; // Let the user choose the packages to install and select the order in which they shall be installed. - pkg_install_dialog dlg(file_paths, compat, this); + pkg_install_dialog dlg(file_paths, from_boot, compat, this); connect(&dlg, &QDialog::finished, this, [&](int result) { if (result != QDialog::Accepted) @@ -1009,7 +1009,8 @@ bool main_window::HandlePackageInstallation(QStringList file_paths, bool from_bo if (canceled) { - return false; + // return "true" if installation of optional packages (requested by some games at first boot) is skipped + return from_boot; } if (!from_boot) diff --git a/rpcs3/rpcs3qt/pkg_install_dialog.cpp b/rpcs3/rpcs3qt/pkg_install_dialog.cpp index a97f656153..a1ebb9a8d1 100644 --- a/rpcs3/rpcs3qt/pkg_install_dialog.cpp +++ b/rpcs3/rpcs3qt/pkg_install_dialog.cpp @@ -24,7 +24,7 @@ enum Roles DataSizeRole = Qt::UserRole + 5, }; -pkg_install_dialog::pkg_install_dialog(const QStringList& paths, const game_compatibility* compat, QWidget* parent) +pkg_install_dialog::pkg_install_dialog(const QStringList& paths, bool from_boot, const game_compatibility* compat, QWidget* parent) : QDialog(parent) { ensure(!paths.empty()); @@ -148,6 +148,11 @@ pkg_install_dialog::pkg_install_dialog(const QStringList& paths, const game_comp buttons->button(QDialogButtonBox::Ok)->setText(tr("Install")); buttons->button(QDialogButtonBox::Ok)->setDefault(true); + if (from_boot) + { + buttons->button(QDialogButtonBox::Cancel)->setText(tr("Skip")); + } + m_dir_list->sortItems(); m_dir_list->setCurrentRow(0); m_dir_list->setMinimumWidth((m_dir_list->sizeHintForColumn(0) * 125) / 100); diff --git a/rpcs3/rpcs3qt/pkg_install_dialog.h b/rpcs3/rpcs3qt/pkg_install_dialog.h index a6174276c3..979d7f5682 100644 --- a/rpcs3/rpcs3qt/pkg_install_dialog.h +++ b/rpcs3/rpcs3qt/pkg_install_dialog.h @@ -17,7 +17,7 @@ class pkg_install_dialog : public QDialog Q_OBJECT public: - explicit pkg_install_dialog(const QStringList& paths, const game_compatibility* compat, QWidget* parent = nullptr); + explicit pkg_install_dialog(const QStringList& paths, bool from_boot, const game_compatibility* compat, QWidget* parent = nullptr); std::vector get_paths_to_install() const; bool precompile_caches() const { return m_precompile_caches; } bool create_desktop_shortcuts() const { return m_create_desktop_shortcuts; }