diff options
| author | Park DongHa <luncliff@gmail.com> | 2021-07-26 04:48:56 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-25 12:48:56 -0700 |
| commit | d30657b5337d4563b3ca8204cf3187be15bc8e23 (patch) | |
| tree | 691b18c87c2ecab29be6d89622cbd2b8061a7474 | |
| parent | 7d2541c69cc2f9099a118de1a80f59e29c5de15d (diff) | |
| download | vcpkg-d30657b5337d4563b3ca8204cf3187be15bc8e23.tar.gz vcpkg-d30657b5337d4563b3ca8204cf3187be15bc8e23.zip | |
[ms-quic] create a new port (#18225)
* [ms-quic] create a new port
* rewrite to fix garbled history of #18225
* [ms-quic] update port/version SHA
* [ms-quic] disable windows-static triplet
* Update ports/ms-quic/vcpkg.json
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* Update ports/ms-quic/vcpkg.json
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
* [ms-quic] update patch files
* [ms-quic] make quictls only
* reduce feature list for future updates
* update version SHA
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
| -rw-r--r-- | ports/ms-quic/fix-install.patch | 67 | ||||
| -rw-r--r-- | ports/ms-quic/fix-platform.patch | 56 | ||||
| -rw-r--r-- | ports/ms-quic/fix-warnings.patch | 22 | ||||
| -rw-r--r-- | ports/ms-quic/portfile.cmake | 80 | ||||
| -rw-r--r-- | ports/ms-quic/vcpkg.json | 23 | ||||
| -rw-r--r-- | versions/baseline.json | 4 | ||||
| -rw-r--r-- | versions/m-/ms-quic.json | 9 |
7 files changed, 261 insertions, 0 deletions
diff --git a/ports/ms-quic/fix-install.patch b/ports/ms-quic/fix-install.patch new file mode 100644 index 000000000..4df691077 --- /dev/null +++ b/ports/ms-quic/fix-install.patch @@ -0,0 +1,67 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 96ea265..87eaed5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -647,6 +647,8 @@ if(QUIC_CODE_CHECK)
+ endif()
+ endif()
+
++include(GNUInstallDirs)
++
+ add_subdirectory(src/inc)
+
+ # Product code
+@@ -657,6 +659,8 @@ add_subdirectory(src/bin)
+ # Tool code
+ if(QUIC_BUILD_TOOLS)
+ add_subdirectory(src/tools)
++ install(TARGETS quicattack quicinterop quicinteropserver quicipclient quicipserver
++ quicpcp quicping quicpost quicreach quicsample spinquic)
+ endif()
+
+ # Performance code
+diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
+index 4dda469..2797670 100644
+--- a/src/bin/CMakeLists.txt
++++ b/src/bin/CMakeLists.txt
+@@ -29,7 +29,7 @@ endif()
+
+ target_include_directories(msquic PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc>
+- $<INSTALL_INTERFACE:${include_dest}>)
++ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+
+ set(PUBLIC_HEADERS
+ ../inc/msquic.h
+@@ -37,14 +37,17 @@ set(PUBLIC_HEADERS
+ ../inc/msquic_posix.h
+ ../inc/quic_sal_stub.h)
+
+-install(TARGETS msquic EXPORT msquic DESTINATION "${main_lib_dest}")
+-install(FILES ${PUBLIC_HEADERS} DESTINATION "${include_dest}")
++install(TARGETS msquic EXPORT msquic-targets
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
++install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+ configure_file(msquic-config.cmake.in ${CMAKE_BINARY_DIR}/msquic-config.cmake)
+
+-install(FILES ${CMAKE_BINARY_DIR}/msquic-config.cmake DESTINATION ${msquic_dest})
++install(FILES ${CMAKE_BINARY_DIR}/msquic-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/msquic)
+
+-install(EXPORT msquic DESTINATION ${msquic_dest})
++install(EXPORT msquic-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/msquic)
+
+ if(WIN32)
+ add_library(msquic.lttng INTERFACE)
+diff --git a/src/bin/msquic-config.cmake.in b/src/bin/msquic-config.cmake.in
+index dd67624..c561361 100644
+--- a/src/bin/msquic-config.cmake.in
++++ b/src/bin/msquic-config.cmake.in
+@@ -1,4 +1,4 @@
+ include(CMakeFindDependencyMacro)
+ @FILENAME_DEP_REPLACE@
+
+-include(${SELF_DIR}/msquic.cmake)
++include(${SELF_DIR}/msquic-targets.cmake)
diff --git a/ports/ms-quic/fix-platform.patch b/ports/ms-quic/fix-platform.patch new file mode 100644 index 000000000..7041c30d0 --- /dev/null +++ b/ports/ms-quic/fix-platform.patch @@ -0,0 +1,56 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0b670cf..f94f4c6 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -309,7 +309,7 @@ if(WIN32) + endif() + else() + # Just doing a normal build. Use the PGD file if present. +- if(EXISTS "${QUIC_PGO_FILE}") ++ if(FALSE) + message(STATUS "Using profile-guided optimization") + configure_file("${QUIC_PGO_FILE}" "${QUIC_OUTPUT_DIR}/msquic.pgd" COPYONLY) + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /USEPROFILE:PGD=${QUIC_OUTPUT_DIR}/msquic.pgd") +@@ -387,21 +387,29 @@ endif() + if(QUIC_TLS STREQUAL "openssl") + if (WIN32) + if (QUIC_UWP_BUILD) +- message(FATAL_ERROR "UWP is not supported with OpenSSL") +- endif() +- +- if (${CMAKE_GENERATOR_PLATFORM} STREQUAL "arm64") +- set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64-ARM") +- elseif (${CMAKE_GENERATOR_PLATFORM} STREQUAL "arm") +- set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ARM") +- elseif (${CMAKE_GENERATOR_PLATFORM} STREQUAL "Win32") +- set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32") +- elseif (${CMAKE_GENERATOR_PLATFORM} STREQUAL "x64") +- set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64A") ++ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64-ARM") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ARM") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ONECORE") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64A-ONECORE") ++ endif() + else() +- message(FATAL_ERROR "Unknown Generator Platform ${CMAKE_GENERATOR_PLATFORM}") ++ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64-ARM") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ARM") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32") ++ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") ++ set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64A") ++ endif() ++ endif() ++ if(NOT DEFINED QUIC_OPENSSL_WIN_ARCH) ++ message(FATAL_ERROR "Unknown Platform ${VCPKG_TARGET_ARCHITECTURE}") + endif() +- + set(OPENSSL_DIR ${QUIC_BUILD_DIR}/openssl) + + add_library(OpenSSL_Crypto STATIC IMPORTED) diff --git a/ports/ms-quic/fix-warnings.patch b/ports/ms-quic/fix-warnings.patch new file mode 100644 index 000000000..bf99b8863 --- /dev/null +++ b/ports/ms-quic/fix-warnings.patch @@ -0,0 +1,22 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0f5abcb..aeae310 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -184,7 +184,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${QUIC_OUTPUT_DIR})
+ set(QUIC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/inc)
+
+ if (WIN32)
+- set(QUIC_WARNING_FLAGS /WX /W4 /sdl CACHE INTERNAL "")
++ set(QUIC_WARNING_FLAGS /W4 /sdl CACHE INTERNAL "")
+ set(QUIC_COMMON_FLAGS "")
+ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
+ list(APPEND QUIC_COMMON_FLAGS /MP)
+@@ -193,7 +193,7 @@ if (WIN32)
+ else()
+ set(QUIC_COMMON_FLAGS "")
+ set(QUIC_COMMON_DEFINES _GNU_SOURCE)
+- set(QUIC_WARNING_FLAGS -Werror -Wall -Wextra -Wformat=2 -Wno-type-limits
++ set(QUIC_WARNING_FLAGS -Wall -Wextra -Wformat=2 -Wno-type-limits
+ -Wno-unknown-pragmas -Wno-multichar -Wno-missing-field-initializers
+ CACHE INTERNAL "")
+ if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
diff --git a/ports/ms-quic/portfile.cmake b/ports/ms-quic/portfile.cmake new file mode 100644 index 000000000..e4e44d673 --- /dev/null +++ b/ports/ms-quic/portfile.cmake @@ -0,0 +1,80 @@ +vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH QUIC_SOURCE_PATH + REPO microsoft/msquic + REF v1.2.0 + SHA512 6f63d42d950cbba88764332b31818a8627e7d3ecf7393cdef77daedd35a7bb04ac39c642991afb7cca502a346999233023e3b36011916c67e348179838aa7042 + HEAD_REF master + PATCHES + fix-warnings.patch # Remove /WX, -Werror + fix-platform.patch # Make OpenSSL build use VCPKG_TARGET_ARCHITECTURE + fix-install.patch # Adjust install path of build outputs +) + +vcpkg_from_github( + OUT_SOURCE_PATH OPENSSL_SOURCE_PATH + REPO quictls/openssl + REF a6e9d76db343605dae9b59d71d2811b195ae7434 + SHA512 23510a11203b96476c194a1987c7d4e758375adef0f6dfe319cd8ec4b8dd9b12ea64c4099cf3ba35722b992dad75afb1cfc5126489a5fa59f5ee4d46bdfbeaf6 + HEAD_REF OpenSSL_1_1_1k+quic +) +file(REMOVE_RECURSE ${QUIC_SOURCE_PATH}/submodules) +file(MAKE_DIRECTORY ${QUIC_SOURCE_PATH}/submodules) +file(RENAME ${OPENSSL_SOURCE_PATH} ${QUIC_SOURCE_PATH}/submodules/openssl) + +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY) +vcpkg_add_to_path(${PERL_EXE_PATH}) + +if(NOT VCPKG_HOST_IS_WINDOWS) + find_program(MAKE make) + get_filename_component(MAKE_EXE_PATH ${MAKE} DIRECTORY) + vcpkg_add_to_path(PREPEND ${MAKE_EXE_PATH}) +endif() + + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_find_acquire_program(NASM) + get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY) + vcpkg_add_to_path(PREPEND ${NASM_EXE_PATH}) + endif() + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + tools QUIC_BUILD_TOOLS +) + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT) + +vcpkg_cmake_configure( + SOURCE_PATH ${QUIC_SOURCE_PATH} + OPTIONS + ${FEATURE_OPTIONS} + -DQUIC_SOURCE_LINK=OFF + -DQUIC_TLS=openssl + -DQUIC_TLS_SECRETS_SUPPORT=ON + -DQUIC_USE_SYSTEM_LIBCRYPTO=OFF + -DQUIC_BUILD_PERF=OFF + -DQUIC_BUILD_TEST=OFF + -DQUIC_STATIC_LINK_CRT=${STATIC_CRT} + -DQUIC_UWP_BUILD=${VCPKG_TARGET_IS_UWP} +) + +vcpkg_cmake_build(TARGET OpenSSL_Build) # separate build log for quictls/openssl +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(PACKAGE_NAME msquic CONFIG_PATH lib/cmake/msquic) + +if("tools" IN_LIST FEATURES) + vcpkg_copy_tools(TOOL_NAMES quicattack quicinterop quicinteropserver quicipclient quicipserver + quicpcp quicping quicpost quicreach quicsample spinquic + AUTO_CLEAN + ) +endif() + +file(INSTALL ${QUIC_SOURCE_PATH}/LICENSE + DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright +) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share + ${CURRENT_PACKAGES_DIR}/debug/include +) diff --git a/ports/ms-quic/vcpkg.json b/ports/ms-quic/vcpkg.json new file mode 100644 index 000000000..d337a8452 --- /dev/null +++ b/ports/ms-quic/vcpkg.json @@ -0,0 +1,23 @@ +{ + "name": "ms-quic", + "version": "1.2.0", + "description": "Cross-platform, C implementation of the IETF QUIC protocol", + "homepage": "https://github.com/microsoft/msquic", + "license": "MIT", + "supports": "!(static & staticcrt)", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "Install the tools after build" + } + } +} diff --git a/versions/baseline.json b/versions/baseline.json index c8598a636..4fd7cb80f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -4212,6 +4212,10 @@ "baseline": "3.1.0", "port-version": 0 }, + "ms-quic": { + "baseline": "1.2.0", + "port-version": 0 + }, "msdfgen": { "baseline": "1.8", "port-version": 0 diff --git a/versions/m-/ms-quic.json b/versions/m-/ms-quic.json new file mode 100644 index 000000000..cc440ecc4 --- /dev/null +++ b/versions/m-/ms-quic.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "3188e024233a7d1772922bc11d29d912c6427e25", + "version": "1.2.0", + "port-version": 0 + } + ] +} |
