From 4a143771e0fc07fb29e6c81ea513e3cdf8a86d5b Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 27 Mar 2025 01:15:16 +0100 Subject: [PATCH] curl-config.cmake.in: add logic --- CMake/curl-config.cmake.in | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CMake/curl-config.cmake.in b/CMake/curl-config.cmake.in index d1582b8d41..32d3215503 100644 --- a/CMake/curl-config.cmake.in +++ b/CMake/curl-config.cmake.in @@ -45,6 +45,22 @@ if(NOT TARGET @PROJECT_NAME@::@LIB_NAME@) add_library(@PROJECT_NAME@::@LIB_NAME@ ALIAS @PROJECT_NAME@::@LIB_SELECTED@) endif() +cmake_policy(GET CMP0099 _has_CMP0099) # https://cmake.org/cmake/help/latest/policy/CMP0099.html +if(NOT _has_CMP0099 AND _lib) + message(STATUS "CURL: CMP0099 not detected, resorting to workaround.") + # CMake before CMP0099 (CMake 3.17 2020-03-20) did not endorse the concept of libdirs and lib names. + # It expected libs to have an absolute filename. As a workaround, manually apply dependency libdirs + # to the libcurl target, for CMake consumers without this policy set. + get_target_property(_libdirs "${_lib}" INTERFACE_LINK_DIRECTORIES) + if(_libdirs) + foreach(_target IN ITEMS @PROJECT_NAME@::@LIB_SHARED@ @PROJECT_NAME@::@LIB_STATIC@) + if(TARGET "${_target}") + target_link_directories("${_target}" INTERFACE ${_libdirs}) + endif() + endforeach() + endif() +endif() + # For compatibility with CMake's FindCURL.cmake set(CURL_VERSION_STRING "@CURLVERSION@") set(CURL_LIBRARIES @PROJECT_NAME@::@LIB_NAME@)