mirror of
https://github.com/gnif/LookingGlass.git
synced 2026-11-14 07:47:19 +00:00
[client] windows: use vcpkg OpenSSL for MsQuic
This commit is contained in:
@@ -28,7 +28,8 @@
|
|||||||
"ENABLE_NETWORK": true,
|
"ENABLE_NETWORK": true,
|
||||||
"ENABLE_WASAPI": true,
|
"ENABLE_WASAPI": true,
|
||||||
"OPTIMIZE_FOR_NATIVE": "OFF",
|
"OPTIMIZE_FOR_NATIVE": "OFF",
|
||||||
"VCPKG_TARGET_TRIPLET": "x64-windows"
|
"VCPKG_OVERLAY_TRIPLETS": "${sourceDir}/cmake/vcpkg-triplets",
|
||||||
|
"VCPKG_TARGET_TRIPLET": "x64-windows-lg"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
9
client/cmake/vcpkg-triplets/x64-windows-lg.cmake
Normal file
9
client/cmake/vcpkg-triplets/x64-windows-lg.cmake
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
set(VCPKG_TARGET_ARCHITECTURE x64)
|
||||||
|
set(VCPKG_CRT_LINKAGE dynamic)
|
||||||
|
set(VCPKG_PROVIDED_FORTRAN ON)
|
||||||
|
|
||||||
|
if(PORT STREQUAL "openssl")
|
||||||
|
set(VCPKG_LIBRARY_LINKAGE static)
|
||||||
|
else()
|
||||||
|
set(VCPKG_LIBRARY_LINKAGE dynamic)
|
||||||
|
endif()
|
||||||
@@ -11,6 +11,11 @@
|
|||||||
{
|
{
|
||||||
"name": "libsamplerate",
|
"name": "libsamplerate",
|
||||||
"platform": "windows"
|
"platform": "windows"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openssl",
|
||||||
|
"default-features": false,
|
||||||
|
"platform": "windows"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,30 +105,50 @@ function(lg_add_static_msquic)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
if(NOT CMAKE_GENERATOR MATCHES "^Ninja")
|
if(NOT CMAKE_GENERATOR STREQUAL "Ninja")
|
||||||
message(FATAL_ERROR
|
message(FATAL_ERROR
|
||||||
"The native Windows MsQuic build requires Ninja or Ninja "
|
"The native Windows MsQuic build requires Ninja")
|
||||||
"Multi-Config")
|
|
||||||
endif()
|
|
||||||
if(NOT EXISTS
|
|
||||||
"${LG_MSQUIC_SOURCE_DIR}/submodules/openssl/Configure")
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"The MsQuic OpenSSL submodule is not initialized; run "
|
|
||||||
"git submodule update --init --recursive")
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_program(LG_MSQUIC_CL NAMES cl REQUIRED)
|
find_program(LG_MSQUIC_CL NAMES cl REQUIRED)
|
||||||
find_program(LG_MSQUIC_NMAKE NAMES nmake REQUIRED)
|
|
||||||
find_program(LG_MSQUIC_NASM NAMES nasm REQUIRED)
|
set(OPENSSL_USE_STATIC_LIBS TRUE)
|
||||||
find_program(LG_MSQUIC_PERL NAMES perl REQUIRED)
|
find_package(OpenSSL 3.5 REQUIRED COMPONENTS SSL Crypto)
|
||||||
|
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
set(LG_MSQUIC_OPENSSL_CONFIG DEBUG)
|
||||||
|
else()
|
||||||
|
set(LG_MSQUIC_OPENSSL_CONFIG RELEASE)
|
||||||
|
endif()
|
||||||
|
get_target_property(LG_MSQUIC_OPENSSL_SSL_LIBRARY
|
||||||
|
OpenSSL::SSL "IMPORTED_LOCATION_${LG_MSQUIC_OPENSSL_CONFIG}")
|
||||||
|
get_target_property(LG_MSQUIC_OPENSSL_CRYPTO_LIBRARY
|
||||||
|
OpenSSL::Crypto "IMPORTED_LOCATION_${LG_MSQUIC_OPENSSL_CONFIG}")
|
||||||
|
if(NOT EXISTS "${LG_MSQUIC_OPENSSL_SSL_LIBRARY}" OR
|
||||||
|
NOT EXISTS "${LG_MSQUIC_OPENSSL_CRYPTO_LIBRARY}")
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Static MSVC OpenSSL libraries were not found")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_filename_component(LG_MSQUIC_OPENSSL_SSL_DIR
|
||||||
|
"${LG_MSQUIC_OPENSSL_SSL_LIBRARY}" DIRECTORY)
|
||||||
|
get_filename_component(LG_MSQUIC_OPENSSL_CRYPTO_DIR
|
||||||
|
"${LG_MSQUIC_OPENSSL_CRYPTO_LIBRARY}" DIRECTORY)
|
||||||
|
if(NOT "${LG_MSQUIC_OPENSSL_SSL_DIR}" STREQUAL
|
||||||
|
"${LG_MSQUIC_OPENSSL_CRYPTO_DIR}")
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"The MSVC OpenSSL SSL and Crypto libraries must share a directory")
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND LG_MSQUIC_CMAKE_ARGS
|
list(APPEND LG_MSQUIC_CMAKE_ARGS
|
||||||
"-DQUIC_TLS_LIB=openssl"
|
"-DQUIC_TLS_LIB=openssl"
|
||||||
"-DQUIC_USE_EXTERNAL_OPENSSL=OFF"
|
"-DQUIC_USE_EXTERNAL_OPENSSL=ON"
|
||||||
"-DQUIC_USE_SYSTEM_LIBCRYPTO=OFF"
|
"-DQUIC_USE_SYSTEM_LIBCRYPTO=OFF"
|
||||||
"-DQUIC_OPENSSL_INCLUDE_DIR="
|
"-DQUIC_OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR}"
|
||||||
"-DQUIC_OPENSSL_LIB_DIR="
|
"-DQUIC_OPENSSL_LIB_DIR=${LG_MSQUIC_OPENSSL_SSL_DIR}"
|
||||||
"-DQUIC_OPENSSL_ROOT_DIR="
|
"-DQUIC_OPENSSL_ROOT_DIR="
|
||||||
|
"-DLIB_SSL=${LG_MSQUIC_OPENSSL_SSL_LIBRARY}"
|
||||||
|
"-DLIB_CRYPTO=${LG_MSQUIC_OPENSSL_CRYPTO_LIBRARY}"
|
||||||
"-DCMAKE_C_COMPILER=${LG_MSQUIC_CL}"
|
"-DCMAKE_C_COMPILER=${LG_MSQUIC_CL}"
|
||||||
"-DCMAKE_CXX_COMPILER=${LG_MSQUIC_CL}")
|
"-DCMAKE_CXX_COMPILER=${LG_MSQUIC_CL}")
|
||||||
if(NOT CMAKE_CONFIGURATION_TYPES)
|
if(NOT CMAKE_CONFIGURATION_TYPES)
|
||||||
|
|||||||
@@ -17,12 +17,11 @@ Install the following tools:
|
|||||||
- CMake 3.21 or newer
|
- CMake 3.21 or newer
|
||||||
- Ninja, with ``ninja.exe`` available on ``PATH``
|
- Ninja, with ``ninja.exe`` available on ``PATH``
|
||||||
- Git
|
- Git
|
||||||
- Perl
|
|
||||||
- NASM
|
|
||||||
- vcpkg
|
- vcpkg
|
||||||
|
|
||||||
Set ``VCPKG_ROOT`` to the vcpkg checkout. The client manifest installs native
|
Set ``VCPKG_ROOT`` to the vcpkg checkout. The client manifest installs native
|
||||||
MSVC-ABI builds of ANGLE and libsamplerate automatically.
|
MSVC-ABI builds of ANGLE, libsamplerate, and static OpenSSL automatically.
|
||||||
|
Vcpkg also manages the Perl and NASM tools used to build OpenSSL.
|
||||||
|
|
||||||
Ninja can be installed with ``winget install Ninja-build.Ninja``. Open a new
|
Ninja can be installed with ``winget install Ninja-build.Ninja``. Open a new
|
||||||
Developer PowerShell after installing it and confirm that ``ninja --version``
|
Developer PowerShell after installing it and confirm that ``ninja --version``
|
||||||
|
|||||||
Reference in New Issue
Block a user