From 80ec30790031e7814fa3fdff11e67d8553787bfa Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 13 Feb 2025 10:33:59 -0500 Subject: [PATCH] curl: Set build options the way we need for CMake Set options added by the update to curl 8.12.1. In particular, now that upstream curl's CMake code depends on OpenSSL via imported targets from FindOpenSSL, we can let it handle the transitive dependency on posix threads. --- Source/Modules/CMakeBuildUtilities.cmake | 1 + Utilities/Release/linux/aarch64/cache.txt | 2 +- Utilities/Release/linux/x86_64/cache.txt | 2 +- Utilities/cmcurl/CMakeLists.txt | 7 ++++++- Utilities/cmlibarchive/CMakeLists.txt | 9 ++++----- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Source/Modules/CMakeBuildUtilities.cmake b/Source/Modules/CMakeBuildUtilities.cmake index 09d8250cf8..dba9d50690 100644 --- a/Source/Modules/CMakeBuildUtilities.cmake +++ b/Source/Modules/CMakeBuildUtilities.cmake @@ -159,6 +159,7 @@ else() set(CURL_CA_BUNDLE "" CACHE FILEPATH "Path to SSL CA Certificate Bundle") set(CURL_CA_PATH "" CACHE PATH "Path to SSL CA Certificate Directory") mark_as_advanced(CURL_CA_BUNDLE CURL_CA_PATH) + find_package(OpenSSL) endif() if(NOT CMAKE_USE_SYSTEM_NGHTTP2) # Tell curl's FindNGHTTP2 module to use our library. diff --git a/Utilities/Release/linux/aarch64/cache.txt b/Utilities/Release/linux/aarch64/cache.txt index 9b13440208..3cc97128d9 100644 --- a/Utilities/Release/linux/aarch64/cache.txt +++ b/Utilities/Release/linux/aarch64/cache.txt @@ -8,7 +8,7 @@ CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc # Enable ssl support in curl CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:STRING=/opt/openssl/lib/libcrypto.a;-pthread +OPENSSL_CRYPTO_LIBRARY:STRING=/opt/openssl/lib/libcrypto.a OPENSSL_INCLUDE_DIR:PATH=/opt/openssl/include OPENSSL_SSL_LIBRARY:FILEPATH=/opt/openssl/lib/libssl.a diff --git a/Utilities/Release/linux/x86_64/cache.txt b/Utilities/Release/linux/x86_64/cache.txt index a40f8fb989..46dc81a06b 100644 --- a/Utilities/Release/linux/x86_64/cache.txt +++ b/Utilities/Release/linux/x86_64/cache.txt @@ -8,7 +8,7 @@ CMAKE_EXE_LINKER_FLAGS:STRING=-static-libstdc++ -static-libgcc # Enable ssl support in curl CMAKE_USE_OPENSSL:BOOL=ON -OPENSSL_CRYPTO_LIBRARY:STRING=/opt/openssl/lib/libcrypto.a;-pthread +OPENSSL_CRYPTO_LIBRARY:STRING=/opt/openssl/lib/libcrypto.a OPENSSL_INCLUDE_DIR:PATH=/opt/openssl/include OPENSSL_SSL_LIBRARY:FILEPATH=/opt/openssl/lib/libssl.a diff --git a/Utilities/cmcurl/CMakeLists.txt b/Utilities/cmcurl/CMakeLists.txt index f7d9cd42c1..75b5102059 100644 --- a/Utilities/cmcurl/CMakeLists.txt +++ b/Utilities/cmcurl/CMakeLists.txt @@ -1,4 +1,5 @@ # Set curl options as needed for CMake build +set(_CURL_QUICK_DETECT ON) set(BUILD_CURL_EXE OFF CACHE INTERNAL "No curl exe") set(BUILD_DASHBOARD_REPORTS OFF CACHE INTERNAL "No curl dashboard reports") set(BUILD_RELEASE_DEBUG_DIRS OFF CACHE INTERNAL "No curl release/debug dirs") @@ -1178,7 +1179,11 @@ macro(curl_openssl_check_symbol_exists _symbol _files _variable) list(APPEND CMAKE_REQUIRED_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DOPENSSL_SUPPRESS_DEPRECATED") # for SSL_CTX_set_srp_username deprecated since 3.0.0 if(HAVE_LIBZ) - list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) + if(CMAKE_USE_SYSTEM_ZLIB) + list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) + else() + list(APPEND CMAKE_REQUIRED_LIBRARIES cmzlib) + endif() endif() if(WIN32) list(APPEND CMAKE_REQUIRED_LIBRARIES "ws2_32") diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 166b301528..04d986b6ea 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -887,8 +887,8 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") IF(OPENSSL_FOUND) SET(HAVE_LIBCRYPTO 1) INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY}) - SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) + list(APPEND ADDITIONAL_LIBS OpenSSL::Crypto) + set(CMAKE_REQUIRED_LIBRARIES OpenSSL::Crypto) SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) LA_CHECK_INCLUDE_FILE("openssl/evp.h" HAVE_OPENSSL_EVP_H) CHECK_FUNCTION_EXISTS(PKCS5_PBKDF2_HMAC_SHA1 HAVE_PKCS5_PBKDF2_HMAC_SHA1) @@ -1018,9 +1018,8 @@ main(int argc, char **argv) # was found on this platform. IF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}) IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND) - INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) - LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES}) - LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS) + LIST(APPEND ADDITIONAL_LIBS OpenSSL::Crypto) + LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS) ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND) ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}) ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM})