Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 33 additions & 22 deletions ports/ms-quic/fix-install.patch
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
Comment thread
FrankXie05 marked this conversation as resolved.
index 96ea265..87eaed5 100644
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 46399d5..3cc7fd9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -647,6 +647,8 @@ if(QUIC_CODE_CHECK)
@@ -701,6 +701,8 @@ if(QUIC_CODE_CHECK)
Comment thread
FrankXie05 marked this conversation as resolved.
Outdated
endif()
endif()

+include(GNUInstallDirs)
+
add_subdirectory(src/inc)
add_subdirectory(src/generated)

# Product code
@@ -657,6 +659,8 @@ add_subdirectory(src/bin)
@@ -712,6 +714,8 @@ add_subdirectory(src/bin)
Comment thread
FrankXie05 marked this conversation as resolved.
Outdated
# Tool code
if(QUIC_BUILD_TOOLS)
add_subdirectory(src/tools)
Expand All @@ -21,40 +21,51 @@ index 96ea265..87eaed5 100644

# Performance code
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
index 4dda469..2797670 100644
index a529d89..0814b17 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}>)
Comment thread
FrankXie05 marked this conversation as resolved.
@@ -247,14 +247,14 @@ endif()
if(BUILD_SHARED_LIBS)
target_include_directories(msquic PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc>
- $<INSTALL_INTERFACE:${include_dest}>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
else()
target_include_directories(msquic_static INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc>
- $<INSTALL_INTERFACE:${include_dest}>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
target_include_directories(msquic INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc>
- $<INSTALL_INTERFACE:${include_dest}>)
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
endif()

set(PUBLIC_HEADERS
../inc/msquic.h
@@ -37,14 +37,17 @@ set(PUBLIC_HEADERS
@@ -263,16 +263,16 @@ set(PUBLIC_HEADERS
Comment thread
FrankXie05 marked this conversation as resolved.
Outdated
../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 DESTINATION lib)
-install(FILES ${PUBLIC_HEADERS} DESTINATION include)
+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)
configure_file(msquic-config.cmake.in ${CMAKE_BINARY_DIR}/msquic-config.cmake)

-install(EXPORT msquic DESTINATION ${msquic_dest})
-install(FILES ${CMAKE_BINARY_DIR}/msquic-config.cmake DESTINATION share/msquic)
-
-if(BUILD_SHARED_LIBS)
- install(EXPORT msquic DESTINATION share/msquic)
-endif()
Comment thread
FrankXie05 marked this conversation as resolved.
Outdated
+install(EXPORT msquic-targets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/msquic)

if(WIN32)
add_library(msquic.lttng INTERFACE)
if (MSVC AND NOT QUIC_ENABLE_SANITIZERS AND BUILD_SHARED_LIBS)
target_compile_options(msquic PRIVATE /analyze)
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
Expand Down
99 changes: 52 additions & 47 deletions ports/ms-quic/fix-platform.patch
Original file line number Diff line number Diff line change
@@ -1,56 +1,61 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b670cf..f94f4c6 100644
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 999711e..46399d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -309,7 +309,7 @@ if(WIN32)
endif()
@@ -525,7 +525,7 @@ if(WIN32)
set(CMAKE_VS_SDK_LIBRARY_DIRECTORIES "$(LibraryPath);$(VC_LibraryPath_VC_${SYSTEM_PROCESSOR}_Desktop)")
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}")
file(MAKE_DIRECTORY ${QUIC_PGO_DIR})
configure_file("${QUIC_PGO_FILE}" "${QUIC_PGO_DIR}/msquic.pgd" COPYONLY)
diff --git a/submodules/CMakeLists.txt b/submodules/CMakeLists.txt
index deadd19..3616eac 100644
--- a/submodules/CMakeLists.txt
+++ b/submodules/CMakeLists.txt
@@ -53,31 +53,29 @@ if (WIN32)

if (QUIC_UWP_BUILD)
# Translate target architecture into corresponding OpenSSL build flag
- if (${SYSTEM_PROCESSOR} STREQUAL "arm64")
+ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64-ARM")
Comment thread
FrankXie05 marked this conversation as resolved.
- elseif (${SYSTEM_PROCESSOR} STREQUAL "arm")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ARM")
- elseif (${SYSTEM_PROCESSOR} STREQUAL "win32")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ONECORE")
- elseif (${SYSTEM_PROCESSOR} STREQUAL "x64" OR ${SYSTEM_PROCESSOR} STREQUAL "amd64")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64A-ONECORE")
- else()
- message(FATAL_ERROR "Unknown Generator Platform ${SYSTEM_PROCESSOR}")
endif()
-
set(OPENSSL_DIR ${QUIC_BUILD_DIR}/openssl)
else()
- # Translate target architecture into corresponding OpenSSL build flag
- if (${SYSTEM_PROCESSOR} STREQUAL "arm64")
+ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64-ARM")
- elseif (${SYSTEM_PROCESSOR} STREQUAL "arm")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32-ARM")
- elseif (${SYSTEM_PROCESSOR} STREQUAL "win32")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN32")
- elseif (${SYSTEM_PROCESSOR} STREQUAL "x64" OR ${SYSTEM_PROCESSOR} STREQUAL "amd64")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(QUIC_OPENSSL_WIN_ARCH "VC-WIN64A")
- else()
- message(FATAL_ERROR "Unknown Generator Platform ${SYSTEM_PROCESSOR}")
endif()
endif()
+ if(NOT DEFINED QUIC_OPENSSL_WIN_ARCH)
+ message(FATAL_ERROR "Unknown Platform ${VCPKG_TARGET_ARCHITECTURE}")
+ endif()

set(OPENSSL_EXTRA_CONFIGURE_ARGS "")

add_library(OpenSSL_Crypto STATIC IMPORTED)

20 changes: 10 additions & 10 deletions ports/ms-quic/fix-warnings.patch
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0f5abcb..aeae310 100644
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 397e35e..999711e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -184,7 +184,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${QUIC_OUTPUT_DIR})
@@ -203,7 +203,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 /WX /W4 /sdl /wd4206 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)

include(CheckCCompilerFlag)
@@ -306,7 +306,7 @@ else()
if (HAS_SYSCTL)
list(APPEND QUIC_COMMON_DEFINES HAS_SYSCTL)
endif()
- 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
Expand Down
69 changes: 37 additions & 32 deletions ports/ms-quic/portfile.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH QUIC_SOURCE_PATH
REPO microsoft/msquic
REF v1.2.0
SHA512 6f63d42d950cbba88764332b31818a8627e7d3ecf7393cdef77daedd35a7bb04ac39c642991afb7cca502a346999233023e3b36011916c67e348179838aa7042
REF v2.1.7
Comment thread
FrankXie05 marked this conversation as resolved.
Outdated
SHA512 23ef4cc3794180b06d0ed138d6e96e37ef5f15ea0ccbf405f95f13c9fbd5aedc8a9c5c403b38b2381801796c50907ee36ebed1161da687bacd82cdea6880475a
HEAD_REF master
PATCHES
fix-warnings.patch # Remove /WX, -Werror
Expand All @@ -19,51 +19,56 @@ vcpkg_from_github(
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})
file(REMOVE_RECURSE "${QUIC_SOURCE_PATH}/submodules")
file(MAKE_DIRECTORY "${QUIC_SOURCE_PATH}/submodules")
file(RENAME "${OPENSSL_SOURCE_PATH}" "${QUIC_SOURCE_PATH}/submodules/openssl")

if(VCPKG_TARGET_IS_WINDOWS)
LIST(APPEND QUIC_TLS "schannel")
else()
LIST(APPEND QUIC_TLS "openssl")
Comment on lines +25 to +28

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using schannel limits msquic to Windows 11 only and as per docs This configuration does not support 0-RTT due to Schannel's current lack of support.. I think it makes more sense to still default to openssl even for Windows.


vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
vcpkg_add_to_path(${PERL_EXE_PATH})

vcpkg_find_acquire_program(NASM)
get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
vcpkg_add_to_path(PREPEND ${NASM_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}
SOURCE_PATH "${QUIC_SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE
OPTIONS
${FEATURE_OPTIONS}
-DQUIC_SOURCE_LINK=OFF
-DQUIC_TLS=openssl
-DQUIC_TLS_SECRETS_SUPPORT=ON
-DQUIC_TLS=${QUIC_TLS}
-DQUIC_USE_SYSTEM_LIBCRYPTO=OFF
-DQUIC_BUILD_PERF=OFF
-DQUIC_BUILD_TEST=OFF
-DQUIC_STATIC_LINK_CRT=${STATIC_CRT}
-DQUIC_BUILD_SHARED=ON
-DQUIC_UWP_BUILD=${VCPKG_TARGET_IS_UWP}
)

vcpkg_cmake_build(TARGET OpenSSL_Build) # separate build log for quictls/openssl
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()



#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)
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
Expand All @@ -72,9 +77,9 @@ if("tools" IN_LIST FEATURES)
)
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
vcpkg_install_copyright(FILE_LIST "${QUIC_SOURCE_PATH}/LICENSE")

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share"
"${CURRENT_PACKAGES_DIR}/debug/include"
)

2 changes: 1 addition & 1 deletion ports/ms-quic/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ms-quic",
"version": "1.2.0",
"version": "2.1.7",
"description": "Cross-platform, C implementation of the IETF QUIC protocol",
"homepage": "https://github.com/microsoft/msquic",
"license": "MIT",
Expand Down
4 changes: 0 additions & 4 deletions scripts/ci.baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -575,10 +575,6 @@ microsoft-signalr:x86-windows=skip
mlpack:x64-uwp=fail
ms-quic:arm-uwp=fail
ms-quic:arm64-windows=fail
ms-quic:x64-uwp=fail
ms-quic:x64-windows-static-md=fail
ms-quic:x64-windows=fail
ms-quic:x86-windows=fail
# mmx installs many problematic headers, such as `json.h` and `sched.h`
mmx:x64-windows=skip
mmx:x64-windows-static=skip
Expand Down
2 changes: 1 addition & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -5173,7 +5173,7 @@
"port-version": 0
},
"ms-quic": {
"baseline": "1.2.0",
"baseline": "2.1.7",
"port-version": 0
},
"msdfgen": {
Expand Down
5 changes: 5 additions & 0 deletions versions/m-/ms-quic.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "cbc67cde52adad27829c96e4b8d64e804ded3c67",
"version": "2.1.7",
"port-version": 0
},
{
"git-tree": "3188e024233a7d1772922bc11d29d912c6427e25",
"version": "1.2.0",
Expand Down