From: Jan Venekamp <1422460+jan2000@users.noreply.github.com> Date: Tue, 13 Aug 2024 22:05:44 +0000 (+0200) Subject: cmake: add rustls X-Git-Tag: curl-8_10_0~260 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed76a23fccc1e57028f6d178fccba617b53e36ee;p=thirdparty%2Fcurl.git cmake: add rustls Closes #14534 --- diff --git a/.github/labeler.yml b/.github/labeler.yml index 175176e14a..2554222572 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -236,7 +236,7 @@ TLS: - all: - changed-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: - all: diff --git a/CMake/Findrustls.cmake b/CMake/Findrustls.cmake new file mode 100644 index 0000000000..a8d40a50ac --- /dev/null +++ b/CMake/Findrustls.cmake @@ -0,0 +1,48 @@ +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) Daniel Stenberg, , 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) diff --git a/CMakeLists.txt b/CMakeLists.txt index 36616b0b0b..0d248a9183 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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_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_RUSTLS "Enable rustls for SSL/TLS" OFF CURL_ENABLE_SSL OFF) set(_openssl_default ON) 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_WOLFSSL CURL_USE_GNUTLS + CURL_USE_RUSTLS ) if(_enabled_ssl_options_count GREATER 1) set(CURL_WITH_MULTI_SSL ON) @@ -614,6 +616,20 @@ if(CURL_USE_GNUTLS) 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) message(FATAL_ERROR "CURL_DEFAULT_SSL_BACKEND '${CURL_DEFAULT_SSL_BACKEND}' not enabled.") endif() @@ -1866,6 +1882,7 @@ if(NOT CURL_DISABLE_INSTALL) _add_if("BearSSL" _ssl_enabled AND USE_BEARSSL) _add_if("wolfSSL" _ssl_enabled AND USE_WOLFSSL) _add_if("GnuTLS" _ssl_enabled AND USE_GNUTLS) + _add_if("rustls" _ssl_enabled AND USE_RUSTLS) if(_items) if(NOT CMAKE_VERSION VERSION_LESS 3.13) diff --git a/Makefile.am b/Makefile.am index 0a25f213b8..ee844268fa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,6 +47,7 @@ CMAKE_DIST = \ CMake/FindQUICHE.cmake \ CMake/FindWolfSSL.cmake \ CMake/FindZstd.cmake \ + CMake/Findrustls.cmake \ CMake/Macros.cmake \ CMake/OtherTests.cmake \ CMake/PickyWarnings.cmake \ diff --git a/lib/curl_config.h.cmake b/lib/curl_config.h.cmake index aa89c600dd..611e8dcffb 100644 --- a/lib/curl_config.h.cmake +++ b/lib/curl_config.h.cmake @@ -689,6 +689,9 @@ ${SIZEOF_TIME_T_CODE} /* if BearSSL is enabled */ #cmakedefine USE_BEARSSL 1 +/* if rustls is enabled */ +#cmakedefine USE_RUSTLS 1 + /* if wolfSSL is enabled */ #cmakedefine USE_WOLFSSL 1