vcpkg/ports/curl/dependencies.patch
2024-07-30 17:42:29 -07:00

148 lines
4.9 KiB
Diff

diff --git a/CMake/curl-config.cmake.in b/CMake/curl-config.cmake.in
index 2ce8625..a0c039c 100644
--- a/CMake/curl-config.cmake.in
+++ b/CMake/curl-config.cmake.in
@@ -31,6 +31,19 @@ if(@USE_ZLIB@)
find_dependency(ZLIB @ZLIB_VERSION_MAJOR@)
endif()
+if("@USE_ARES@")
+ find_dependency(c-ares CONFIG)
+endif()
+if("@USE_LIBSSH2@")
+ find_dependency(Libssh2 CONFIG)
+endif()
+if("@HAVE_BROTLI@")
+ find_dependency(unofficial-brotli CONFIG)
+endif()
+if("@HAVE_ZSTD@")
+ find_dependency(zstd CONFIG)
+endif()
+
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
check_required_components("@PROJECT_NAME@")
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f9a775a..415206c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -163,7 +163,8 @@ set(LIBCURL_PC_REQUIRES_PRIVATE "")
if(ENABLE_ARES)
set(USE_ARES 1)
- find_package(CARES REQUIRED)
+ find_package(CARES NAMES c-ares CONFIG REQUIRED)
+ set(CARES_LIBRARY c-ares::cares)
list(APPEND CURL_LIBS ${CARES_LIBRARY})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libcares")
endif()
@@ -591,7 +592,9 @@ endif()
option(CURL_BROTLI "Set to ON to enable building curl with brotli support." OFF)
set(HAVE_BROTLI OFF)
if(CURL_BROTLI)
- find_package(Brotli REQUIRED)
+ find_package(BROTLI NAMES unofficial-brotli REQUIRED)
+ set(BROTLI_INCLUDE_DIRS "")
+ set(BROTLI_LIBRARIES "unofficial::brotli::brotlidec")
if(BROTLI_FOUND)
set(HAVE_BROTLI ON)
list(APPEND CURL_LIBS ${BROTLI_LIBRARIES})
@@ -604,7 +607,9 @@ endif()
option(CURL_ZSTD "Set to ON to enable building curl with zstd support." OFF)
set(HAVE_ZSTD OFF)
if(CURL_ZSTD)
- find_package(Zstd REQUIRED)
+ find_package(Zstd NAMES zstd REQUIRED)
+ set(Zstd_INCLUDE_DIRS "")
+ set(Zstd_LIBRARIES zstd::libzstd)
if(Zstd_FOUND AND NOT Zstd_VERSION VERSION_LESS "1.0.0")
set(HAVE_ZSTD ON)
list(APPEND CURL_LIBS ${Zstd_LIBRARIES})
@@ -913,8 +918,12 @@ endif()
# Check for idn2
option(USE_LIBIDN2 "Use libidn2 for IDN support" ON)
if(USE_LIBIDN2)
- check_library_exists("idn2" "idn2_lookup_ul" "" HAVE_LIBIDN2)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(LIBIDN2 REQUIRED libidn2)
+ set(HAVE_LIBIDN2 TRUE)
if(HAVE_LIBIDN2)
+ set(HAVE_IDN2_H TRUE)
+ elseif(0)
set(LIBIDN2_LINK_LIBRARIES "idn2")
check_include_file_concat("idn2.h" HAVE_IDN2_H)
endif()
@@ -963,12 +972,19 @@ mark_as_advanced(CURL_USE_LIBPSL)
set(USE_LIBPSL OFF)
if(CURL_USE_LIBPSL)
- find_package(LibPSL)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(LIBPSL REQUIRED libpsl)
if(LIBPSL_FOUND)
- list(APPEND CURL_LIBS ${LIBPSL_LIBRARY})
+ # Remove standard win32 libs pulled in transitively from icu
+ string(REPLACE " " "|" win32_standard_libraries "/(${CMAKE_C_STANDARD_LIBRARIES})[.]lib\$")
+ foreach(lib IN LISTS LIBPSL_LINK_LIBRARIES)
+ string(TOLOWER "${lib}" lib_lower)
+ if(lib_lower MATCHES win32_standard_libraries)
+ list(REMOVE_ITEM LIBPSL_LINK_LIBRARIES "${lib}")
+ endif()
+ endforeach()
+ list(APPEND CURL_LIBS ${LIBPSL_LINK_LIBRARIES})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libpsl")
- list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBPSL_INCLUDE_DIR}")
- include_directories("${LIBPSL_INCLUDE_DIR}")
set(USE_LIBPSL ON)
endif()
endif()
@@ -979,7 +995,13 @@ mark_as_advanced(CURL_USE_LIBSSH2)
set(USE_LIBSSH2 OFF)
if(CURL_USE_LIBSSH2)
- find_package(LibSSH2)
+ find_package(LIBSSH2 NAMES Libssh2 REQUIRED)
+ if(TARGET Libssh2::libssh2_shared)
+ set(LIBSSH2_LIBRARY Libssh2::libssh2_shared)
+ else()
+ set(LIBSSH2_LIBRARY Libssh2::libssh2_static)
+ endif()
+ get_target_property(LIBSSH2_INCLUDE_DIR "${LIBSSH2_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES)
if(LIBSSH2_FOUND)
list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "libssh2")
@@ -1012,11 +1034,24 @@ if(CURL_USE_GSASL)
set(USE_GSASL ON)
endif()
+option(CURL_USE_GSASL "Use GSASL implementation" OFF)
+mark_as_advanced(CURL_USE_GSASL)
+if(CURL_USE_GSASL)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(GSASL REQUIRED libgsasl)
+ list(APPEND CURL_LIBS ${GSASL_LINK_LIBRARIES})
+ set(USE_GSASL ON)
+endif()
+
option(CURL_USE_GSSAPI "Use GSSAPI implementation (right now only Heimdal is supported with CMake build)" OFF)
mark_as_advanced(CURL_USE_GSSAPI)
if(CURL_USE_GSSAPI)
- find_package(GSS)
+ find_package(PkgConfig REQUIRED)
+ pkg_check_modules(GSS REQUIRED krb5-gssapi)
+ list(APPEND CURL_LIBS ${GSS_LINK_LIBRARIES})
+ list(APPEND CURL_LIBS resolv) # Fixme: move to krb5 pc files
+ pkg_get_variable(GSS_FLAVOUR krb5-gssapi vendor)
set(HAVE_GSSAPI ${GSS_FOUND})
if(GSS_FOUND)
@@ -1028,6 +1063,7 @@ if(CURL_USE_GSSAPI)
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
+ elseif(0)
if(NOT GSS_FLAVOUR STREQUAL "Heimdal")
# MIT
set(_INCLUDE_LIST "")