vcpkg/ports/curl/vcpkg-cmake-wrapper.cmake

67 lines
2.8 KiB
CMake

function(z_vcpkg_curl_libraries_warning variable access value current_list_file stack)
if(variable STREQUAL "CURL_LIBRARIES"
AND access STREQUAL "READ_ACCESS"
AND NOT z_vcpkg_curl_libraries_warning_issued)
set(z_vcpkg_curl_libraries_warning_issued 1 PARENT_SCOPE)
message(WARNING
"CURL_LIBRARIES is '${CURL_LIBRARIES}'. "
"When linking imported targets, exported CMake config must use \"find_dependency(CURL)\"."
)
endif()
endfunction()
list(REMOVE_ITEM ARGS "NO_MODULE" "CONFIG" "MODULE")
list(GET ARGS 0 _z_vcpg_curl_name)
_find_package(${ARGS} CONFIG)
if(${_z_vcpg_curl_name}_FOUND)
cmake_policy(PUSH)
cmake_policy(SET CMP0012 NEW)
cmake_policy(SET CMP0054 NEW)
cmake_policy(SET CMP0057 NEW)
set(_curl_target CURL::libcurl_shared)
if(TARGET CURL::libcurl_static)
set(_curl_target CURL::libcurl_static)
endif()
get_target_property(_curl_link_libraries ${_curl_target} INTERFACE_LINK_LIBRARIES)
if(NOT _curl_link_libraries)
set(_curl_link_libraries "")
endif()
if(_curl_link_libraries MATCHES "ZLIB::ZLIB")
string(REGEX REPLACE "([\$]<[^;]*)?ZLIB::ZLIB([^;]*>)?" "${ZLIB_LIBRARIES}" _curl_link_libraries "${_curl_link_libraries}")
endif()
if(_curl_link_libraries MATCHES "OpenSSL::")
string(REGEX REPLACE "([\$]<[^;]*)?OpenSSL::(SSL|Crypto)([^;]*>)?" "${OPENSSL_LIBRARIES}" _curl_link_libraries "${_curl_link_libraries}")
endif()
if(_curl_link_libraries MATCHES "::")
# leave CURL_LIBRARIES as set by upstream (imported target), but add information.
variable_watch(CURL_LIBRARIES "z_vcpkg_curl_libraries_warning")
else()
get_target_property(CURL_INCLUDE_DIRS ${_curl_target} INTERFACE_INCLUDE_DIRECTORIES)
# resolve CURL_LIBRARIES to filepaths.
if(WIN32)
get_target_property(_curl_location_debug ${_curl_target} IMPORTED_IMPLIB_DEBUG)
get_target_property(_curl_location_release ${_curl_target} IMPORTED_IMPLIB_RELEASE)
endif()
if(NOT _curl_location_debug AND NOT _curl_location_release)
get_target_property(_curl_location_debug ${_curl_target} IMPORTED_LOCATION_DEBUG)
get_target_property(_curl_location_release ${_curl_target} IMPORTED_LOCATION_RELEASE)
endif()
set(CURL_LIBRARY_DEBUG "${_curl_location_debug}" CACHE INTERNAL "vcpkg")
set(CURL_LIBRARY_RELEASE "${_curl_location_release}" CACHE INTERNAL "vcpkg")
include("${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake")
select_library_configurations(CURL)
set(CURL_LIBRARIES ${CURL_LIBRARY} ${_curl_link_libraries})
unset(_curl_link_libraries)
unset(_curl_location_debug)
unset(_curl_location_release)
endif()
unset(_curl_target)
cmake_policy(POP)
endif()