mirror of
https://github.com/curl/curl.git
synced 2025-04-18 16:30:45 +08:00
cmake: detect nettle
when building with GnuTLS
`nettle` is a direct dependency of curl, when building with GnuTLS. Add a new `Find` module to detect it. Also: - GHA/macos: drop `nettle` hack no longer necessary. - add `nettle` to `libcurl.pc`. - also add `nettle` to `libcurl.pc` in autotools builds. Follow-up to 781242ffa44a9f9b95b6da5ac5a1bf6372ec6257 #11967 Closes #14285
This commit is contained in:
parent
5f6b9244ce
commit
669ce42275
4
.github/workflows/macos.yml
vendored
4
.github/workflows/macos.yml
vendored
@ -294,8 +294,8 @@ jobs:
|
||||
generate: -DCURL_USE_WOLFSSL=ON -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
||||
macos-version-min: '10.15'
|
||||
- name: 'GnuTLS !ldap'
|
||||
install: gnutls
|
||||
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON -DCMAKE_SHARED_LINKER_FLAGS=-L$(brew --prefix nettle)/lib -DCMAKE_EXE_LINKER_FLAGS=-L$(brew --prefix nettle)/lib
|
||||
install: gnutls nettle
|
||||
generate: -DCURL_USE_GNUTLS=ON -DCURL_USE_OPENSSL=OFF -DCURL_DISABLE_LDAP=ON -DCURL_DISABLE_LDAPS=ON
|
||||
macos-version-min: '10.15'
|
||||
exclude:
|
||||
- { compiler: llvm@15, build: { macos-version-min: '10.15' } }
|
||||
|
77
CMake/FindNettle.cmake
Normal file
77
CMake/FindNettle.cmake
Normal file
@ -0,0 +1,77 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# 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
|
||||
#
|
||||
###########################################################################
|
||||
# - Try to find the nettle library
|
||||
# Once done this will define
|
||||
#
|
||||
# NETTLE_FOUND - system has nettle
|
||||
# NETTLE_INCLUDE_DIRS - nettle include directories
|
||||
# NETTLE_LIBRARIES - nettle library names
|
||||
|
||||
if(UNIX)
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PKG_CONFIG_FOUND)
|
||||
pkg_check_modules(NETTLE "nettle")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NETTLE_FOUND)
|
||||
set(NETTLE_LIBRARIES ${NETTLE_LINK_LIBRARIES})
|
||||
else()
|
||||
find_path(NETTLE_INCLUDE_DIR NAMES "nettle/sha2.h")
|
||||
find_library(NETTLE_LIBRARY NAMES "nettle")
|
||||
|
||||
if(NETTLE_INCLUDE_DIR)
|
||||
if(EXISTS "${NETTLE_INCLUDE_DIR}/nettle/version.h")
|
||||
set(_version_regex_major "^#define[ \t]+NETTLE_VERSION_MAJOR[ \t]+([0-9]+).*")
|
||||
set(_version_regex_minor "^#define[ \t]+NETTLE_VERSION_MINOR[ \t]+([0-9]+).*")
|
||||
file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h"
|
||||
_version_major REGEX "${_version_regex_major}")
|
||||
file(STRINGS "${NETTLE_INCLUDE_DIR}/nettle/version.h"
|
||||
_version_minor REGEX "${_version_regex_minor}")
|
||||
string(REGEX REPLACE "${_version_regex_major}" "\\1" _version_major "${_version_major}")
|
||||
string(REGEX REPLACE "${_version_regex_minor}" "\\1" _version_minor "${_version_minor}")
|
||||
unset(_version_regex_major)
|
||||
unset(_version_regex_minor)
|
||||
set(NETTLE_VERSION "${_version_major}.${_version_minor}")
|
||||
unset(_version_major)
|
||||
unset(_version_minor)
|
||||
else()
|
||||
set(NETTLE_VERSION "0.0")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args("nettle"
|
||||
REQUIRED_VARS
|
||||
NETTLE_INCLUDE_DIR
|
||||
NETTLE_LIBRARY
|
||||
VERSION_VAR NETTLE_VERSION)
|
||||
|
||||
if(NETTLE_FOUND)
|
||||
set(NETTLE_INCLUDE_DIRS ${NETTLE_INCLUDE_DIR})
|
||||
set(NETTLE_LIBRARIES ${NETTLE_LIBRARY})
|
||||
endif()
|
||||
|
||||
mark_as_advanced(NETTLE_INCLUDE_DIR NETTLE_LIBRARY)
|
||||
endif()
|
@ -541,11 +541,12 @@ endif()
|
||||
|
||||
if(CURL_USE_GNUTLS)
|
||||
find_package(GnuTLS REQUIRED)
|
||||
find_package(nettle REQUIRED)
|
||||
set(SSL_ENABLED ON)
|
||||
set(USE_GNUTLS ON)
|
||||
list(APPEND CURL_LIBS ${GNUTLS_LIBRARIES} "nettle")
|
||||
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "gnutls")
|
||||
include_directories(${GNUTLS_INCLUDE_DIRS})
|
||||
list(APPEND CURL_LIBS ${GNUTLS_LIBRARIES} ${NETTLE_LIBRARIES})
|
||||
list(APPEND LIBCURL_PC_REQUIRES_PRIVATE "gnutls" "nettle")
|
||||
include_directories(${GNUTLS_INCLUDE_DIRS} ${NETTLE_INCLUDE_DIRS})
|
||||
|
||||
if(CURL_DEFAULT_SSL_BACKEND AND CURL_DEFAULT_SSL_BACKEND STREQUAL "gnutls")
|
||||
set(valid_default_ssl_backend TRUE)
|
||||
|
@ -126,7 +126,7 @@ if test "x$OPT_GNUTLS" != xno; then
|
||||
AC_MSG_NOTICE([Added $gtlslib to CURL_LIBRARY_PATH])
|
||||
fi
|
||||
fi
|
||||
LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gnutls"
|
||||
LIBCURL_PC_REQUIRES_PRIVATE="$LIBCURL_PC_REQUIRES_PRIVATE gnutls nettle"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user