diff --git a/CMake/curl-config.in.cmake b/CMake/curl-config.in.cmake index ef2a64cc91..cd0d9bbe83 100644 --- a/CMake/curl-config.in.cmake +++ b/CMake/curl-config.in.cmake @@ -39,9 +39,19 @@ if("@USE_OPENSSL@") else() find_dependency(OpenSSL) endif() + if(TARGET OpenSSL::Crypto AND NOT TARGET CURL::OpenSSL_Crypto) + 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}") + endif() endif() if("@HAVE_LIBZ@") find_dependency(ZLIB "@ZLIB_VERSION_MAJOR@") + if(TARGET ZLIB::ZLIB AND NOT TARGET CURL::ZLIB) + 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}") + endif() endif() set(_curl_cmake_module_path_save ${CMAKE_MODULE_PATH}) diff --git a/CMakeLists.txt b/CMakeLists.txt index e2b93389ee..8827deac2c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1813,21 +1813,18 @@ endif() # before dependencies detected via curl's custom Find modules, and breaks # linkers sensitive to lib order. There must be a better solution to this. if(CMAKE_C_COMPILER_ID STREQUAL "GNU") - set(_libs "") - if(USE_OPENSSL) - list(APPEND _libs OpenSSL::Crypto) + if(USE_OPENSSL AND TARGET OpenSSL::Crypto) + 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() - if(HAVE_LIBZ) - list(APPEND _libs ZLIB::ZLIB) + if(HAVE_LIBZ AND TARGET ZLIB::ZLIB) + 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() - foreach(_lib IN LISTS _libs) - if(TARGET "${_lib}") - add_library(CURL::${_lib} INTERFACE IMPORTED) - get_target_property(_libname "${_lib}" LOCATION) - set_target_properties(${_lib} PROPERTIES INTERFACE_LINK_LIBRARIES "${_libname}") - list(APPEND CURL_LIBS ${_lib}) - endif() - endforeach() if(WIN32) add_library(CURL::win32_winsock INTERFACE IMPORTED) set_target_properties(CURL::win32_winsock PROPERTIES INTERFACE_LINK_LIBRARIES "ws2_32")