-
Notifications
You must be signed in to change notification settings - Fork 6.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[msh3,msquic,vcpkg-ci-msh3] Update, add test port #42788
Changes from 19 commits
4813e25
9721619
c9d96e0
0cdc238
a68dce1
4f14aa9
8b22fd3
0232f0d
9a2db60
4ecc9f2
0476837
e0a7575
0fd9e70
cf6524c
d821514
07b69b7
10aacca
dee25b8
62e1584
2234b25
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,45 +1,56 @@ | ||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index 4bd7155..b7adecc 100644 | ||
index d8a81ab..edf5651 100644 | ||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -72,7 +72,7 @@ target_include_directories(msh3_headers INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) | ||
@@ -28,9 +28,6 @@ set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") | ||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | ||
|
||
if (WIN32) | ||
- # Statically link the OS included part of the runtime. | ||
- set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>") | ||
- set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib") | ||
set(QUIC_COMMON_DEFINES WIN32_LEAN_AND_MEAN SECURITY_WIN32) | ||
# TODO - Get these to work on Linux | ||
list(APPEND MSH3_COMMON_DEFINES VER_BUILD_ID=${MSH3_VER_BUILD_ID}) | ||
@@ -66,7 +63,8 @@ target_include_directories(msh3_headers INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) | ||
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW) | ||
option(LSQPACK_TESTS "Build tests" OFF) | ||
option(LSQPACK_BIN "Build binaries" OFF) | ||
-add_subdirectory(ls-qpack) | ||
+find_package(ls-qpack CONFIG REQUIRED) | ||
+add_library(ls-qpack ALIAS ls-qpack::ls-qpack) | ||
|
||
# Configure and build msquic dependency. | ||
if (WIN32) | ||
@@ -83,8 +83,9 @@ endif() | ||
@@ -76,9 +74,11 @@ else() | ||
endif() | ||
set(QUIC_BUILD_SHARED ON CACHE BOOL "Builds MsQuic as a dynamic library") | ||
set(QUIC_ENABLE_LOGGING ON CACHE BOOL "Enable MsQuic logging") | ||
set(CMAKE_BUILD_TYPE "Release") | ||
-set(CMAKE_BUILD_TYPE "Release") | ||
-add_subdirectory(msquic) | ||
-target_compile_features(inc INTERFACE cxx_std_20) | ||
+find_package(msquic CONFIG REQUIRED) | ||
+ | ||
+target_compile_features(msh3_headers INTERFACE cxx_std_20) | ||
+# polyfill | ||
+add_library(inc ALIAS msquic) | ||
+add_library(platform ALIAS msquic) | ||
+add_library(warnings ALIAS msquic) | ||
Comment on lines
+33
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Upstream msh3 embeds the msquic build and sees all msquic targets. |
||
|
||
# Build msh3 library (and cmd line tool). | ||
add_subdirectory(lib) | ||
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt | ||
index ab7fc24..c488486 100644 | ||
index 4d7aeb7..6da8e1a 100644 | ||
--- a/lib/CMakeLists.txt | ||
+++ b/lib/CMakeLists.txt | ||
@@ -7,10 +7,7 @@ else() | ||
@@ -7,6 +7,8 @@ else() | ||
set(SOURCES msh3.cpp) | ||
endif() | ||
add_library(msh3 SHARED ${SOURCES}) | ||
-target_link_libraries(msh3 PRIVATE inc warnings msquic ls-qpack msh3_headers) | ||
-if (NOT BUILD_SHARED_LIBS) | ||
- target_link_libraries(msh3 PRIVATE base_link) | ||
-endif() | ||
+target_link_libraries(msh3 PRIVATE msquic ls-qpack::ls-qpack msh3_headers) | ||
if (MSH3_SERVER_SUPPORT) | ||
target_link_libraries(msh3 PRIVATE platform) # For selfsign APIs | ||
endif() | ||
@@ -26,7 +23,11 @@ elseif (CX_PLATFORM STREQUAL "darwin") | ||
+target_compile_features(msh3 PRIVATE cxx_std_20) | ||
+target_include_directories(msh3 PUBLIC $<INSTALL_INTERFACE:include>) | ||
target_link_libraries(msh3 PRIVATE inc warnings msquic ls-qpack msh3_headers) | ||
if (NOT BUILD_SHARED_LIBS) | ||
target_link_libraries(msh3 PRIVATE base_link) | ||
@@ -24,12 +26,16 @@ elseif (CX_PLATFORM STREQUAL "darwin") | ||
PROPERTIES LINK_FLAGS "-exported_symbols_list \"${CMAKE_CURRENT_SOURCE_DIR}/darwin/exports.txt\"") | ||
endif() | ||
|
||
|
@@ -50,15 +61,40 @@ index ab7fc24..c488486 100644 | |
+ LIBRARY DESTINATION lib | ||
+) | ||
install(FILES ../msh3.h DESTINATION include) | ||
configure_file(msh3-config.cmake.in ${CMAKE_BINARY_DIR}/msh3-config.cmake) | ||
-configure_file(msh3-config.cmake.in ${CMAKE_BINARY_DIR}/msh3-config.cmake) | ||
+configure_file(msh3-config.cmake.in ${CMAKE_BINARY_DIR}/msh3-config.cmake @ONLY) | ||
install(FILES ${CMAKE_BINARY_DIR}/msh3-config.cmake DESTINATION share/msh3) | ||
install(EXPORT msh3 DESTINATION share/msh3) | ||
-configure_file(libmsh3.pc.in ${CMAKE_BINARY_DIR}/libmsh3.pc) | ||
-if(NOT WIN32) | ||
+configure_file(libmsh3.pc.in ${CMAKE_BINARY_DIR}/libmsh3.pc @ONLY) | ||
+if(1) | ||
install(FILES ${CMAKE_BINARY_DIR}/libmsh3.pc DESTINATION lib/pkgconfig) | ||
endif() | ||
diff --git a/lib/libmsh3.pc.in b/lib/libmsh3.pc.in | ||
index f156204..aad76ab 100644 | ||
--- a/lib/libmsh3.pc.in | ||
+++ b/lib/libmsh3.pc.in | ||
@@ -4,10 +4,10 @@ | ||
prefix=/usr/local | ||
exec_prefix=${prefix} | ||
libdir=${exec_prefix}/lib | ||
-includedir=${exec_prefix}/include | ||
+includedir=${prefix}/include | ||
|
||
Name: libmsh3 | ||
Description: Minimal HTTP/3 client on top of MsQuic | ||
Version: 0.1.0 | ||
Libs: -L${libdir} -lmsh3 | ||
-Cflags: -I${includedir}/libmsh3 | ||
+Cflags: -I${includedir} | ||
diff --git a/lib/msh3-config.cmake.in b/lib/msh3-config.cmake.in | ||
index b4a54bf..a6a0fd2 100644 | ||
index b4a54bf..540d56d 100644 | ||
--- a/lib/msh3-config.cmake.in | ||
+++ b/lib/msh3-config.cmake.in | ||
@@ -1,4 +1,4 @@ | ||
include(CMakeFindDependencyMacro) | ||
@FILENAME_DEP_REPLACE@ | ||
|
||
-include(${SELF_DIR}/msh3.cmake) | ||
+include(${CMAKE_INSTALL_PREFIX}/share/msh3/msh3.cmake) | ||
+include("${CMAKE_CURRENT_LIST_DIR}/msh3.cmake") |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,18 @@ | ||
set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) | ||
vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) | ||
|
||
vcpkg_from_github( | ||
OUT_SOURCE_PATH SOURCE_PATH | ||
REPO nibanks/msh3 | ||
REF v${VERSION} | ||
SHA512 e6ba4e8f4ce5cd3f586d61739148bf75dfddbe70f399b2e498e7d416c8d730a5f8c2c38f0eabe687049bb7525df44f5f511515ec578bc3832989f73961cdda72 | ||
SHA512 dedd8be43e44b4bebbf601d76b1f3b0135501330ed128ca710de942ef7d9142a21f1c1eb9efecf57881e72d93d68c7c2c085bc35d402eac5eabc57e77773be6b | ||
HEAD_REF main | ||
PATCHES | ||
dependencies_fix.patch | ||
width-exceeds-type.diff | ||
) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fixes build error with gcc. |
||
|
||
vcpkg_find_acquire_program(PKGCONFIG) | ||
|
||
vcpkg_cmake_configure( | ||
SOURCE_PATH "${SOURCE_PATH}" | ||
OPTIONS | ||
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}" | ||
) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Resolved by ls-qpack patches. |
||
|
||
vcpkg_cmake_install() | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
diff --git a/msh3.h b/msh3.h | ||
index ebbdc20..c31b1b9 100644 | ||
--- a/msh3.h | ||
+++ b/msh3.h | ||
@@ -374,7 +374,11 @@ typedef struct MSH3_REQUEST_EVENT { | ||
bool AppCloseInProgress : 1; | ||
bool ConnectionShutdownByApp : 1; | ||
bool ConnectionClosedRemotely : 1; | ||
- bool RESERVED : 5; | ||
+ bool RESERVED : 1; | ||
+ bool RESERVED_2 : 1; | ||
+ bool RESERVED_3 : 1; | ||
+ bool RESERVED_4 : 1; | ||
+ bool RESERVED_5 : 1; | ||
uint64_t ConnectionErrorCode; | ||
MSH3_STATUS ConnectionCloseStatus; | ||
} SHUTDOWN_COMPLETE; | ||
@@ -487,7 +491,13 @@ typedef struct MSH3_LISTENER_EVENT { | ||
union { | ||
struct { | ||
bool AppCloseInProgress : 1; | ||
- bool RESERVED : 7; | ||
+ bool RESERVED : 1; | ||
+ bool RESERVED_2 : 1; | ||
+ bool RESERVED_3 : 1; | ||
+ bool RESERVED_4 : 1; | ||
+ bool RESERVED_5 : 1; | ||
+ bool RESERVED_6 : 1; | ||
+ bool RESERVED_7 : 1; | ||
} SHUTDOWN_COMPLETE; | ||
struct { | ||
MSH3_CONNECTION* Connection; |
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
diff --git a/src/bin/darwin/exports.txt b/src/bin/darwin/exports.txt | ||
index e90b06e..c221d2c 100644 | ||
--- a/src/bin/darwin/exports.txt | ||
+++ b/src/bin/darwin/exports.txt | ||
@@ -1,2 +1,6 @@ | ||
_MsQuicOpenVersion | ||
_MsQuicClose | ||
+_CxPlatGetSelfSignedCert | ||
+_CxPlatFreeSelfSignedCert | ||
+_CxPlatLogAssert | ||
+_quic_bugcheck | ||
diff --git a/src/bin/linux/exports.txt b/src/bin/linux/exports.txt | ||
index e11806a..424c443 100644 | ||
--- a/src/bin/linux/exports.txt | ||
+++ b/src/bin/linux/exports.txt | ||
@@ -1,5 +1,9 @@ | ||
msquic | ||
{ | ||
global: MsQuicOpenVersion; MsQuicClose; | ||
+ CxPlatGetSelfSignedCert; | ||
+ CxPlatFreeSelfSignedCert; | ||
+ CxPlatLogAssert; | ||
+ quic_bugcheck; | ||
local: *; | ||
}; | ||
diff --git a/src/bin/linux/init.c b/src/bin/linux/init.c | ||
index 29bfa14..61bbc48 100644 | ||
--- a/src/bin/linux/init.c | ||
+++ b/src/bin/linux/init.c | ||
@@ -9,8 +9,15 @@ Abstract: | ||
|
||
--*/ | ||
|
||
+#define QUIC_TEST_APIS 1 | ||
#include "quic_platform.h" | ||
|
||
+void MsQuickChainLoadPlatformSymbolsNoOp() | ||
+{ | ||
+ QUIC_CREDENTIAL_CONFIG* SelfSignedCertParams = (QUIC_CREDENTIAL_CONFIG*)CxPlatGetSelfSignedCert(CXPLAT_SELF_SIGN_CERT_USER, FALSE, NULL); | ||
+ CxPlatFreeSelfSignedCert(SelfSignedCertParams); | ||
+} | ||
+ | ||
void | ||
MsQuicLibraryLoad( | ||
void | ||
diff --git a/src/bin/winuser/msquic.def.in b/src/bin/winuser/msquic.def.in | ||
index afaed5d..fa7d19a 100644 | ||
--- a/src/bin/winuser/msquic.def.in | ||
+++ b/src/bin/winuser/msquic.def.in | ||
@@ -3,3 +3,6 @@ LIBRARY @QUIC_LIBRARY_NAME@ | ||
EXPORTS | ||
MsQuicOpenVersion | ||
MsQuicClose | ||
+ CxPlatGetSelfSignedCert | ||
+ CxPlatFreeSelfSignedCert | ||
+ CxPlatLogAssert |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,24 @@ | ||
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt | ||
index 2376823..d0592a3 100644 | ||
index 18048e3..4fcd161 100644 | ||
--- a/src/bin/CMakeLists.txt | ||
+++ b/src/bin/CMakeLists.txt | ||
@@ -253,14 +253,14 @@ endif() | ||
@@ -11,6 +11,7 @@ endif() | ||
|
||
if(BUILD_SHARED_LIBS) | ||
target_include_directories(msquic PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc> | ||
- $<INSTALL_INTERFACE:${include_dest}>) | ||
+ $<INSTALL_INTERFACE:include>) | ||
else() | ||
target_include_directories(msquic_static INTERFACE | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc> | ||
- $<INSTALL_INTERFACE:${include_dest}>) | ||
+ $<INSTALL_INTERFACE:include>) | ||
target_include_directories(msquic INTERFACE | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../inc> | ||
- $<INSTALL_INTERFACE:${include_dest}>) | ||
+ $<INSTALL_INTERFACE:include>) | ||
add_library(msquic SHARED ${SOURCES}) | ||
+ target_include_directories(msquic PUBLIC $<INSTALL_INTERFACE:include>) | ||
target_link_libraries(msquic PRIVATE core msquic_platform inc warnings logging base_link main_binary_link_args) | ||
set_target_properties(msquic PROPERTIES OUTPUT_NAME ${QUIC_LIBRARY_NAME}) | ||
if (NOT WIN32) | ||
@@ -261,7 +262,10 @@ if(WIN32) | ||
endif() | ||
|
||
set(PUBLIC_HEADERS | ||
@@ -269,11 +269,10 @@ set(PUBLIC_HEADERS | ||
../inc/msquic_posix.h | ||
../inc/quic_sal_stub.h) | ||
|
||
-if(BUILD_SHARED_LIBS) | ||
- install(TARGETS msquic EXPORT msquic DESTINATION lib) | ||
-else() | ||
- install(FILES ${QUIC_STATIC_LIBRARY} DESTINATION lib) | ||
-endif() | ||
+install(TARGETS msquic EXPORT msquic | ||
if(BUILD_SHARED_LIBS) | ||
- install(TARGETS msquic msquic_platform inc logging_inc warnings main_binary_link_args ${OTHER_TARGETS} EXPORT msquic DESTINATION lib) | ||
+ install(TARGETS msquic EXPORT msquic | ||
+ RUNTIME DESTINATION bin | ||
+ ARCHIVE DESTINATION lib | ||
+ LIBRARY DESTINATION lib) | ||
install(FILES ${PUBLIC_HEADERS} DESTINATION include) | ||
|
||
configure_file(msquic-config.cmake.in ${CMAKE_BINARY_DIR}/msquic-config.cmake) | ||
else() | ||
install(FILES ${QUIC_STATIC_LIBRARY} DESTINATION lib) | ||
endif() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Vcpkg triplet determines VCPKG_CRT_LINKAGE determines the CRT lib.