mirror of
https://github.com/libssh2/libssh2.git
synced 2025-07-01 11:01:40 +03:00
CMake: - Find*: set `<modulename>_FOUND` for compatibility when found via `pkg-config`. E.g. `MbedTLS_FOUND`. `find_package_handle_standard_args()` sets both `<MODULENAME>_FOUND` and `<Modulename>_FOUND` when detecting the dependency. Some CMake code relies on this and 3rd-party code may rely on it too. Make sure to set the latter variant when detecting the dependency via `pkg-config`, where we don't call `find_package_handle_standard_args()`. CMake sets these variable to `TRUE` (not `ON` or `1`). Replicate this for compatibility. - libssh2-config.cmake: inherit default `LIBSSH2_USE_PKGCONFIG`. Follow-up toa3aa6b4ca8
#1525 - document variables consumed by `libssh2-config.cmake.in`. - `libssh2-config.cmake`: fix to link to non-OpenSSL crypto backends. This is most likely not how this is supposed to be done, but better than failing. What's the canonical way to do this, and how OpenSSL and zlib does it is yet to be figured out. - use `ZLIB::ZLIB` to reference zlib. - use `IN ITEMS` where missed. - harmonize variable dump output formats. CMake `find_package` integration tests: - extend to all crypto backends (was: OpenSSL). - show libssh2 variables set by `find_package()`. - stop building examples and tests for the consumed package. For performance. - enable zlib, for coverage. - be verbose when building the test targets. ci/GHA: - add packaged mbedTLS (2.x) build to Linux matrix. - alphasort some tests. Follow-up tod9c2e550ca
#1460 Follow-up to82b09f9b3a
#1322 Closes #1534
65 lines
2.2 KiB
CMake
65 lines
2.2 KiB
CMake
# Copyright (C) The libssh2 project and its contributors.
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
###########################################################################
|
|
# Find the wolfSSL library
|
|
#
|
|
# Input variables:
|
|
#
|
|
# - `WOLFSSL_INCLUDE_DIR`: The wolfSSL include directory.
|
|
# - `WOLFSSL_LIBRARY`: Path to `wolfssl` library.
|
|
#
|
|
# 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_PC_REQUIRES`: The wolfSSL pkg-config packages.
|
|
# - `WOLFSSL_CFLAGS`: Required compiler flags.
|
|
# - `WOLFSSL_VERSION`: Version of wolfSSL.
|
|
|
|
set(WOLFSSL_PC_REQUIRES "wolfssl")
|
|
|
|
if(LIBSSH2_USE_PKGCONFIG AND
|
|
NOT DEFINED WOLFSSL_INCLUDE_DIR AND
|
|
NOT DEFINED WOLFSSL_LIBRARY)
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(WOLFSSL ${WOLFSSL_PC_REQUIRES})
|
|
endif()
|
|
|
|
if(WOLFSSL_FOUND)
|
|
set(WolfSSL_FOUND TRUE)
|
|
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/options.h")
|
|
find_library(WOLFSSL_LIBRARY NAMES "wolfssl")
|
|
|
|
unset(WOLFSSL_VERSION CACHE)
|
|
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()
|