aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/libssh/CONTROL4
-rw-r--r--ports/mbedtls/CONTROL6
-rwxr-xr-xports/mbedtls/enable-pthread.patch98
-rw-r--r--ports/mbedtls/portfile.cmake15
-rw-r--r--ports/mbedtls/vcpkg-cmake-wrapper.cmake29
5 files changed, 147 insertions, 5 deletions
diff --git a/ports/libssh/CONTROL b/ports/libssh/CONTROL
index 9b7a16004..ada47ad87 100644
--- a/ports/libssh/CONTROL
+++ b/ports/libssh/CONTROL
@@ -1,5 +1,5 @@
Source: libssh
-Version: 0.9.3
+Version: 0.9.3-1
Homepage: https://www.libssh.org/
Description: libssh is a multiplatform C library implementing the SSHv2 protocol on client and server side
Default-Features: crypto
@@ -10,7 +10,7 @@ Build-Depends: libssh[mbedtls]
Description: Default crypto backend
Feature: mbedtls
-Build-Depends: mbedtls
+Build-Depends: mbedtls[pthreads]
Description: Crypto support (mbedTLS)
Feature: openssl
diff --git a/ports/mbedtls/CONTROL b/ports/mbedtls/CONTROL
index 09562f001..5ae5bf26b 100644
--- a/ports/mbedtls/CONTROL
+++ b/ports/mbedtls/CONTROL
@@ -1,4 +1,8 @@
Source: mbedtls
-Version: 2.16.3
+Version: 2.16.3-1
Homepage: https://github.com/ARMmbed/mbedtls
Description: An open source, portable, easy to use, readable and flexible SSL library
+
+Feature: pthreads
+Build-Depends: pthreads (windows)
+Description: Multi-threading support
diff --git a/ports/mbedtls/enable-pthread.patch b/ports/mbedtls/enable-pthread.patch
new file mode 100755
index 000000000..9a45e50bd
--- /dev/null
+++ b/ports/mbedtls/enable-pthread.patch
@@ -0,0 +1,98 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5f7d0d886..d65cfeb2b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -7,6 +7,7 @@ endif()
+
+ option(USE_PKCS11_HELPER_LIBRARY "Build mbed TLS with the pkcs11-helper library." OFF)
+ option(ENABLE_ZLIB_SUPPORT "Build mbed TLS with zlib library." OFF)
++option(ENABLE_PTHREAD "Build mbed TLS with pthread" OFF)
+
+ option(ENABLE_PROGRAMS "Build mbed TLS programs." ON)
+
+@@ -174,6 +175,7 @@ else()
+ endif()
+
+ include_directories(include/)
++include_directories(${CMAKE_CURRENT_BINARY_DIR}/include/)
+
+ if(ENABLE_ZLIB_SUPPORT)
+ find_package(ZLIB)
+@@ -183,6 +185,17 @@ if(ENABLE_ZLIB_SUPPORT)
+ endif(ZLIB_FOUND)
+ endif(ENABLE_ZLIB_SUPPORT)
+
++if(ENABLE_PTHREAD)
++ if(WIN32)
++ find_package(pthreads_windows REQUIRED)
++ include_directories(${PThreads4W_INCLUDE_DIR})
++ else()
++ set(CMAKE_THREAD_PREFER_PTHREAD ON)
++ find_package(Threads REQUIRED)
++ endif()
++ set(LINK_WITH_PTHREAD ON)
++endif()
++
+ add_subdirectory(library)
+ add_subdirectory(include)
+
+diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
+index c2f2bd4e6..e110cd50c 100644
+--- a/include/CMakeLists.txt
++++ b/include/CMakeLists.txt
+@@ -1,9 +1,13 @@
+ option(INSTALL_MBEDTLS_HEADERS "Install mbed TLS headers." ON)
+
++configure_file(mbedtls/config_threading.h.in mbedtls/config_threading.h)
++
+ if(INSTALL_MBEDTLS_HEADERS)
+
+ file(GLOB headers "mbedtls/*.h")
+
++ set(headers ${headers} ${CMAKE_CURRENT_BINARY_DIR}/mbedtls/config_threading.h)
++
+ install(FILES ${headers}
+ DESTINATION include/mbedtls
+ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
+diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
+index 5df962ef6..f205bf599 100644
+--- a/include/mbedtls/config.h
++++ b/include/mbedtls/config.h
+@@ -26,6 +26,8 @@
+ * This file is part of mbed TLS (https://tls.mbed.org)
+ */
+
++#include "mbedtls/config_threading.h"
++
+ #ifndef MBEDTLS_CONFIG_H
+ #define MBEDTLS_CONFIG_H
+
+diff --git a/include/mbedtls/config_threading.h.in b/include/mbedtls/config_threading.h.in
+new file mode 100644
+index 000000000..f6286ed9c
+--- /dev/null
++++ b/include/mbedtls/config_threading.h.in
+@@ -0,0 +1,6 @@
++#cmakedefine ENABLE_PTHREAD
++
++#ifdef ENABLE_PTHREAD
++#define MBEDTLS_THREADING_C
++#define MBEDTLS_THREADING_PTHREAD
++#endif
+diff --git a/library/CMakeLists.txt b/library/CMakeLists.txt
+index 9330cff9b..54a815ee7 100644
+--- a/library/CMakeLists.txt
++++ b/library/CMakeLists.txt
+@@ -128,7 +128,11 @@ if(ENABLE_ZLIB_SUPPORT)
+ endif(ENABLE_ZLIB_SUPPORT)
+
+ if(LINK_WITH_PTHREAD)
+- set(libs ${libs} pthread)
++ if(WIN32)
++ set(libs ${libs} ${PThreads4W_LIBRARY})
++ else()
++ set(libs ${libs} pthread)
++ endif()
+ endif()
+
+ if (NOT USE_STATIC_MBEDTLS_LIBRARY AND NOT USE_SHARED_MBEDTLS_LIBRARY)
diff --git a/ports/mbedtls/portfile.cmake b/ports/mbedtls/portfile.cmake
index cd32e2171..4735a6adb 100644
--- a/ports/mbedtls/portfile.cmake
+++ b/ports/mbedtls/portfile.cmake
@@ -1,5 +1,3 @@
-include(vcpkg_common_functions)
-
set(VCPKG_LIBRARY_LINKAGE static)
vcpkg_from_github(
@@ -8,12 +6,21 @@ vcpkg_from_github(
REF mbedtls-2.16.3
SHA512 3d798f7de9c33325585d5d7c8608cc16acdcf42c246d283b2fb8a29f5e419f2899342965ff297432ef2ab20c91eaee28d6ca53349f5a68b0a4fd29d6905fc64c
HEAD_REF master
+ PATCHES
+ enable-pthread.patch
+)
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ pthreads ENABLE_PTHREAD
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
+ ${FEATURE_OPTIONS}
-DENABLE_TESTING=OFF
-DENABLE_PROGRAMS=OFF
)
@@ -24,4 +31,8 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/mbedtls RENAME copyright)
+if(WIN32 AND pthreads IN_LIST FEATURES)
+ file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/mbedtls)
+endif()
+
vcpkg_copy_pdbs()
diff --git a/ports/mbedtls/vcpkg-cmake-wrapper.cmake b/ports/mbedtls/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..40a0bccb4
--- /dev/null
+++ b/ports/mbedtls/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,29 @@
+include(FindPackageHandleStandardArgs)
+
+find_path(MBEDTLS_INCLUDE_DIR mbedtls/ssl.h)
+
+find_library(MBEDTLS_CRYPTO_LIBRARY mbedcrypto)
+find_package(pthreads_windows QUIET)
+set(MBEDTLS_CRYPTO_LIBRARY ${MBEDTLS_CRYPTO_LIBRARY} ${PThreads4W_LIBRARY})
+find_library(MBEDTLS_X509_LIBRARY mbedx509)
+find_library(MBEDTLS_TLS_LIBRARY mbedtls)
+set(MBEDTLS_LIBRARIES ${MBEDTLS_CRYPTO_LIBRARY} ${MBEDTLS_X509_LIBRARY} ${MBEDTLS_TLS_LIBRARY})
+
+if (MBEDTLS_INCLUDE_DIR AND EXISTS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h")
+ file(
+ STRINGS ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h _MBEDTLS_VERLINE
+ REGEX "^#define[ \t]+MBEDTLS_VERSION_STRING[\t ].*"
+ )
+ string(REGEX REPLACE ".*MBEDTLS_VERSION_STRING[\t ]+\"(.*)\"" "\\1" MBEDTLS_VERSION ${_MBEDTLS_VERLINE})
+endif()
+
+find_package_handle_standard_args(
+ mbedTLS
+ REQUIRED_VARS
+ MBEDTLS_INCLUDE_DIR
+ MBEDTLS_CRYPTO_LIBRARY
+ MBEDTLS_X509_LIBRARY
+ MBEDTLS_TLS_LIBRARY
+ PThreads4W_FOUND
+ VERSION_VAR MBEDTLS_VERSION
+)