]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
cmake: enable binutils ld workaround for all toolchains at build-time (revert)
authorViktor Szakats <commit@vsz.me>
Sat, 14 Feb 2026 11:03:16 +0000 (12:03 +0100)
committerViktor Szakats <commit@vsz.me>
Sun, 15 Feb 2026 11:48:46 +0000 (12:48 +0100)
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

index 11a83ef761e57e927741abbf471797b8810ab290..40dc7dc43960c2a8a3017dab4d5d1f2dd137bf9b 100644 (file)
@@ -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