cmake: add rustls

Closes #14534
This commit is contained in:
Jan Venekamp 2024-08-14 00:05:44 +02:00 committed by Viktor Szakats
parent db39c668a8
commit ed76a23fcc
No known key found for this signature in database
GPG Key ID: B5ABD165E2AEF201
5 changed files with 70 additions and 1 deletions

2
.github/labeler.yml vendored
View File

@ -236,7 +236,7 @@ TLS:
- all: - all:
- changed-files: - changed-files:
- any-glob-to-all-files: - any-glob-to-all-files:
- '{CMake/FindBearSSL.cmake,CMake/FindMbedTLS.cmake,CMake/FindWolfSSL.cmake,docs/examples/ssl*,docs/examples/*ssl.*,docs/examples/*tls.*,docs/SSL*,docs/libcurl/curl_global_sslset*,docs/libcurl/opts/CURLINFO_CA*,docs/libcurl/opts/CURLINFO_CERT*,docs/libcurl/opts/CURLINFO_SSL*,docs/libcurl/opts/CURLINFO_TLS*,docs/libcurl/opts/CURLOPT_CA*,docs/libcurl/opts/CURLOPT_CERT*,docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY*,docs/libcurl/opts/CURLOPT_SSL*,docs/libcurl/opts/CURLOPT_TLS*,docs/libcurl/opts/CURLOPT_USE_SSL*,lib/vtls/**,m4/curl-bearssl.m4,m4/curl-gnutls.m4,m4/curl-mbedtls.m4,m4/curl-openssl.m4,m4/curl-rustls.m4,m4/curl-schannel.m4,m4/curl-sectransp.m4,m4/curl-wolfssl.m4}' - '{CMake/FindBearSSL.cmake,CMake/FindMbedTLS.cmake,CMake/FindWolfSSL.cmake,CMake/Findrustls.cmake,docs/examples/ssl*,docs/examples/*ssl.*,docs/examples/*tls.*,docs/SSL*,docs/libcurl/curl_global_sslset*,docs/libcurl/opts/CURLINFO_CA*,docs/libcurl/opts/CURLINFO_CERT*,docs/libcurl/opts/CURLINFO_SSL*,docs/libcurl/opts/CURLINFO_TLS*,docs/libcurl/opts/CURLOPT_CA*,docs/libcurl/opts/CURLOPT_CERT*,docs/libcurl/opts/CURLOPT_PINNEDPUBLICKEY*,docs/libcurl/opts/CURLOPT_SSL*,docs/libcurl/opts/CURLOPT_TLS*,docs/libcurl/opts/CURLOPT_USE_SSL*,lib/vtls/**,m4/curl-bearssl.m4,m4/curl-gnutls.m4,m4/curl-mbedtls.m4,m4/curl-openssl.m4,m4/curl-rustls.m4,m4/curl-schannel.m4,m4/curl-sectransp.m4,m4/curl-wolfssl.m4}'
URL: URL:
- all: - all:

48
CMake/Findrustls.cmake Normal file
View File

@ -0,0 +1,48 @@
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
# Find the rustls library
#
# Result Variables:
#
# RUSTLS_FOUND System has rustls
# RUSTLS_INCLUDE_DIRS The rustls include directories
# RUSTLS_LIBRARIES The rustls library names
find_path(RUSTLS_INCLUDE_DIR "rustls.h")
find_library(RUSTLS_LIBRARY "rustls")
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(rustls
REQUIRED_VARS
RUSTLS_INCLUDE_DIR
RUSTLS_LIBRARY
)
if(RUSTLS_FOUND)
set(RUSTLS_INCLUDE_DIRS ${RUSTLS_INCLUDE_DIR})
set(RUSTLS_LIBRARIES ${RUSTLS_LIBRARY})
endif()
mark_as_advanced(RUSTLS_INCLUDE_DIR RUSTLS_LIBRARY)

View File

@ -458,6 +458,7 @@ cmake_dependent_option(CURL_USE_MBEDTLS "Enable mbedTLS for SSL/TLS" OFF CURL_EN
cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_BEARSSL "Enable BearSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
cmake_dependent_option(CURL_USE_WOLFSSL "Enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_WOLFSSL "Enable wolfSSL for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
cmake_dependent_option(CURL_USE_GNUTLS "Enable GnuTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF) cmake_dependent_option(CURL_USE_GNUTLS "Enable GnuTLS for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
cmake_dependent_option(CURL_USE_RUSTLS "Enable rustls for SSL/TLS" OFF CURL_ENABLE_SSL OFF)
set(_openssl_default ON) set(_openssl_default ON)
if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL) if(WIN32 OR CURL_USE_SECTRANSP OR CURL_USE_SCHANNEL OR CURL_USE_MBEDTLS OR CURL_USE_WOLFSSL)
@ -474,6 +475,7 @@ count_true(_enabled_ssl_options_count
CURL_USE_BEARSSL CURL_USE_BEARSSL
CURL_USE_WOLFSSL CURL_USE_WOLFSSL
CURL_USE_GNUTLS CURL_USE_GNUTLS
CURL_USE_RUSTLS
) )
if(_enabled_ssl_options_count GREATER 1) if(_enabled_ssl_options_count GREATER 1)
set(CURL_WITH_MULTI_SSL ON) set(CURL_WITH_MULTI_SSL ON)
@ -614,6 +616,20 @@ if(CURL_USE_GNUTLS)
endif() endif()
endif() endif()
if(CURL_USE_RUSTLS)
find_package(rustls REQUIRED)
set(_ssl_enabled ON)
set(USE_RUSTLS ON)
list(APPEND CURL_LIBS ${RUSTLS_LIBRARIES})
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "rustls")
include_directories(${RUSTLS_INCLUDE_DIRS})
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "rustls")
set(valid_default_ssl_backend TRUE)
endif()
set(curl_ca_bundle_supported TRUE)
endif()
if(CURL_DEFAULT_SSL_BACKEND AND NOT _valid_default_ssl_backend) if(CURL_DEFAULT_SSL_BACKEND AND NOT _valid_default_ssl_backend)
message(FATAL_ERROR "CURL_DEFAULT_SSL_BACKEND '${CURL_DEFAULT_SSL_BACKEND}' not enabled.") message(FATAL_ERROR "CURL_DEFAULT_SSL_BACKEND '${CURL_DEFAULT_SSL_BACKEND}' not enabled.")
endif() endif()
@ -1866,6 +1882,7 @@ if(NOT CURL_DISABLE_INSTALL)
_add_if("BearSSL" _ssl_enabled AND USE_BEARSSL) _add_if("BearSSL" _ssl_enabled AND USE_BEARSSL)
_add_if("wolfSSL" _ssl_enabled AND USE_WOLFSSL) _add_if("wolfSSL" _ssl_enabled AND USE_WOLFSSL)
_add_if("GnuTLS" _ssl_enabled AND USE_GNUTLS) _add_if("GnuTLS" _ssl_enabled AND USE_GNUTLS)
_add_if("rustls" _ssl_enabled AND USE_RUSTLS)
if(_items) if(_items)
if(NOT CMAKE_VERSION VERSION_LESS 3.13) if(NOT CMAKE_VERSION VERSION_LESS 3.13)

View File

@ -47,6 +47,7 @@ CMAKE_DIST = \
CMake/FindQUICHE.cmake \ CMake/FindQUICHE.cmake \
CMake/FindWolfSSL.cmake \ CMake/FindWolfSSL.cmake \
CMake/FindZstd.cmake \ CMake/FindZstd.cmake \
CMake/Findrustls.cmake \
CMake/Macros.cmake \ CMake/Macros.cmake \
CMake/OtherTests.cmake \ CMake/OtherTests.cmake \
CMake/PickyWarnings.cmake \ CMake/PickyWarnings.cmake \

View File

@ -689,6 +689,9 @@ ${SIZEOF_TIME_T_CODE}
/* if BearSSL is enabled */ /* if BearSSL is enabled */
#cmakedefine USE_BEARSSL 1 #cmakedefine USE_BEARSSL 1
/* if rustls is enabled */
#cmakedefine USE_RUSTLS 1
/* if wolfSSL is enabled */ /* if wolfSSL is enabled */
#cmakedefine USE_WOLFSSL 1 #cmakedefine USE_WOLFSSL 1