diff --git a/libssh2/cmake/FindMbedTLS.cmake b/libssh2/cmake/FindMbedTLS.cmake index 26bc56557..906dcccbf 100644 --- a/libssh2/cmake/FindMbedTLS.cmake +++ b/libssh2/cmake/FindMbedTLS.cmake @@ -1,69 +1,62 @@ -# Copyright (C) The libssh2 project and its contributors. -# SPDX-License-Identifier: BSD-3-Clause +# - Try to find mbedTLS +# Once done this will define # -########################################################################### -# Find the mbedtls library -# -# Input variables: -# -# MBEDTLS_INCLUDE_DIR The mbedtls include directory -# MBEDCRYPTO_LIBRARY Path to mbedcrypto library -# -# Result variables: -# -# MBEDTLS_FOUND System has mbedtls -# MBEDTLS_INCLUDE_DIRS The mbedtls include directories -# MBEDTLS_LIBRARIES The mbedtls library names -# MBEDTLS_LIBRARY_DIRS The mbedtls library directories -# MBEDTLS_CFLAGS Required compiler flags -# MBEDTLS_VERSION Version of mbedtls +# Read-Only variables +# MBEDTLS_FOUND - system has mbedTLS +# MBEDTLS_INCLUDE_DIR - the mbedTLS include directory +# MBEDTLS_LIBRARY_DIR - the mbedTLS library directory +# MBEDTLS_LIBRARIES - Link these to use mbedTLS +# MBEDTLS_LIBRARY - path to mbedTLS library +# MBEDX509_LIBRARY - path to mbedTLS X.509 library +# MBEDCRYPTO_LIBRARY - path to mbedTLS Crypto library -if((UNIX OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) AND - NOT DEFINED MBEDTLS_INCLUDE_DIR AND - NOT DEFINED MBEDCRYPTO_LIBRARY) - find_package(PkgConfig QUIET) - pkg_check_modules(MBEDTLS "mbedcrypto") +find_path(MBEDTLS_INCLUDE_DIR mbedtls/version.h) + +if(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES) + # Already in cache, be silent + set(MBEDTLS_FIND_QUIETLY TRUE) +endif() + +find_library(MBEDTLS_LIBRARY NAMES mbedtls libmbedtls libmbedx509) +find_library(MBEDX509_LIBRARY NAMES mbedx509 libmbedx509) +find_library(MBEDCRYPTO_LIBRARY NAMES mbedcrypto libmbedcrypto) + +if(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY) + set(MBEDTLS_FOUND TRUE) endif() if(MBEDTLS_FOUND) - string(REPLACE ";" " " MBEDTLS_CFLAGS "${MBEDTLS_CFLAGS}") - message(STATUS "Found MbedTLS (via pkg-config): ${MBEDTLS_INCLUDE_DIRS} (found version \"${MBEDTLS_VERSION}\")") -else() - find_path(MBEDTLS_INCLUDE_DIR NAMES "mbedtls/version.h") - find_library(MBEDCRYPTO_LIBRARY NAMES "mbedcrypto" "libmbedcrypto") + # split mbedTLS into -L and -l linker options, so we can set them for pkg-config + get_filename_component(MBEDTLS_LIBRARY_DIR ${MBEDTLS_LIBRARY} PATH) + get_filename_component(MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY} NAME_WE) + get_filename_component(MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY} NAME_WE) + get_filename_component(MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY} NAME_WE) + string(REGEX REPLACE "^lib" "" MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY_FILE}) + string(REGEX REPLACE "^lib" "" MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY_FILE}) + string(REGEX REPLACE "^lib" "" MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY_FILE}) + set(MBEDTLS_LIBRARIES "-L${MBEDTLS_LIBRARY_DIR} -l${MBEDTLS_LIBRARY_FILE} -l${MBEDX509_LIBRARY_FILE} -l${MBEDCRYPTO_LIBRARY_FILE}") - if(MBEDTLS_INCLUDE_DIR) - if(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") # 3.x - set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/build_info.h") - elseif(EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") # 2.x - set(_version_header "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h") - else() - unset(_version_header) - endif() - if(_version_header) - set(_version_regex "#[\t ]*define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"([0-9.]+)\"") - file(STRINGS "${_version_header}" _version_str REGEX "${_version_regex}") - string(REGEX REPLACE "${_version_regex}" "\\1" _version_str "${_version_str}") - set(MBEDTLS_VERSION "${_version_str}") - unset(_version_regex) - unset(_version_str) - unset(_version_header) + if(NOT MBEDTLS_FIND_QUIETLY) + message(STATUS "Found mbedTLS:") + file(READ ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLSCONTENT) + string(REGEX MATCH "MBEDTLS_VERSION_STRING +\"[0-9|.]+\"" MBEDTLSMATCH ${MBEDTLSCONTENT}) + if(MBEDTLSMATCH) + string(REGEX REPLACE "MBEDTLS_VERSION_STRING +\"([0-9|.]+)\"" "\\1" MBEDTLS_VERSION ${MBEDTLSMATCH}) + message(STATUS " version ${MBEDTLS_VERSION}") endif() + message(STATUS " TLS: ${MBEDTLS_LIBRARY}") + message(STATUS " X509: ${MBEDX509_LIBRARY}") + message(STATUS " Crypto: ${MBEDCRYPTO_LIBRARY}") endif() - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(MbedTLS - REQUIRED_VARS - MBEDTLS_INCLUDE_DIR - MBEDCRYPTO_LIBRARY - VERSION_VAR - MBEDTLS_VERSION - ) - - if(MBEDTLS_FOUND) - set(MBEDTLS_INCLUDE_DIRS ${MBEDTLS_INCLUDE_DIR}) - set(MBEDTLS_LIBRARIES ${MBEDCRYPTO_LIBRARY}) - endif() - - mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDCRYPTO_LIBRARY) +elseif(MBEDTLS_FIND_REQUIRED) + message(FATAL_ERROR "Could not find mbedTLS") endif() + +mark_as_advanced( + MBEDTLS_INCLUDE_DIR + MBEDTLS_LIBRARY_DIR + MBEDTLS_LIBRARIES + MBEDTLS_LIBRARY + MBEDX509_LIBRARY + MBEDCRYPTO_LIBRARY +) diff --git a/libssh2/cmake/FindWolfSSL.cmake b/libssh2/cmake/FindWolfSSL.cmake index f66a59dfe..47e1bbad3 100644 --- a/libssh2/cmake/FindWolfSSL.cmake +++ b/libssh2/cmake/FindWolfSSL.cmake @@ -1,59 +1,41 @@ -# 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_CFLAGS Required compiler flags -# WOLFSSL_VERSION Version of wolfssl +# - Try to find wolfssl +# Once done this will define +# WOLFSSL_FOUND - System has wolfssl +# WOLFSSL_INCLUDE_DIR - The wolfssl include directories +# WOLFSSL_LIBRARIES - The libraries needed to use wolfssl -if((UNIX OR VCPKG_TOOLCHAIN OR (MINGW AND NOT CMAKE_CROSSCOMPILING)) AND - NOT DEFINED WOLFSSL_INCLUDE_DIR AND - NOT DEFINED WOLFSSL_LIBRARY) - find_package(PkgConfig QUIET) - pkg_check_modules(WOLFSSL "wolfssl") +find_package(PkgConfig QUIET) +pkg_check_modules(PC_WOLFSSL QUIET wolfssl) + +find_path(WOLFSSL_INCLUDE_DIR + NAMES wolfssl/ssl.h + HINTS ${PC_WOLFSSL_INCLUDE_DIRS} +) +find_library(WOLFSSL_LIBRARY + NAMES wolfssl + HINTS ${PC_WOLFSSL_LIBRARY_DIRS} +) + +if(WOLFSSL_INCLUDE_DIR) + set(_version_regex "^#define[ \t]+LIBWOLFSSL_VERSION_STRING[ \t]+\"([^\"]+)\".*") + file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" + WOLFSSL_VERSION REGEX "${_version_regex}") + string(REGEX REPLACE "${_version_regex}" "\\1" + WOLFSSL_VERSION "${WOLFSSL_VERSION}") + unset(_version_regex) endif() +include(FindPackageHandleStandardArgs) +# handle the QUIETLY and REQUIRED arguments and set WOLFSSL_FOUND +# to TRUE if all listed variables are TRUE and the requested version +# matches. +find_package_handle_standard_args(wolfssl REQUIRED_VARS + WOLFSSL_LIBRARY WOLFSSL_INCLUDE_DIR + VERSION_VAR WOLFSSL_VERSION) + 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/options.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) + set(WOLFSSL_LIBRARIES ${WOLFSSL_LIBRARY}) + set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR}) endif() + +mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY) diff --git a/libssh2/win32/libssh2.vcxproj b/libssh2/win32/libssh2.vcxproj index e604b4505..99ebcd68d 100644 --- a/libssh2/win32/libssh2.vcxproj +++ b/libssh2/win32/libssh2.vcxproj @@ -60,7 +60,7 @@ true Level3 ..\..\libz;..\..\..\nmap-mswin32-aux\OpenSSL\include;..\win32;..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;LIBSSH2_WIN32;LIBSSH2_OPENSSL;_LIB;LIBSSH2_LIBRARY;%(PreprocessorDefinitions) + WIN32;NDEBUG;LIBSSH2_WIN32;LIBSSH2_OPENSSL;_LIB;%(PreprocessorDefinitions) .\Release_dll\ .\Release_dll\libssh2.pch .\Release_dll\ @@ -103,7 +103,7 @@ true Level3 false - EditAndContinue + ProgramDatabase ..\..\..\nmap-mswin32-aux\OpenSSL\include;..\..\libz;..\win32;..\include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;LIBSSH2_WIN32;LIBSSH2_OPENSSL;_LIB;LIBSSH2DEBUG;%(PreprocessorDefinitions) .\Debug_dll\ @@ -146,6 +146,8 @@ + + @@ -153,14 +155,12 @@ - - - + @@ -175,9 +175,11 @@ + + @@ -186,6 +188,7 @@ +