aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPark DongHa <luncliff@gmail.com>2021-07-26 04:48:56 +0900
committerGitHub <noreply@github.com>2021-07-25 12:48:56 -0700
commitd30657b5337d4563b3ca8204cf3187be15bc8e23 (patch)
tree691b18c87c2ecab29be6d89622cbd2b8061a7474
parent7d2541c69cc2f9099a118de1a80f59e29c5de15d (diff)
downloadvcpkg-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.patch67
-rw-r--r--ports/ms-quic/fix-platform.patch56
-rw-r--r--ports/ms-quic/fix-warnings.patch22
-rw-r--r--ports/ms-quic/portfile.cmake80
-rw-r--r--ports/ms-quic/vcpkg.json23
-rw-r--r--versions/baseline.json4
-rw-r--r--versions/m-/ms-quic.json9
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
+ }
+ ]
+}