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 @@
+