From 0bcb3144eb86873adc9356f1ff3253122a85eecc Mon Sep 17 00:00:00 2001 From: crueter Date: Tue, 19 Aug 2025 12:14:01 -0400 Subject: [PATCH] fix openssl propagation and download force Signed-off-by: crueter --- CMakeLists.txt | 128 +++++++++++++++++++++++++++------ src/core/CMakeLists.txt | 3 +- src/web_service/CMakeLists.txt | 3 +- 3 files changed, 111 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 514282fafe..e18003e344 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -394,17 +394,18 @@ if (YUZU_USE_CPM) if (ENABLE_OPENSSL) set(SSL_VERSION 3.5.2) - if (MSVC) - if (ARCHITECTURE_x86_64) - set(ARTIFACT openssl-windows-amd64-${SSL_VERSION}.tar.zst) - set(KEY windows-amd64) + if ((MSVC AND ARCHITECTURE_x86_64) OR FORCE_DOWNLOAD_OPENSSL) + set(ARTIFACT openssl-windows-amd64-${SSL_VERSION}.tar.zst) + set(KEY windows-amd64) + + if (MSVC AND ARCHITECTURE_x86_64) + set(DOWNLOAD_ONLY OFF) else() - set(ARTIFACT openssl-windows-arm64-${SSL_VERSION}.tar.zst) - set(KEY windows-arm64) + set(DOWNLOAD_ONLY ON) endif() AddPackage( - NAME OpenSSL + NAME OpenSSL-windows-amd64 REPO crueter/OpenSSL-CI TAG v${SSL_VERSION} VERSION ${SSL_VERSION} @@ -413,12 +414,51 @@ if (YUZU_USE_CPM) KEY ${KEY} HASH_SUFFIX sha512sum BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} ) - include(${OpenSSL_SOURCE_DIR}/openssl.cmake) - elseif (ANDROID) + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-windows-amd64_SOURCE_DIR}) + endif() + endif() + + if ((MSVC AND ARCHITECTURE_arm64) OR FORCE_DOWNLOAD_OPENSSL) + set(ARTIFACT openssl-windows-arm64-${SSL_VERSION}.tar.zst) + set(KEY windows-arm64) + + if (MSVC AND ARCHITECTURE_arm64) + set(DOWNLOAD_ONLY OFF) + else() + set(DOWNLOAD_ONLY ON) + endif() + AddPackage( - NAME OpenSSL + NAME OpenSSL-windows-arm64 + REPO crueter/OpenSSL-CI + TAG v${SSL_VERSION} + VERSION ${SSL_VERSION} + ARTIFACT ${ARTIFACT} + + KEY ${KEY} + HASH_SUFFIX sha512sum + BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} + ) + + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-windows-arm64_SOURCE_DIR}) + endif() + endif() + + if (ANDROID OR FORCE_DOWNLOAD_OPENSSL) + if (ANDROID) + set(DOWNLOAD_ONLY OFF) + else() + set(DOWNLOAD_ONLY ON) + endif() + + AddPackage( + NAME OpenSSL-android REPO crueter/OpenSSL-CI TAG v${SSL_VERSION} VERSION ${SSL_VERSION} @@ -427,12 +467,23 @@ if (YUZU_USE_CPM) KEY android HASH_SUFFIX sha512sum BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} ) - include(${OpenSSL_SOURCE_DIR}/openssl.cmake) - elseif(PLATFORM_SUN) + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-android_SOURCE_DIR}) + endif() + endif() + + if(PLATFORM_SUN OR FORCE_DOWNLOAD_OPENSSL) + if (PLATFORM_SUN) + set(DOWNLOAD_ONLY OFF) + else() + set(DOWNLOAD_ONLY ON) + endif() + AddPackage( - NAME OpenSSL + NAME OpenSSL-solaris REPO crueter/OpenSSL-CI TAG v${SSL_VERSION} VERSION ${SSL_VERSION} @@ -441,12 +492,23 @@ if (YUZU_USE_CPM) KEY solaris HASH_SUFFIX sha512sum BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} ) - include(${OpenSSL_SOURCE_DIR}/openssl.cmake) - elseif(PLATFORM_FREEBSD) + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-solaris_SOURCE_DIR}) + endif() + endif() + + if(PLATFORM_FREEBSD OR FORCE_DOWNLOAD_OPENSSL) + if (PLATFORM_FREEBSD) + set(DOWNLOAD_ONLY OFF) + else() + set(DOWNLOAD_ONLY ON) + endif() + AddPackage( - NAME OpenSSL + NAME OpenSSL-freebsd REPO crueter/OpenSSL-CI TAG v${SSL_VERSION} VERSION ${SSL_VERSION} @@ -455,12 +517,23 @@ if (YUZU_USE_CPM) KEY freebsd HASH_SUFFIX sha512sum BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} ) - include(${OpenSSL_SOURCE_DIR}/openssl.cmake) - elseif(PLATFORM_LINUX) + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-freebsd_SOURCE_DIR}) + endif() + endif() + + if(PLATFORM_LINUX OR FORCE_DOWNLOAD_OPENSSL) + if (PLATFORM_LINUX) + set(DOWNLOAD_ONLY OFF) + else() + set(DOWNLOAD_ONLY ON) + endif() + AddPackage( - NAME OpenSSL + NAME OpenSSL-linux REPO crueter/OpenSSL-CI TAG v${SSL_VERSION} VERSION ${SSL_VERSION} @@ -469,11 +542,26 @@ if (YUZU_USE_CPM) KEY linux HASH_SUFFIX sha512sum BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${DOWNLOAD_ONLY} ) - include(${OpenSSL_SOURCE_DIR}/openssl.cmake) + if (NOT DOWNLOAD_ONLY) + set(OPENSSL_DIR ${OpenSSL-linux_SOURCE_DIR}) + endif() + endif() + + if (DEFINED OPENSSL_DIR) + include(${OPENSSL_DIR}/openssl.cmake) + set(OpenSSL_ADDED ON) + + # Overrides find package + CPMAddPackage( + NAME OpenSSL + SOURCE_DIR ${OPENSSL_DIR} + ) else() find_package(OpenSSL 1.1.1 REQUIRED) + set(OpenSSL_ADDED OFF) endif() endif() diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index db80295243..ba646f76e3 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1246,12 +1246,13 @@ if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64) endif() if(ENABLE_OPENSSL) - find_package(OpenSSL REQUIRED) target_sources(core PRIVATE hle/service/ssl/ssl_backend_openssl.cpp) + if (OpenSSL_ADDED) link_openssl(core) else() + find_package(OpenSSL REQUIRED) target_link_libraries(core PRIVATE OpenSSL::SSL) endif() elseif (APPLE) diff --git a/src/web_service/CMakeLists.txt b/src/web_service/CMakeLists.txt index 1224e6d79d..c1d5a84225 100644 --- a/src/web_service/CMakeLists.txt +++ b/src/web_service/CMakeLists.txt @@ -14,8 +14,6 @@ add_library(web_service STATIC web_result.h ) -find_package(OpenSSL REQUIRED) - create_target_directory_groups(web_service) target_include_directories(web_service PUBLIC ${cpp-jwt_SOURCE_DIR}/include) target_link_libraries(web_service PRIVATE common network nlohmann_json::nlohmann_json httplib::httplib cpp-jwt::cpp-jwt) @@ -23,6 +21,7 @@ target_link_libraries(web_service PRIVATE common network nlohmann_json::nlohmann if (OpenSSL_ADDED) link_openssl(web_service) else() + find_package(OpenSSL REQUIRED) target_link_libraries(web_service PRIVATE OpenSSL::SSL) endif()