mirror of
https://github.com/curl/curl.git
synced 2025-03-07 15:27:17 +08:00
Also: - detect and add required system libraries for Rustls on macOS and non-Windows. - add Linux CMake jobs for the touched dependencies. Caveats: - MSH3 generates a broken `libmsh3.pc`, so needs manual config. Upstream PR: https://github.com/nibanks/msh3/pull/225 - Rustls `.pc` file missing, so needs manual config. An internal change worthy of mention is that we are using the lib path and name information returned by `pkg-config` as-is. Meaning the libname doesn't include the full path, like it's usual with native cmake detection. The path comes separately and needs to be rolled separately. For this we add it to targets via `link_directories()`. We also keep tab of them in `CURL_LIBDIRS` and use that in `libcurl.pc`. Feature checks also need to receive these paths. CMake doesn't offer a `CMAKE_REQUIRED_*` variable for this purpose, only a `CMAKE_REQUIRED_LINK_OPTIONS` accepting raw linker flags. Add a macro to convert a list of paths to linker options to solve it. wolfSSL requires this for now. Closes #15193
97 lines
3.4 KiB
CMake
97 lines
3.4 KiB
CMake
#***************************************************************************
|
|
# _ _ ____ _
|
|
# 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 wolfssl library
|
|
#
|
|
# Input variables:
|
|
#
|
|
# WOLFSSL_INCLUDE_DIR The wolfssl include directory
|
|
# WolfSSL_INCLUDE_DIR The wolfssl include directory (deprecated)
|
|
# WOLFSSL_LIBRARY Path to wolfssl library
|
|
# WolfSSL_LIBRARY Path to wolfssl library (deprecated)
|
|
#
|
|
# Result variables:
|
|
#
|
|
# WOLFSSL_FOUND System has wolfssl
|
|
# WOLFSSL_INCLUDE_DIRS The wolfssl include directories
|
|
# WOLFSSL_LIBRARIES The wolfssl library names
|
|
# WOLFSSL_LIBRARY_DIRS The wolfssl library directories
|
|
# WOLFSSL_CFLAGS Required compiler flags
|
|
# WOLFSSL_VERSION Version of wolfssl
|
|
|
|
if(DEFINED WolfSSL_INCLUDE_DIR AND NOT DEFINED WOLFSSL_INCLUDE_DIR)
|
|
message(WARNING "WolfSSL_INCLUDE_DIR is deprecated, use WOLFSSL_INCLUDE_DIR instead.")
|
|
set(WOLFSSL_INCLUDE_DIR "${WolfSSL_INCLUDE_DIR}")
|
|
endif()
|
|
if(DEFINED WolfSSL_LIBRARY AND NOT DEFINED WOLFSSL_LIBRARY)
|
|
message(WARNING "WolfSSL_LIBRARY is deprecated, use WOLFSSL_LIBRARY instead.")
|
|
set(WOLFSSL_LIBRARY "${WolfSSL_LIBRARY}")
|
|
endif()
|
|
|
|
if(CURL_USE_PKGCONFIG AND
|
|
NOT DEFINED WOLFSSL_INCLUDE_DIR AND
|
|
NOT DEFINED WOLFSSL_LIBRARY)
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(WOLFSSL "wolfssl")
|
|
endif()
|
|
|
|
if(WOLFSSL_FOUND)
|
|
string(REPLACE ";" " " WOLFSSL_CFLAGS "${WOLFSSL_CFLAGS}")
|
|
message(STATUS "Found WolfSSL (via pkg-config): ${WOLFSSL_INCLUDE_DIRS} (found version \"${WOLFSSL_VERSION}\")")
|
|
else()
|
|
find_path(WOLFSSL_INCLUDE_DIR NAMES "wolfssl/ssl.h")
|
|
find_library(WOLFSSL_LIBRARY NAMES "wolfssl")
|
|
|
|
if(WOLFSSL_INCLUDE_DIR AND EXISTS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h")
|
|
set(_version_regex "#[\t ]*define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"([^\"]*)\"")
|
|
file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" _version_str REGEX "${_version_regex}")
|
|
string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}")
|
|
set(WOLFSSL_VERSION "${_version_str}")
|
|
unset(_version_regex)
|
|
unset(_version_str)
|
|
endif()
|
|
|
|
include(FindPackageHandleStandardArgs)
|
|
find_package_handle_standard_args(WolfSSL
|
|
REQUIRED_VARS
|
|
WOLFSSL_INCLUDE_DIR
|
|
WOLFSSL_LIBRARY
|
|
VERSION_VAR
|
|
WOLFSSL_VERSION
|
|
)
|
|
|
|
if(WOLFSSL_FOUND)
|
|
set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR})
|
|
set(WOLFSSL_LIBRARIES ${WOLFSSL_LIBRARY})
|
|
endif()
|
|
|
|
mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY)
|
|
endif()
|
|
|
|
if(NOT WIN32)
|
|
find_library(_math_library "m")
|
|
if(_math_library)
|
|
list(APPEND WOLFSSL_LIBRARIES "m") # for log and pow
|
|
endif()
|
|
endif()
|