This commit is contained in:
Viktor Szakats 2025-03-27 09:38:08 +01:00
parent fb4b207f7e
commit e4c489e19c
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201

View file

@ -358,23 +358,14 @@ else()
endif()
option(CURL_USE_PKGCONFIG "Enable pkg-config to detect dependencies" ${_curl_use_pkgconfig_default})
# Initialize variables collecting dependency libs, paths, pkg-config names.
# Initialize variables collecting system and dependency libs.
set(CURL_NETWORK_AND_TIME_LIBS "")
set(CURL_LIBS "")
set(CURL_LIBDIRS "")
set(LIBCURL_PC_REQUIRES_PRIVATE "")
if(ENABLE_ARES)
set(USE_ARES 1)
find_package(Cares REQUIRED)
list(APPEND CURL_LIBS ${CARES_LIBRARIES})
list(APPEND CURL_LIBDIRS ${CARES_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${CARES_PC_REQUIRES})
include_directories(SYSTEM ${CARES_INCLUDE_DIRS})
link_directories(${CARES_LIBRARY_DIRS})
if(CARES_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${CARES_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::cares")
endif()
include(CurlSymbolHiding)
@ -762,7 +753,7 @@ if(CURL_USE_OPENSSL)
# Depend on OpenSSL via imported targets. This allows our dependents to
# get our dependencies transitively.
list(APPEND CURL_LIBS OpenSSL::SSL OpenSSL::Crypto)
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "openssl")
set_target_properties(OpenSSL::SSL PROPERTIES LIBCURL_PC_MODULES "openssl")
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "openssl")
set(_valid_default_ssl_backend TRUE)
@ -809,14 +800,7 @@ if(CURL_USE_MBEDTLS)
endif()
set(_ssl_enabled ON)
set(USE_MBEDTLS ON)
list(APPEND CURL_LIBS ${MBEDTLS_LIBRARIES})
list(APPEND CURL_LIBDIRS ${MBEDTLS_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${MBEDTLS_PC_REQUIRES})
include_directories(SYSTEM ${MBEDTLS_INCLUDE_DIRS})
link_directories(${MBEDTLS_LIBRARY_DIRS})
if(MBEDTLS_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${MBEDTLS_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::mbedtls" "CURL::mbedcrypto" "CURL::mbedx509")
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "mbedtls")
set(_valid_default_ssl_backend TRUE)
@ -840,14 +824,7 @@ if(CURL_USE_WOLFSSL)
find_package(WolfSSL REQUIRED)
set(_ssl_enabled ON)
set(USE_WOLFSSL ON)
list(APPEND CURL_LIBS ${WOLFSSL_LIBRARIES})
list(APPEND CURL_LIBDIRS ${WOLFSSL_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${WOLFSSL_PC_REQUIRES})
include_directories(SYSTEM ${WOLFSSL_INCLUDE_DIRS})
link_directories(${WOLFSSL_LIBRARY_DIRS})
if(WOLFSSL_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${WOLFSSL_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::wolfssl")
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "wolfssl")
set(_valid_default_ssl_backend TRUE)
@ -899,14 +876,7 @@ if(CURL_USE_RUSTLS)
find_package(Rustls REQUIRED)
set(_ssl_enabled ON)
set(USE_RUSTLS ON)
list(APPEND CURL_LIBS ${RUSTLS_LIBRARIES})
list(APPEND CURL_LIBDIRS ${RUSTLS_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${RUSTLS_PC_REQUIRES})
include_directories(SYSTEM ${RUSTLS_INCLUDE_DIRS})
link_directories(${RUSTLS_LIBRARY_DIRS})
if(RUSTLS_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${RUSTLS_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::rustls")
if(NOT DEFINED HAVE_RUSTLS_SUPPORTED_HPKE)
if(RUSTLS_VERSION AND RUSTLS_VERSION VERSION_GREATER_EQUAL 0.15)
@ -951,14 +921,7 @@ set(HAVE_BROTLI OFF)
curl_dependency_option(CURL_BROTLI Brotli "brotli")
if(BROTLI_FOUND)
set(HAVE_BROTLI ON)
list(APPEND CURL_LIBS ${BROTLI_LIBRARIES})
list(APPEND CURL_LIBDIRS ${BROTLI_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${BROTLI_PC_REQUIRES})
include_directories(SYSTEM ${BROTLI_INCLUDE_DIRS})
link_directories(${BROTLI_LIBRARY_DIRS})
if(BROTLI_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${BROTLI_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::brotli")
endif()
set(HAVE_ZSTD OFF)
@ -966,14 +929,7 @@ curl_dependency_option(CURL_ZSTD Zstd "zstd")
if(ZSTD_FOUND)
if(ZSTD_VERSION VERSION_GREATER_EQUAL 1.0.0)
set(HAVE_ZSTD ON)
list(APPEND CURL_LIBS ${ZSTD_LIBRARIES})
list(APPEND CURL_LIBDIRS ${ZSTD_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${ZSTD_PC_REQUIRES})
include_directories(SYSTEM ${ZSTD_INCLUDE_DIRS})
link_directories(${ZSTD_LIBRARY_DIRS})
if(ZSTD_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${ZSTD_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::zstd")
else()
message(WARNING "zstd v1.0.0 or newer is required, disabling zstd support.")
endif()
@ -993,8 +949,7 @@ macro(curl_openssl_check_exists)
endif()
endif()
if(USE_WOLFSSL)
list(APPEND CMAKE_REQUIRED_INCLUDES "${WOLFSSL_INCLUDE_DIRS}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "${WOLFSSL_LIBRARIES}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "CURL::wolfssl")
curl_required_libpaths("${WOLFSSL_LIBRARY_DIRS}")
if(HAVE_LIBZ)
list(APPEND CMAKE_REQUIRED_LIBRARIES ZLIB::ZLIB) # Public wolfSSL headers also require zlib headers
@ -1097,14 +1052,7 @@ option(USE_NGHTTP2 "Use nghttp2 library" ON)
if(USE_NGHTTP2)
find_package(NGHTTP2)
if(NGHTTP2_FOUND)
list(APPEND CURL_LIBS ${NGHTTP2_LIBRARIES})
list(APPEND CURL_LIBDIRS ${NGHTTP2_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP2_PC_REQUIRES})
include_directories(SYSTEM ${NGHTTP2_INCLUDE_DIRS})
link_directories(${NGHTTP2_LIBRARY_DIRS})
if(NGHTTP2_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${NGHTTP2_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::nghttp2")
else()
set(USE_NGHTTP2 OFF)
endif()
@ -1140,25 +1088,11 @@ if(USE_NGTCP2)
else()
message(FATAL_ERROR "ngtcp2 requires a supported TLS-backend")
endif()
list(APPEND CURL_LIBS ${NGTCP2_LIBRARIES})
list(APPEND CURL_LIBDIRS ${NGTCP2_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGTCP2_PC_REQUIRES})
include_directories(SYSTEM ${NGTCP2_INCLUDE_DIRS})
link_directories(${NGTCP2_LIBRARY_DIRS})
if(NGTCP2_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${NGTCP2_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::ngtcp2")
find_package(NGHTTP3 REQUIRED)
set(USE_NGHTTP3 ON)
list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES})
list(APPEND CURL_LIBDIRS ${NGHTTP3_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP3_PC_REQUIRES})
include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS})
link_directories(${NGHTTP3_LIBRARY_DIRS})
if(NGHTTP3_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${NGHTTP3_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::nghttp3")
endif()
option(USE_QUICHE "Use quiche library for HTTP/3 support" OFF)
@ -1173,18 +1107,10 @@ if(USE_QUICHE)
message(FATAL_ERROR "quiche requires BoringSSL")
endif()
curl_openssl_check_quic()
list(APPEND CURL_LIBS ${QUICHE_LIBRARIES})
list(APPEND CURL_LIBDIRS ${QUICHE_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${QUICHE_PC_REQUIRES})
include_directories(SYSTEM ${QUICHE_INCLUDE_DIRS})
link_directories(${QUICHE_LIBRARY_DIRS})
if(QUICHE_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${QUICHE_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::quiche")
if(NOT DEFINED HAVE_QUICHE_CONN_SET_QLOG_FD)
cmake_push_check_state()
list(APPEND CMAKE_REQUIRED_INCLUDES "${QUICHE_INCLUDE_DIRS}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "${QUICHE_LIBRARIES}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "CURL::quiche")
check_symbol_exists("quiche_conn_set_qlog_fd" "quiche.h" HAVE_QUICHE_CONN_SET_QLOG_FD)
cmake_pop_check_state()
endif()
@ -1200,14 +1126,7 @@ if(USE_OPENSSL_QUIC)
find_package(NGHTTP3 REQUIRED)
set(USE_NGHTTP3 ON)
list(APPEND CURL_LIBS ${NGHTTP3_LIBRARIES})
list(APPEND CURL_LIBDIRS ${NGHTTP3_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${NGHTTP3_PC_REQUIRES})
include_directories(SYSTEM ${NGHTTP3_INCLUDE_DIRS})
link_directories(${NGHTTP3_LIBRARY_DIRS})
if(NGHTTP3_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${NGHTTP3_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::nghttp3")
endif()
if(NOT CURL_DISABLE_SRP AND (HAVE_GNUTLS_SRP OR HAVE_OPENSSL_SRP))
@ -1235,21 +1154,15 @@ if(NOT CURL_DISABLE_LDAP)
find_package(LDAP)
if(LDAP_FOUND)
set(HAVE_LBER_H 1)
set(CURL_LIBS ${LDAP_LIBRARIES} ${CURL_LIBS})
list(APPEND CURL_LIBDIRS ${LDAP_LIBRARY_DIRS})
set(CURL_LIBS "CURL::ldap" ${CURL_LIBS})
if(LDAP_PC_REQUIRES)
set(LIBCURL_PC_REQUIRES_PRIVATE ${LDAP_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE})
endif()
include_directories(SYSTEM ${LDAP_INCLUDE_DIRS})
link_directories(${LDAP_LIBRARY_DIRS})
if(LDAP_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LDAP_CFLAGS}")
endif()
# LDAP feature checks
list(APPEND CMAKE_REQUIRED_DEFINITIONS "-DLDAP_DEPRECATED=1")
list(APPEND CMAKE_REQUIRED_LIBRARIES "${LDAP_LIBRARIES}")
list(APPEND CMAKE_REQUIRED_LIBRARIES "CURL::ldap")
curl_required_libpaths("${LDAP_LIBRARY_DIRS}")
check_function_exists("ldap_url_parse" HAVE_LDAP_URL_PARSE)
@ -1312,14 +1225,7 @@ set(HAVE_LIBIDN2 OFF)
if(USE_LIBIDN2 AND NOT USE_APPLE_IDN AND NOT USE_WIN32_IDN)
find_package(Libidn2)
if(LIBIDN2_FOUND)
set(CURL_LIBS ${LIBIDN2_LIBRARIES} ${CURL_LIBS})
list(APPEND CURL_LIBDIRS ${LIBIDN2_LIBRARY_DIRS})
set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBIDN2_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE})
include_directories(SYSTEM ${LIBIDN2_INCLUDE_DIRS})
link_directories(${LIBIDN2_LIBRARY_DIRS})
if(LIBIDN2_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBIDN2_CFLAGS}")
endif()
set(CURL_LIBS "CURL::libidn2" ${CURL_LIBS})
set(HAVE_IDN2_H 1)
set(HAVE_LIBIDN2 1)
endif()
@ -1332,14 +1238,7 @@ set(USE_LIBPSL OFF)
if(CURL_USE_LIBPSL)
find_package(Libpsl REQUIRED)
list(APPEND CURL_LIBS ${LIBPSL_LIBRARIES})
list(APPEND CURL_LIBDIRS ${LIBPSL_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBPSL_PC_REQUIRES})
include_directories(SYSTEM ${LIBPSL_INCLUDE_DIRS})
link_directories(${LIBPSL_LIBRARY_DIRS})
if(LIBPSL_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBPSL_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::libpsl")
set(USE_LIBPSL ON)
endif()
@ -1351,14 +1250,7 @@ set(USE_LIBSSH2 OFF)
if(CURL_USE_LIBSSH2)
find_package(Libssh2)
if(LIBSSH2_FOUND)
set(CURL_LIBS ${LIBSSH2_LIBRARIES} ${CURL_LIBS}) # keep it before TLS-crypto, compression
list(APPEND CURL_LIBDIRS ${LIBSSH2_LIBRARY_DIRS})
set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBSSH2_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE})
include_directories(SYSTEM ${LIBSSH2_INCLUDE_DIRS})
link_directories(${LIBSSH2_LIBRARY_DIRS})
if(LIBSSH2_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBSSH2_CFLAGS}")
endif()
set(CURL_LIBS "CURL::libssh2" ${CURL_LIBS}) # keep it before TLS-crypto, compression
set(USE_LIBSSH2 ON)
endif()
endif()
@ -1368,14 +1260,7 @@ option(CURL_USE_LIBSSH "Use libssh" OFF)
mark_as_advanced(CURL_USE_LIBSSH)
if(NOT USE_LIBSSH2 AND CURL_USE_LIBSSH)
find_package(Libssh REQUIRED)
set(CURL_LIBS ${LIBSSH_LIBRARIES} ${CURL_LIBS}) # keep it before TLS-crypto, compression
list(APPEND CURL_LIBDIRS ${LIBSSH_LIBRARY_DIRS})
set(LIBCURL_PC_REQUIRES_PRIVATE ${LIBSSH_PC_REQUIRES} ${LIBCURL_PC_REQUIRES_PRIVATE})
include_directories(SYSTEM ${LIBSSH_INCLUDE_DIRS})
link_directories(${LIBSSH_LIBRARY_DIRS})
if(LIBSSH_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBSSH_CFLAGS}")
endif()
set(CURL_LIBS "CURL::libssh" ${CURL_LIBS}) # keep it before TLS-crypto, compression
set(USE_LIBSSH ON)
endif()
@ -1383,14 +1268,7 @@ option(CURL_USE_GSASL "Use libgsasl" OFF)
mark_as_advanced(CURL_USE_GSASL)
if(CURL_USE_GSASL)
find_package(Libgsasl REQUIRED)
list(APPEND CURL_LIBS ${LIBGSASL_LIBRARIES})
list(APPEND CURL_LIBDIRS ${LIBGSASL_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBGSASL_PC_REQUIRES})
include_directories(SYSTEM ${LIBGSASL_INCLUDE_DIRS})
link_directories(${LIBGSASL_LIBRARY_DIRS})
if(LIBGSASL_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBGSASL_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::libgsasl")
set(USE_GSASL ON)
endif()
@ -1402,14 +1280,7 @@ if(CURL_USE_GSSAPI)
set(HAVE_GSSAPI ${GSS_FOUND})
if(GSS_FOUND)
list(APPEND CURL_LIBS ${GSS_LIBRARIES})
list(APPEND CURL_LIBDIRS ${GSS_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${GSS_PC_REQUIRES})
include_directories(SYSTEM ${GSS_INCLUDE_DIRS})
link_directories(${GSS_LIBRARY_DIRS})
if(GSS_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${GSS_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::gss")
if(GSS_FLAVOUR STREQUAL "GNU")
set(HAVE_GSSGNU 1)
@ -1443,14 +1314,7 @@ if(CURL_USE_LIBUV)
message(FATAL_ERROR "Using libuv without debug support enabled is useless")
endif()
find_package(Libuv REQUIRED)
list(APPEND CURL_LIBS ${LIBUV_LIBRARIES})
list(APPEND CURL_LIBDIRS ${LIBUV_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBUV_PC_REQUIRES})
include_directories(SYSTEM ${LIBUV_INCLUDE_DIRS})
link_directories(${LIBUV_LIBRARY_DIRS})
if(LIBUV_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBUV_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::libuv")
set(USE_LIBUV ON)
set(HAVE_UV_H ON)
endif()
@ -1458,14 +1322,7 @@ endif()
option(USE_LIBRTMP "Enable librtmp from rtmpdump" OFF)
if(USE_LIBRTMP)
find_package(Librtmp REQUIRED)
list(APPEND CURL_LIBS ${LIBRTMP_LIBRARIES})
list(APPEND CURL_LIBDIRS ${LIBRTMP_LIBRARY_DIRS})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE ${LIBRTMP_PC_REQUIRES})
include_directories(SYSTEM ${LIBRTMP_INCLUDE_DIRS})
link_directories(${LIBRTMP_LIBRARY_DIRS})
if(LIBRTMP_CFLAGS)
string(APPEND CMAKE_C_FLAGS " ${LIBRTMP_CFLAGS}")
endif()
list(APPEND CURL_LIBS "CURL::librtmp")
endif()
option(ENABLE_UNIX_SOCKETS "Enable Unix domain sockets support" ON)
@ -2028,8 +1885,6 @@ endif()
add_subdirectory(scripts) # for shell completions
list(REMOVE_DUPLICATES CURL_LIBDIRS)
add_subdirectory(lib)
if(BUILD_CURL_EXE)
@ -2296,6 +2151,8 @@ if(NOT CURL_DISABLE_INSTALL)
endif()
endforeach()
list(REMOVE_DUPLICATES _ldflags)
set(_implicit_libs "")
if(NOT MINGW AND NOT UNIX)
set(_implicit_libs "${CMAKE_C_IMPLICIT_LINK_LIBRARIES}")