diff options
Diffstat (limited to 'vcpkg/ports/mbedtls')
| -rwxr-xr-x | vcpkg/ports/mbedtls/enable-pthread.patch | 54 | ||||
| -rw-r--r-- | vcpkg/ports/mbedtls/portfile.cmake | 49 | ||||
| -rw-r--r-- | vcpkg/ports/mbedtls/usage | 18 | ||||
| -rw-r--r-- | vcpkg/ports/mbedtls/vcpkg-cmake-wrapper.cmake | 23 | ||||
| -rw-r--r-- | vcpkg/ports/mbedtls/vcpkg.json | 28 |
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" + } + ] + } + } +} |