From: Viktor Szakats Date: Sat, 14 Feb 2026 11:03:16 +0000 (+0100) Subject: cmake: enable binutils ld workaround for all toolchains at build-time (revert) X-Git-Tag: rc-8_19_0-3~115 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=298f73f95b820889dfa6132839e59adcd2ccbe84;p=thirdparty%2Fcurl.git 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 --- 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