aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/mbedtls
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/mbedtls
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/mbedtls')
-rwxr-xr-xvcpkg/ports/mbedtls/enable-pthread.patch54
-rw-r--r--vcpkg/ports/mbedtls/portfile.cmake49
-rw-r--r--vcpkg/ports/mbedtls/usage18
-rw-r--r--vcpkg/ports/mbedtls/vcpkg-cmake-wrapper.cmake23
-rw-r--r--vcpkg/ports/mbedtls/vcpkg.json28
5 files changed, 172 insertions, 0 deletions
diff --git a/vcpkg/ports/mbedtls/enable-pthread.patch b/vcpkg/ports/mbedtls/enable-pthread.patch
new file mode 100755
index 0000000..590386d
--- /dev/null
+++ b/vcpkg/ports/mbedtls/enable-pthread.patch
@@ -0,0 +1,54 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2eba16d..a46cb3d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -123,7 +123,17 @@ endif()
+ # We now potentially need to link all executables against PThreads, if available
+ set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
+ set(THREADS_PREFER_PTHREAD_FLAG TRUE)
+-find_package(Threads)
++if(NOT LINK_WITH_PTHREAD)
++ set(CMAKE_DISABLE_FIND_PACKAGE_Threads ON)
++elseif(WIN32 AND NOT MINGW)
++ find_package(PThreads4W REQUIRED)
++ set(CMAKE_THREAD_LIBS_INIT PThreads4W::PThreads4W)
++ add_definitions(-DLINK_WITH_PTHREAD)
++else()
++ find_package(Threads REQUIRED)
++ set(CMAKE_THREAD_LIBS_INIT Threads::Threads)
++ add_definitions(-DLINK_WITH_PTHREAD)
++endif()
+
+ # If this is the root project add longer list of available CMAKE_BUILD_TYPE values
+ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+diff --git a/cmake/MbedTLSConfig.cmake.in b/cmake/MbedTLSConfig.cmake.in
+index b65bbab..5919c37 100644
+--- a/cmake/MbedTLSConfig.cmake.in
++++ b/cmake/MbedTLSConfig.cmake.in
+@@ -1,3 +1,11 @@
+ @PACKAGE_INIT@
+
++if("@LINK_WITH_PTHREAD@")
++ include(CMakeFindDependencyMacro)
++ if(WIN32 AND NOT MINGW)
++ find_dependency(PThreads4W)
++ else()
++ find_dependency(Threads)
++ endif()
++endif()
+ include("${CMAKE_CURRENT_LIST_DIR}/MbedTLSTargets.cmake")
+diff --git a/include/mbedtls/mbedtls_config.h b/include/mbedtls/mbedtls_config.h
+index 3592141..174cabc 100644
+--- a/include/mbedtls/mbedtls_config.h
++++ b/include/mbedtls/mbedtls_config.h
+@@ -2091,6 +2091,10 @@
+ * Uncomment this to enable pthread mutexes.
+ */
+ //#define MBEDTLS_THREADING_PTHREAD
++#ifdef LINK_WITH_PTHREAD
++#define MBEDTLS_THREADING_C
++#define MBEDTLS_THREADING_PTHREAD
++#endif
+
+ /**
+ * \def MBEDTLS_USE_PSA_CRYPTO
diff --git a/vcpkg/ports/mbedtls/portfile.cmake b/vcpkg/ports/mbedtls/portfile.cmake
new file mode 100644
index 0000000..35c1d5b
--- /dev/null
+++ b/vcpkg/ports/mbedtls/portfile.cmake
@@ -0,0 +1,49 @@
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # https://github.com/Mbed-TLS/mbedtls/issues/470
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO Mbed-TLS/mbedtls
+ REF "v${VERSION}"
+ SHA512 67c0ec7824e1ffa3e4f8d02814201776f8c1b2dc0fb8f1f9246495e27a2c03b8c248eff00e8da3e206625b7d0aa82d38cf7ddfd9ed8b4623375b05dc1ecc0677
+ HEAD_REF development
+ PATCHES
+ enable-pthread.patch
+)
+file(WRITE "${SOURCE_PATH}/framework/CMakeLists.txt" "# empty placeholder")
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ pthreads LINK_WITH_PTHREAD
+)
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" USE_SHARED_MBEDTLS_LIBRARY)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" USE_STATIC_MBEDTLS_LIBRARY)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DENABLE_TESTING=OFF
+ -DENABLE_PROGRAMS=OFF
+ -DMBEDTLS_FATAL_WARNINGS=FALSE
+ -DUSE_SHARED_MBEDTLS_LIBRARY=${USE_SHARED_MBEDTLS_LIBRARY}
+ -DUSE_STATIC_MBEDTLS_LIBRARY=${USE_STATIC_MBEDTLS_LIBRARY}
+ OPTIONS_DEBUG
+ -DINSTALL_MBEDTLS_HEADERS=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/MbedTLS")
+
+if(LINK_WITH_PTHREAD)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/mbedtls/mbedtls_config.h" "#ifdef LINK_WITH_PTHREAD" "#if 1")
+ file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+endif()
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/mbedtls/usage b/vcpkg/ports/mbedtls/usage
new file mode 100644
index 0000000..e6dd9f6
--- /dev/null
+++ b/vcpkg/ports/mbedtls/usage
@@ -0,0 +1,18 @@
+mbedtls provides CMake targets:
+
+ find_package(MbedTLS CONFIG REQUIRED)
+ # everything
+ target_link_libraries(main PRIVATE MbedTLS::mbedtls)
+ # X.509 certificate manipulation
+ target_link_libraries(main PRIVATE MbedTLS::mbedx509)
+ # cryptographic primitives
+ target_link_libraries(main PRIVATE MbedTLS::mbedcrypto)
+
+mbedtls provides pkg-config modules:
+
+ # everything
+ mbedtls
+ # X.509 certificate manipulation
+ mbedx509
+ # cryptographic primitives
+ mbedcrypto
diff --git a/vcpkg/ports/mbedtls/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/mbedtls/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 0000000..9d9be2f
--- /dev/null
+++ b/vcpkg/ports/mbedtls/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,23 @@
+_find_package(${ARGS})
+if(WIN32 AND NOT MINGW)
+ find_package(PThreads4W)
+ string(FIND "${MBEDTLS_CRYPTO_LIBRARY}" "${PThreads4W_LIBRARY}" pthreads_in_mbedtls)
+ if(pthreads_in_mbedtls EQUAL "-1")
+ list(APPEND MBEDTLS_CRYPTO_LIBRARY ${PThreads4W_LIBRARY})
+ endif()
+ string(FIND "${MBEDTLS_LIBRARIES}" "${PThreads4W_LIBRARY}" pthreads_in_mbedtls)
+ if(pthreads_in_mbedtls EQUAL "-1")
+ list(APPEND MBEDTLS_LIBRARIES ${PThreads4W_LIBRARY})
+ endif()
+else()
+ set(THREADS_PREFER_PTHREAD_FLAG 1)
+ find_package(Threads)
+ string(FIND "${MBEDTLS_CRYPTO_LIBRARY}" "${CMAKE_THREAD_LIBS_INIT}" pthreads_in_mbedtls)
+ if(pthreads_in_mbedtls EQUAL "-1")
+ list(APPEND MBEDTLS_CRYPTO_LIBRARY ${CMAKE_THREAD_LIBS_INIT})
+ endif()
+ string(FIND "${MBEDTLS_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}" pthreads_in_mbedtls)
+ if(pthreads_in_mbedtls EQUAL "-1")
+ list(APPEND MBEDTLS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
+ endif()
+endif()
diff --git a/vcpkg/ports/mbedtls/vcpkg.json b/vcpkg/ports/mbedtls/vcpkg.json
new file mode 100644
index 0000000..780335e
--- /dev/null
+++ b/vcpkg/ports/mbedtls/vcpkg.json
@@ -0,0 +1,28 @@
+{
+ "name": "mbedtls",
+ "version": "3.6.4",
+ "description": "An open source, portable, easy to use, readable and flexible SSL library",
+ "homepage": "https://www.trustedfirmware.org/projects/mbed-tls/",
+ "license": "Apache-2.0 OR GPL-2.0-or-later",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "pthreads": {
+ "description": "Multi-threading support",
+ "dependencies": [
+ {
+ "name": "pthreads",
+ "platform": "windows"
+ }
+ ]
+ }
+ }
+}