CMake: Fix HAVE_openssl config test when using static OpenSSL
When using static OpenSSL, HAVE_openssl test will fail, because of unresolved external symbols. These symbols are from Ws2_32.lib and Crypt32.lib, which CMake does not link by default. In qmake build system, we can use OPENSSL_LIBS variable to specify these system libraries. But there is no similar variable in CMake build system. Accordingly, we should let OpenSSL::Crypto target link these libraries. Upstream issue: https://gitlab.kitware.com/cmake/cmake/-/issues/19263 Pick-to: 6.0 Change-Id: I5f27790b251d0a0f71aaf2aed2b933aeb3326f1f Reviewed-by: Craig Scott <craig.scott@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
parent
40bfbe7dd9
commit
29a58af4ca
@ -11,6 +11,18 @@ set(WrapOpenSSL_FOUND OFF)
|
||||
find_package(WrapOpenSSLHeaders ${WrapOpenSSL_FIND_VERSION})
|
||||
|
||||
if(OpenSSL_FOUND)
|
||||
if(WIN32)
|
||||
get_target_property(libType OpenSSL::Crypto TYPE)
|
||||
if(libType STREQUAL "ALIAS")
|
||||
get_target_property(writableLib OpenSSL::Crypto ALIASED_TARGET)
|
||||
else()
|
||||
set(writableLib OpenSSL::Crypto)
|
||||
endif()
|
||||
target_link_libraries(${writableLib} INTERFACE Ws2_32 Crypt32)
|
||||
unset(libType)
|
||||
unset(writableLib)
|
||||
endif()
|
||||
|
||||
set(WrapOpenSSL_FOUND ON)
|
||||
|
||||
add_library(WrapOpenSSL::WrapOpenSSL INTERFACE IMPORTED)
|
||||
|
Loading…
x
Reference in New Issue
Block a user