From 79d796c1260e466ea2b0bd2c589d03e2fc68cbbf Mon Sep 17 00:00:00 2001 From: luncliff Date: Sun, 11 Jul 2021 00:00:07 +0900 Subject: [PATCH 1/7] [ms-quic] create a new port * rewrite to fix garbled history of #18225 --- ports/ms-quic/fix-cmakelists.patch | 68 ++++++++++++++++++++++ ports/ms-quic/fix-platform.patch | 56 ++++++++++++++++++ ports/ms-quic/fix-warnings.patch | 45 +++++++++++++++ ports/ms-quic/portfile.cmake | 93 ++++++++++++++++++++++++++++++ ports/ms-quic/vcpkg.json | 29 ++++++++++ 5 files changed, 291 insertions(+) create mode 100644 ports/ms-quic/fix-cmakelists.patch create mode 100644 ports/ms-quic/fix-platform.patch create mode 100644 ports/ms-quic/fix-warnings.patch create mode 100644 ports/ms-quic/portfile.cmake create mode 100644 ports/ms-quic/vcpkg.json diff --git a/ports/ms-quic/fix-cmakelists.patch b/ports/ms-quic/fix-cmakelists.patch new file mode 100644 index 00000000000000..446067413833cc --- /dev/null +++ b/ports/ms-quic/fix-cmakelists.patch @@ -0,0 +1,68 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0f5abcb..36e2745 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -639,6 +639,8 @@ if(QUIC_CODE_CHECK) + endif() + endif() + ++include(GNUInstallDirs) ++ + add_subdirectory(src/inc) + + # Product code +@@ -649,6 +651,9 @@ 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 ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + 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 + $ +- $) ++ $) + + 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 00000000000000..0b265fd02b8724 --- /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 00000000000000..e117b88290057c --- /dev/null +++ b/ports/ms-quic/fix-warnings.patch @@ -0,0 +1,45 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 36e2745..b8a6893 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -183,8 +183,9 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${QUIC_OUTPUT_DIR}) + + set(QUIC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/inc) + ++add_library(warnings INTERFACE) + if (WIN32) +- set(QUIC_WARNING_FLAGS /WX /W4 /sdl CACHE INTERNAL "") ++ target_compile_options(warnings INTERFACE /W4 /sdl) + set(QUIC_COMMON_FLAGS "") + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") + list(APPEND QUIC_COMMON_FLAGS /MP) +@@ -193,13 +194,14 @@ 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 ++ target_compile_options(warnings INTERFACE ++ -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) +- list(APPEND QUIC_WARNING_FLAGS -Wno-strict-aliasing) ++ target_compile_options(warnings INTERFACE -Wno-strict-aliasing) + elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") +- list(APPEND QUIC_WARNING_FLAGS -Wno-missing-braces -Wno-microsoft-anon-tag) ++ target_compile_options(warnings INTERFACE -Wno-missing-braces -Wno-microsoft-anon-tag) + endif() + endif() + +diff --git a/src/inc/CMakeLists.txt b/src/inc/CMakeLists.txt +index 2376777..2ede055 100644 +--- a/src/inc/CMakeLists.txt ++++ b/src/inc/CMakeLists.txt +@@ -40,6 +40,3 @@ target_link_libraries(inc INTERFACE Threads::Threads ${CMAKE_DL_LIBS} ${ATOMIC}) + if(WIN32) + target_link_libraries(inc INTERFACE ws2_32 schannel ntdll bcrypt ncrypt crypt32 iphlpapi advapi32) + endif() +- +-add_library(warnings INTERFACE) +-target_compile_options(warnings INTERFACE ${QUIC_WARNING_FLAGS}) diff --git a/ports/ms-quic/portfile.cmake b/ports/ms-quic/portfile.cmake new file mode 100644 index 00000000000000..df8a17de04d0e9 --- /dev/null +++ b/ports/ms-quic/portfile.cmake @@ -0,0 +1,93 @@ +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-cmakelists.patch # Adjust install path of build outputs + fix-warnings.patch # Remove /WX, -Werror + fix-platform.patch # Make OpenSSL build use VCPKG_TARGET_ARCHITECTURE +) + +if("quictls" IN_LIST FEATURES) + 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() +endif() + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + tools QUIC_BUILD_TOOLS +) + +if("quictls" IN_LIST FEATURES) + set(TLS_OPTION "openssl") +elseif(VCPKG_TARGET_IS_WINDOWS) + set(TLS_OPTION "schannel") +else() + set(TLS_OPTION "stub") +endif() + +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=${TLS_OPTION} + -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} +) + +if("quictls" IN_LIST FEATURES) + vcpkg_cmake_build(TARGET OpenSSL_Build) # separate build log +endif() +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 00000000000000..a2f7275486ed19 --- /dev/null +++ b/ports/ms-quic/vcpkg.json @@ -0,0 +1,29 @@ +{ + "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", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "quictls" + ], + "features": { + "quictls": { + "description": "Build with quictls/OpenSSL" + }, + "tools": { + "description": "Install the tools after build" + } + } +} From cc3223b63aa164b5f80c484db3b84481ddf12fae Mon Sep 17 00:00:00 2001 From: luncliff Date: Sun, 11 Jul 2021 00:00:38 +0900 Subject: [PATCH 2/7] [ms-quic] update port/version SHA --- versions/baseline.json | 4 ++++ versions/m-/ms-quic.json | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 versions/m-/ms-quic.json diff --git a/versions/baseline.json b/versions/baseline.json index 61cd12944d1de3..11360f09419456 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -4184,6 +4184,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 00000000000000..ead6f63cd5b86f --- /dev/null +++ b/versions/m-/ms-quic.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "dad8ed98a2b563f16822258a7dcbfed8898522ea", + "version": "1.2.0", + "port-version": 0 + } + ] +} From 6b397e929de4161fdbe218cf74cdacad78e327a6 Mon Sep 17 00:00:00 2001 From: luncliff Date: Sun, 11 Jul 2021 00:08:33 +0900 Subject: [PATCH 3/7] [ms-quic] disable windows-static triplet --- ports/ms-quic/vcpkg.json | 2 +- versions/m-/ms-quic.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/ms-quic/vcpkg.json b/ports/ms-quic/vcpkg.json index a2f7275486ed19..5f9368a2cea756 100644 --- a/ports/ms-quic/vcpkg.json +++ b/ports/ms-quic/vcpkg.json @@ -4,7 +4,7 @@ "description": "Cross-platform, C implementation of the IETF QUIC protocol", "homepage": "https://github.com/microsoft/msquic", "license": "MIT", - "supports": "!static", + "supports": "!(windows & static)", "dependencies": [ { "name": "vcpkg-cmake", diff --git a/versions/m-/ms-quic.json b/versions/m-/ms-quic.json index ead6f63cd5b86f..8d9b961c2af6ac 100644 --- a/versions/m-/ms-quic.json +++ b/versions/m-/ms-quic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "dad8ed98a2b563f16822258a7dcbfed8898522ea", + "git-tree": "247b484c277affc97177fdb6b417f5f3113d86a9", "version": "1.2.0", "port-version": 0 } From 3e21713a670c1cc0b0852169918eb57676cb90d6 Mon Sep 17 00:00:00 2001 From: Park DongHa Date: Fri, 16 Jul 2021 12:05:14 +0900 Subject: [PATCH 4/7] Update ports/ms-quic/vcpkg.json Co-authored-by: Robert Schumacher --- ports/ms-quic/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/ms-quic/vcpkg.json b/ports/ms-quic/vcpkg.json index 5f9368a2cea756..bd84d36008b582 100644 --- a/ports/ms-quic/vcpkg.json +++ b/ports/ms-quic/vcpkg.json @@ -4,7 +4,7 @@ "description": "Cross-platform, C implementation of the IETF QUIC protocol", "homepage": "https://github.com/microsoft/msquic", "license": "MIT", - "supports": "!(windows & static)", + "supports": "!(static & staticcrt)", "dependencies": [ { "name": "vcpkg-cmake", From 17de303bca3234acd70fff6f73e20d1bf0d51b67 Mon Sep 17 00:00:00 2001 From: Park DongHa Date: Fri, 16 Jul 2021 12:05:22 +0900 Subject: [PATCH 5/7] Update ports/ms-quic/vcpkg.json Co-authored-by: Robert Schumacher --- ports/ms-quic/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/ms-quic/vcpkg.json b/ports/ms-quic/vcpkg.json index bd84d36008b582..65267bd77a8fe8 100644 --- a/ports/ms-quic/vcpkg.json +++ b/ports/ms-quic/vcpkg.json @@ -20,7 +20,7 @@ ], "features": { "quictls": { - "description": "Build with quictls/OpenSSL" + "description": "Build with a vendored copy of quictls/OpenSSL" }, "tools": { "description": "Install the tools after build" From eebb5f584f97de25022527668f1297b2b24d018b Mon Sep 17 00:00:00 2001 From: dong-ha-park Date: Fri, 16 Jul 2021 12:55:53 +0900 Subject: [PATCH 6/7] [ms-quic] update patch files --- ...fix-cmakelists.patch => fix-install.patch} | 135 +++++++++--------- ports/ms-quic/fix-platform.patch | 2 +- ports/ms-quic/fix-warnings.patch | 67 +++------ ports/ms-quic/portfile.cmake | 6 +- 4 files changed, 93 insertions(+), 117 deletions(-) rename ports/ms-quic/{fix-cmakelists.patch => fix-install.patch} (89%) diff --git a/ports/ms-quic/fix-cmakelists.patch b/ports/ms-quic/fix-install.patch similarity index 89% rename from ports/ms-quic/fix-cmakelists.patch rename to ports/ms-quic/fix-install.patch index 446067413833cc..4df691077096ac 100644 --- a/ports/ms-quic/fix-cmakelists.patch +++ b/ports/ms-quic/fix-install.patch @@ -1,68 +1,67 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0f5abcb..36e2745 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -639,6 +639,8 @@ if(QUIC_CODE_CHECK) - endif() - endif() - -+include(GNUInstallDirs) -+ - add_subdirectory(src/inc) - - # Product code -@@ -649,6 +651,9 @@ 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 -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - 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 - $ -- $) -+ $) - - 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/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 + $ +- $) ++ $) + + 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 index 0b265fd02b8724..7041c30d0e3594 100644 --- a/ports/ms-quic/fix-platform.patch +++ b/ports/ms-quic/fix-platform.patch @@ -1,4 +1,4 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt +diff --git a/CMakeLists.txt b/CMakeLists.txt index 0b670cf..f94f4c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt diff --git a/ports/ms-quic/fix-warnings.patch b/ports/ms-quic/fix-warnings.patch index e117b88290057c..bf99b886386882 100644 --- a/ports/ms-quic/fix-warnings.patch +++ b/ports/ms-quic/fix-warnings.patch @@ -1,45 +1,22 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 36e2745..b8a6893 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -183,8 +183,9 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${QUIC_OUTPUT_DIR}) - - set(QUIC_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/inc) - -+add_library(warnings INTERFACE) - if (WIN32) -- set(QUIC_WARNING_FLAGS /WX /W4 /sdl CACHE INTERNAL "") -+ target_compile_options(warnings INTERFACE /W4 /sdl) - set(QUIC_COMMON_FLAGS "") - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") - list(APPEND QUIC_COMMON_FLAGS /MP) -@@ -193,13 +194,14 @@ 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 -+ target_compile_options(warnings INTERFACE -+ -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) -- list(APPEND QUIC_WARNING_FLAGS -Wno-strict-aliasing) -+ target_compile_options(warnings INTERFACE -Wno-strict-aliasing) - elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") -- list(APPEND QUIC_WARNING_FLAGS -Wno-missing-braces -Wno-microsoft-anon-tag) -+ target_compile_options(warnings INTERFACE -Wno-missing-braces -Wno-microsoft-anon-tag) - endif() - endif() - -diff --git a/src/inc/CMakeLists.txt b/src/inc/CMakeLists.txt -index 2376777..2ede055 100644 ---- a/src/inc/CMakeLists.txt -+++ b/src/inc/CMakeLists.txt -@@ -40,6 +40,3 @@ target_link_libraries(inc INTERFACE Threads::Threads ${CMAKE_DL_LIBS} ${ATOMIC}) - if(WIN32) - target_link_libraries(inc INTERFACE ws2_32 schannel ntdll bcrypt ncrypt crypt32 iphlpapi advapi32) - endif() -- --add_library(warnings INTERFACE) --target_compile_options(warnings INTERFACE ${QUIC_WARNING_FLAGS}) +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 index df8a17de04d0e9..18662c9bdee0e9 100644 --- a/ports/ms-quic/portfile.cmake +++ b/ports/ms-quic/portfile.cmake @@ -7,9 +7,9 @@ vcpkg_from_github( SHA512 6f63d42d950cbba88764332b31818a8627e7d3ecf7393cdef77daedd35a7bb04ac39c642991afb7cca502a346999233023e3b36011916c67e348179838aa7042 HEAD_REF master PATCHES - fix-cmakelists.patch # Adjust install path of build outputs - fix-warnings.patch # Remove /WX, -Werror - fix-platform.patch # Make OpenSSL build use VCPKG_TARGET_ARCHITECTURE + 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 ) if("quictls" IN_LIST FEATURES) From 2ecb24d265c5fa36385e4c5509837a359c112118 Mon Sep 17 00:00:00 2001 From: dong-ha-park Date: Fri, 16 Jul 2021 12:58:45 +0900 Subject: [PATCH 7/7] [ms-quic] make quictls only * reduce feature list for future updates * update version SHA --- ports/ms-quic/portfile.cmake | 63 ++++++++++++++---------------------- ports/ms-quic/vcpkg.json | 6 ---- versions/m-/ms-quic.json | 2 +- 3 files changed, 26 insertions(+), 45 deletions(-) diff --git a/ports/ms-quic/portfile.cmake b/ports/ms-quic/portfile.cmake index 18662c9bdee0e9..e4e44d6733f7b3 100644 --- a/ports/ms-quic/portfile.cmake +++ b/ports/ms-quic/portfile.cmake @@ -12,49 +12,38 @@ vcpkg_from_github( fix-install.patch # Adjust install path of build outputs ) -if("quictls" IN_LIST FEATURES) - 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() +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) - 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}) +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY) +vcpkg_add_to_path(${PERL_EXE_PATH}) - endif() +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 ) -if("quictls" IN_LIST FEATURES) - set(TLS_OPTION "openssl") -elseif(VCPKG_TARGET_IS_WINDOWS) - set(TLS_OPTION "schannel") -else() - set(TLS_OPTION "stub") -endif() - string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT) vcpkg_cmake_configure( @@ -62,7 +51,7 @@ vcpkg_cmake_configure( OPTIONS ${FEATURE_OPTIONS} -DQUIC_SOURCE_LINK=OFF - -DQUIC_TLS=${TLS_OPTION} + -DQUIC_TLS=openssl -DQUIC_TLS_SECRETS_SUPPORT=ON -DQUIC_USE_SYSTEM_LIBCRYPTO=OFF -DQUIC_BUILD_PERF=OFF @@ -71,9 +60,7 @@ vcpkg_cmake_configure( -DQUIC_UWP_BUILD=${VCPKG_TARGET_IS_UWP} ) -if("quictls" IN_LIST FEATURES) - vcpkg_cmake_build(TARGET OpenSSL_Build) # separate build log -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) diff --git a/ports/ms-quic/vcpkg.json b/ports/ms-quic/vcpkg.json index 65267bd77a8fe8..d337a8452e35df 100644 --- a/ports/ms-quic/vcpkg.json +++ b/ports/ms-quic/vcpkg.json @@ -15,13 +15,7 @@ "host": true } ], - "default-features": [ - "quictls" - ], "features": { - "quictls": { - "description": "Build with a vendored copy of quictls/OpenSSL" - }, "tools": { "description": "Install the tools after build" } diff --git a/versions/m-/ms-quic.json b/versions/m-/ms-quic.json index 8d9b961c2af6ac..cc440ecc45b479 100644 --- a/versions/m-/ms-quic.json +++ b/versions/m-/ms-quic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "247b484c277affc97177fdb6b417f5f3113d86a9", + "git-tree": "3188e024233a7d1772922bc11d29d912c6427e25", "version": "1.2.0", "port-version": 0 }