From 298f73f95b820889dfa6132839e59adcd2ccbe84 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 14 Feb 2026 12:03:16 +0100 Subject: [PATCH] cmake: enable binutils ld workaround for all toolchains at build-time (revert) The change was valid, but caused an annoying warning with perfectly working non-binutils ld linkers: ``` ld: warning: ignoring duplicate libraries: 'my/path/usr/local/lib/libcrypto.a' ``` (seen with Apple clang, when using static `libcrypto.a`) It means that for the binutil ld hack to work at consumption-time, curl must be built with the same picky binutils (gcc) toolchain. Reverts 795433b923fc7953ae0a20b44249055fe334ae33 #20434 Closes #20594 --- CMakeLists.txt | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 11a83ef761..40dc7dc439 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1820,28 +1820,30 @@ endif() # linkers sensitive to lib order. There must be a better solution to this. # Enable the workaround for all compilers, to make it available when using GCC # to consume libcurl, regardless of the compiler used to build libcurl itself. -if(USE_OPENSSL AND TARGET OpenSSL::Crypto) - get_target_property(_curl_imported OpenSSL::Crypto IMPORTED) - if(_curl_imported) - add_library(CURL::OpenSSL_Crypto INTERFACE IMPORTED) - get_target_property(_curl_libname OpenSSL::Crypto LOCATION) - set_target_properties(CURL::OpenSSL_Crypto PROPERTIES INTERFACE_LINK_LIBRARIES "${_curl_libname}") - list(APPEND CURL_LIBS CURL::OpenSSL_Crypto) +if(CMAKE_C_COMPILER_ID STREQUAL "GNU") + if(USE_OPENSSL AND TARGET OpenSSL::Crypto) + get_target_property(_curl_imported OpenSSL::Crypto IMPORTED) + if(_curl_imported) + add_library(CURL::OpenSSL_Crypto INTERFACE IMPORTED) + get_target_property(_curl_libname OpenSSL::Crypto LOCATION) + set_target_properties(CURL::OpenSSL_Crypto PROPERTIES INTERFACE_LINK_LIBRARIES "${_curl_libname}") + list(APPEND CURL_LIBS CURL::OpenSSL_Crypto) + endif() endif() -endif() -if(HAVE_LIBZ AND TARGET ZLIB::ZLIB) - get_target_property(_curl_imported ZLIB::ZLIB IMPORTED) - if(_curl_imported) - add_library(CURL::ZLIB INTERFACE IMPORTED) - get_target_property(_curl_libname ZLIB::ZLIB LOCATION) - set_target_properties(CURL::ZLIB PROPERTIES INTERFACE_LINK_LIBRARIES "${_curl_libname}") - list(APPEND CURL_LIBS CURL::ZLIB) + if(HAVE_LIBZ AND TARGET ZLIB::ZLIB) + get_target_property(_curl_imported ZLIB::ZLIB IMPORTED) + if(_curl_imported) + add_library(CURL::ZLIB INTERFACE IMPORTED) + get_target_property(_curl_libname ZLIB::ZLIB LOCATION) + set_target_properties(CURL::ZLIB PROPERTIES INTERFACE_LINK_LIBRARIES "${_curl_libname}") + list(APPEND CURL_LIBS CURL::ZLIB) + endif() + endif() + if(WIN32) + add_library(CURL::win32_winsock INTERFACE IMPORTED) + set_target_properties(CURL::win32_winsock PROPERTIES INTERFACE_LINK_LIBRARIES "ws2_32") + list(APPEND CURL_LIBS CURL::win32_winsock) endif() -endif() -if(WIN32) - add_library(CURL::win32_winsock INTERFACE IMPORTED) - set_target_properties(CURL::win32_winsock PROPERTIES INTERFACE_LINK_LIBRARIES "ws2_32") - list(APPEND CURL_LIBS CURL::win32_winsock) endif() if(CMAKE_C_COMPILER_ID STREQUAL "MSVC") # MSVC but exclude clang-cl