Skip to content

Commit

Permalink
CMake: Fix HAVE_openssl config test when using static OpenSSL
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Joerg Bornemann <[email protected]>
  • Loading branch information
lixinwei715 committed Jan 28, 2021
1 parent 40bfbe7 commit 29a58af
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions cmake/FindWrapOpenSSL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 29a58af

Please sign in to comment.