mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 20:53:09 +08:00
[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>
This commit is contained in:
parent
7d2541c69c
commit
d30657b533
67
ports/ms-quic/fix-install.patch
Normal file
67
ports/ms-quic/fix-install.patch
Normal file
@ -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)
|
56
ports/ms-quic/fix-platform.patch
Normal file
56
ports/ms-quic/fix-platform.patch
Normal file
@ -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)
|
22
ports/ms-quic/fix-warnings.patch
Normal file
22
ports/ms-quic/fix-warnings.patch
Normal file
@ -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)
|
80
ports/ms-quic/portfile.cmake
Normal file
80
ports/ms-quic/portfile.cmake
Normal file
@ -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
|
||||
)
|
23
ports/ms-quic/vcpkg.json
Normal file
23
ports/ms-quic/vcpkg.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
|
9
versions/m-/ms-quic.json
Normal file
9
versions/m-/ms-quic.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"versions": [
|
||||
{
|
||||
"git-tree": "3188e024233a7d1772922bc11d29d912c6427e25",
|
||||
"version": "1.2.0",
|
||||
"port-version": 0
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user