diff options
Diffstat (limited to 'vcpkg/ports/openvpn3')
| -rw-r--r-- | vcpkg/ports/openvpn3/dependencies.diff | 58 | ||||
| -rw-r--r-- | vcpkg/ports/openvpn3/mbedtls-compat.diff | 50 | ||||
| -rw-r--r-- | vcpkg/ports/openvpn3/only-library.diff | 52 | ||||
| -rw-r--r-- | vcpkg/ports/openvpn3/portfile.cmake | 49 | ||||
| -rw-r--r-- | vcpkg/ports/openvpn3/unofficial-openvpnConfig.cmake | 4 | ||||
| -rw-r--r-- | vcpkg/ports/openvpn3/vcpkg.json | 26 |
6 files changed, 239 insertions, 0 deletions
diff --git a/vcpkg/ports/openvpn3/dependencies.diff b/vcpkg/ports/openvpn3/dependencies.diff new file mode 100644 index 0000000..049b9b2 --- /dev/null +++ b/vcpkg/ports/openvpn3/dependencies.diff @@ -0,0 +1,58 @@ +diff --git a/cmake/findcoredeps.cmake b/cmake/findcoredeps.cmake +index b7d00d4..e180dc1 100644 +--- a/cmake/findcoredeps.cmake ++++ b/cmake/findcoredeps.cmake +@@ -29,8 +29,10 @@ endif () + + function(add_ssl_library target) + if (${USE_MBEDTLS}) ++ # Works with mbedtls 2.x and 3.x ++ set(CMAKE_FIND_PACKAGE_PREFER_CONFIG OFF) + find_package(mbedTLS REQUIRED) +- set(SSL_LIBRARY mbedTLS::mbedTLS) ++ set(SSL_LIBRARY "${MBEDTLS_LIBRARIES}") + target_compile_definitions(${target} PRIVATE -DUSE_MBEDTLS) + else () + find_package(OpenSSL REQUIRED) +@@ -38,7 +40,7 @@ function(add_ssl_library target) + target_compile_definitions(${target} PRIVATE -DUSE_OPENSSL) + endif () + +- target_link_libraries(${target} ${SSL_LIBRARY}) ++ target_link_libraries(${target} PUBLIC ${SSL_LIBRARY}) + endfunction() + + +@@ -93,10 +95,10 @@ function(add_core_dependencies target) + # a patched version. So we want to prefer its include + # directories. + find_package(asio REQUIRED) +- target_link_libraries(${target} asio::asio) ++ target_link_libraries(${target} PUBLIC asio::asio) + + find_package(lz4 REQUIRED) +- target_link_libraries(${target} lz4::lz4) ++ target_link_libraries(${target} PUBLIC lz4::lz4) + + add_ssl_library(${target}) + +@@ -105,14 +107,16 @@ function(add_core_dependencies target) + find_library(iokit IOKit) + find_library(coreServices CoreServices) + find_library(systemConfiguration SystemConfiguration) +- target_link_libraries(${target} ${coreFoundation} ${iokit} ${coreServices} ${systemConfiguration} ${lz4}) ++ target_link_libraries(${target} PUBLIC ${coreFoundation} ${iokit} ${coreServices} ${systemConfiguration} ${lz4}) + endif() + + if(UNIX) +- target_link_libraries(${target} pthread) ++ set(THREADS_PREFER_PTHREAD_FLAG 1) ++ find_package(Threads REQUIRED) ++ target_link_libraries(${target} PUBLIC Threads::Threads) + endif() + +- target_link_libraries(${target} ${EXTRA_LIBS}) ++ target_link_libraries(${target} PUBLIC ${EXTRA_LIBS}) + + if (USE_WERROR) + if (MSVC) diff --git a/vcpkg/ports/openvpn3/mbedtls-compat.diff b/vcpkg/ports/openvpn3/mbedtls-compat.diff new file mode 100644 index 0000000..8bfbf5d --- /dev/null +++ b/vcpkg/ports/openvpn3/mbedtls-compat.diff @@ -0,0 +1,50 @@ +diff --git a/openvpn/mbedtls/mbedtls_compat.hpp b/openvpn/mbedtls/mbedtls_compat.hpp +index 19e6f25..9db4e01 100644 +--- a/openvpn/mbedtls/mbedtls_compat.hpp ++++ b/openvpn/mbedtls/mbedtls_compat.hpp +@@ -27,11 +27,11 @@ + #include <mbedtls/version.h> + #include <mbedtls/pem.h> + +-#if not defined(MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION) ++#if !defined(MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION) + #define MBEDTLS_ERR_SSL_BAD_PROTOCOL_VERSION MBEDTLS_ERR_SSL_BAD_HS_PROTOCOL_VERSION + #endif + +-#if not defined(MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE) ++#if !defined(MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE) + #define MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE MBEDTLS_X509_EXT_KEY_USAGE + #endif + +diff --git a/openvpn/mbedtls/ssl/sslctx.hpp b/openvpn/mbedtls/ssl/sslctx.hpp +index f6c3d28..83763e4 100644 +--- a/openvpn/mbedtls/ssl/sslctx.hpp ++++ b/openvpn/mbedtls/ssl/sslctx.hpp +@@ -1589,10 +1589,13 @@ class MbedTLSContext : public SSLFactoryAPI + digest_prefix_len = sizeof(PKCS1::DigestPrefix::SHA512); + break; + default: ++# if MBEDTLS_VERSION_NUMBER < 0x03000000 ++# define MAYBE_LOG_MODE << "mode=" << mode ++# else ++# define MAYBE_LOG_MODE ++# endif + OVPN_LOG_INFO("MbedTLSContext::epki_sign unrecognized hash_id" +-#if MBEDTLS_VERSION_NUMBER < 0x03000000 +- << "mode=" << mode +-#endif ++ MAYBE_LOG_MODE + << " md_alg=" << md_alg << " hashlen=" << hashlen); + return MBEDTLS_ERR_RSA_BAD_INPUT_DATA; + } +@@ -1627,9 +1630,7 @@ class MbedTLSContext : public SSLFactoryAPI + else + { + OVPN_LOG_INFO("MbedTLSContext::epki_sign unrecognized parameters" +-#if MBEDTLS_VERSION_NUMBER < 0x03000000 +- << "mode=" << mode +-#endif ++ MAYBE_LOG_MODE + << " md_alg=" << md_alg << " hashlen=" << hashlen); + return MBEDTLS_ERR_RSA_BAD_INPUT_DATA; + } diff --git a/vcpkg/ports/openvpn3/only-library.diff b/vcpkg/ports/openvpn3/only-library.diff new file mode 100644 index 0000000..bfadb8a --- /dev/null +++ b/vcpkg/ports/openvpn3/only-library.diff @@ -0,0 +1,52 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6cf519d..d07321c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,11 +32,13 @@ include(ovpn-doxygen) + + add_subdirectory(client) + add_subdirectory(test/unittests) ++if(BUILD_TOOLS) + add_subdirectory(test/ovpncli) + + add_subdirectory(openvpn/omi) + add_subdirectory(openvpn/ovpnagent/win) + add_subdirectory(openvpn/ovpnagent/mac) ++endif() + + if (ENABLE_DOXYGEN) + # Exclude some project specific directories +diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt +index e1ecf8f..5afe6ec 100644 +--- a/client/CMakeLists.txt ++++ b/client/CMakeLists.txt +@@ -1,5 +1,29 @@ + include(findcoredeps) + include(findswigdeps) ++add_library(ovpnclilib ovpncli.cpp) ++add_core_dependencies(ovpnclilib) ++target_compile_features(ovpnclilib PUBLIC cxx_std_17) ++target_include_directories(ovpnclilib PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}" PUBLIC "$<INSTALL_INTERFACE:include>") ++set_target_properties(ovpnclilib PROPERTIES ++ OUTPUT_NAME ovpncli ++ EXPORT_NAME ovpncli ++) ++install(TARGETS ovpnclilib EXPORT unofficial-openvpn3-targets) ++install(EXPORT unofficial-openvpn3-targets ++ NAMESPACE unofficial::openvpn3:: ++ DESTINATION share/unofficial-openvpn3 ++) ++file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-openvpn3-config.cmake" "\ ++include(CMakeFindDependencyMacro) ++find_dependency(asio CONFIG) ++find_dependency(lz4 CONFIG) ++if(UNIX) ++ set(THREADS_PREFER_PTHREAD_FLAG 1) ++ find_dependency(Threads) ++endif() ++include(\"\${CMAKE_CURRENT_LIST_DIR}/unofficial-openvpn3-targets.cmake\") ++") ++install(FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-openvpn3-config.cmake" DESTINATION share/unofficial-openvpn3) + + if (BUILD_SWIG_LIB) + set_property(SOURCE ovpncli.i PROPERTY CPLUSPLUS ON) diff --git a/vcpkg/ports/openvpn3/portfile.cmake b/vcpkg/ports/openvpn3/portfile.cmake new file mode 100644 index 0000000..ec2e13e --- /dev/null +++ b/vcpkg/ports/openvpn3/portfile.cmake @@ -0,0 +1,49 @@ +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO OpenVPN/openvpn3 + REF "release/${VERSION}" + SHA512 f096644078c10022685c1a8f7e0afddf352b4a5c229a772d24adbc6ec3f44e27501beabd28c4da1b6b182ae9d220b80865757693d52d085817d42f2322b71213 + HEAD_REF master + PATCHES + dependencies.diff + mbedtls-compat.diff + only-library.diff +) +file(REMOVE_RECURSE "${SOURCE_PATH}/deps") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DBUILD_SWIG_LIB=OFF + -DBUILD_TESTING=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_Python3=ON + -DCMAKE_DISABLE_FIND_PACKAGE_SWIG=ON + -DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON + -DUSE_MBEDTLS=1 # vcpkg legacy choice +) + +vcpkg_cmake_install() + +file(COPY "${SOURCE_PATH}/client/ovpncli.hpp" DESTINATION "${CURRENT_PACKAGES_DIR}/include/openvpn") +file(COPY "${SOURCE_PATH}/openvpn" DESTINATION "${CURRENT_PACKAGES_DIR}/include") + +file(GLOB_RECURSE HEADERS "${CURRENT_PACKAGES_DIR}/include/openvpn/*") +foreach(HEADER IN LISTS HEADERS) + file(READ "${HEADER}" _contents) + string(REPLACE "defined(USE_ASIO)" "1" _contents "${_contents}") + string(REPLACE "#ifdef USE_ASIO\n" "#if 1\n" _contents "${_contents}") + string(REPLACE "defined(USE_MBEDTLS)" "1" _contents "${_contents}") + string(REPLACE "#ifdef USE_MBEDTLS\n" "#if 1\n" _contents "${_contents}") + file(WRITE "${HEADER}" "${_contents}") +endforeach() + +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-openvpn3) +# Transitional +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/unofficial-openvpnConfig.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-openvpn") + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.rst" "${SOURCE_PATH}/COPYRIGHT.AGPLV3") diff --git a/vcpkg/ports/openvpn3/unofficial-openvpnConfig.cmake b/vcpkg/ports/openvpn3/unofficial-openvpnConfig.cmake new file mode 100644 index 0000000..e0ae0b2 --- /dev/null +++ b/vcpkg/ports/openvpn3/unofficial-openvpnConfig.cmake @@ -0,0 +1,4 @@ +file(READ "${CMAKE_CURRENT_LIST_DIR}/usage" usage) +message(WARNING "find_package(${CMAKE_FIND_PACKAGE_NAME}) is deprecated. Use find_package(unofficial-openvpn3) instead.") +include(CMakeFindDependencyMacro) +find_dependency(unofficial-openvpn3 CONFIG) diff --git a/vcpkg/ports/openvpn3/vcpkg.json b/vcpkg/ports/openvpn3/vcpkg.json new file mode 100644 index 0000000..87dcb62 --- /dev/null +++ b/vcpkg/ports/openvpn3/vcpkg.json @@ -0,0 +1,26 @@ +{ + "name": "openvpn3", + "version": "3.10", + "port-version": 1, + "description": "a C++ class library that implements the functionality of an OpenVPN client, and is protocol-compatible with the OpenVPN 2.x branch.", + "homepage": "https://openvpn.net", + "license": "AGPL-3.0-only", + "supports": "!uwp & !xbox", + "dependencies": [ + "asio", + "lz4", + "mbedtls", + { + "name": "tap-windows6", + "platform": "windows" + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |