From ba35a11e82236a89007a831c4c8b0206764799ec Mon Sep 17 00:00:00 2001 From: Zach H Date: Tue, 7 Feb 2023 13:47:50 -0800 Subject: [PATCH] Find OpenSSL on Windows (#4730) --- README.md | 1 + cmake/FindVCredistRuntime.cmake | 14 +++++++++----- cmake/FindWin32SslRuntime.cmake | 15 ++++++++++----- vcpkg | 2 +- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index bd4ad308..710aa9a0 100644 --- a/README.md +++ b/README.md @@ -116,6 +116,7 @@ The following flags can be passed to `cmake`: - `-DUPDATE_TRANSLATIONS=1` Configure `make` to update the translation .ts files for new strings in the source code. Note: Running `make clean` will remove the .ts files (default 0 = no). - `-DTEST=1` Enable regression tests (default 0 = no). Note: needs googletest, will be downloaded on the fly if unavailable. To run tests: ```make test```. - `-DFORCE_USE_QT5=1` Skip looking for Qt6 before trying to find Qt5 +- `-DOPEN_SSL_PATH=C:/Path/To/Tools/OpenSSL/Win_x64/bin"` Designate the OpenSSL Path if you're using non-standard directives # Run diff --git a/cmake/FindVCredistRuntime.cmake b/cmake/FindVCredistRuntime.cmake index 718d801c..b4a95275 100644 --- a/cmake/FindVCredistRuntime.cmake +++ b/cmake/FindVCredistRuntime.cmake @@ -9,7 +9,8 @@ if(WIN32) set(REDIST_ARCH x86) endif() - set(REDIST_FILE vcredist_${REDIST_ARCH}.exe) + # VS 2017 uses vcredist_ARCH.exe, VS 2022 uses vc_redist.ARCH.exe + set(REDIST_FILE_NAMES vcredist_${REDIST_ARCH}.exe vc_redist.${REDIST_ARCH}.exe) set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE) include(InstallRequiredSystemLibraries) @@ -22,10 +23,13 @@ if(WIN32) get_filename_component(_path ${_path} DIRECTORY) get_filename_component(_path ${_path}/../../ ABSOLUTE) - if(EXISTS "${_path}/${REDIST_FILE}") # VS 2017 - set(VCREDISTRUNTIME_FOUND "YES") - set(VCREDISTRUNTIME_FILE ${_path}/${REDIST_FILE}) - endif() + foreach(redist_file ${REDIST_FILE_NAMES}) + if(EXISTS "${_path}/${REDIST_FILE}") + set(VCREDISTRUNTIME_FOUND "YES") + set(VCREDISTRUNTIME_FILE ${_path}/${redist_file}) + break() + endif() + endforeach() endif() if(VCREDISTRUNTIME_FOUND) diff --git a/cmake/FindWin32SslRuntime.cmake b/cmake/FindWin32SslRuntime.cmake index 08146d6f..4164ea60 100644 --- a/cmake/FindWin32SslRuntime.cmake +++ b/cmake/FindWin32SslRuntime.cmake @@ -9,8 +9,12 @@ if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") message(STATUS "Looking for OpenSSL for ${CMAKE_GENERATOR_PLATFORM}") file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) set(_OPENSSL_ROOT_PATHS - "$ENV{VCPKG_PACKAGES_DIR}/x64-windows/bin" "C:/OpenSSL-Win64/bin" "C:/OpenSSL-Win64" - "C:/Tools/vcpkg/installed/x64-windows/bin" "${_programfiles}/OpenSSL-Win64" + ${OPEN_SSL_PATH} + "$ENV{VCPKG_PACKAGES_DIR}/x64-windows/bin" + "C:/OpenSSL-Win64/bin" + "C:/OpenSSL-Win64" + "C:/Tools/vcpkg/installed/x64-windows/bin" + "${_programfiles}/OpenSSL-Win64" "D:/a/Cockatrice/Qt/Tools/OpenSSL/Win_x64/bin" ) unset(_programfiles) @@ -18,6 +22,7 @@ elseif("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") message(STATUS "Looking for OpenSSL for ${CMAKE_GENERATOR_PLATFORM}") file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles) set(_OPENSSL_ROOT_PATHS + ${OPEN_SSL_PATH} "$ENV{VCPKG_PACKAGES_DIR}/x86-windows/bin" "C:/OpenSSL-Win32/bin" "C:/OpenSSL-Win32" @@ -30,8 +35,8 @@ elseif("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") unset(_programfiles) endif() -message(STATUS "Looking for OpenSSL @ $ENV{CMAKE_GENERATOR_PLATFORM} in ${_OPENSSL_ROOT_PATHS}") -if("$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") +message(STATUS "Looking for OpenSSL @ ${CMAKE_GENERATOR_PLATFORM} in ${_OPENSSL_ROOT_PATHS}") +if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") find_file( WIN32SSLRUNTIME_LIBEAY NAMES libcrypto-1_1-x64.dll libcrypto.dll @@ -44,7 +49,7 @@ if("$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "x64") PATHS ${_OPENSSL_ROOT_PATHS} NO_DEFAULT_PATH ) -elseif("$ENV{CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") +elseif("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "Win32") find_file( WIN32SSLRUNTIME_LIBEAY NAMES libcrypto-1_1.dll libcrypto.dll diff --git a/vcpkg b/vcpkg index 79fa9d85..c30de8e1 160000 --- a/vcpkg +++ b/vcpkg @@ -1 +1 @@ -Subproject commit 79fa9d85cb4510b05c2657bd7ec8a6a2cb266dc5 +Subproject commit c30de8e1369e03f4a569f8f224eed418dd0949bb