2019-02-06 14:20:44 +08:00
|
|
|
# FindLibreSSL
|
|
|
|
|
|
|
|
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
|
|
|
|
if(LIBRESSL_USE_STATIC_LIBS)
|
|
|
|
set(_libressl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
|
|
if(WIN32)
|
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .lib .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
|
|
else()
|
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES .a )
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2019-02-07 00:51:47 +08:00
|
|
|
set(_LibreSSL_HINTS "")
|
|
|
|
if(WIN32)
|
|
|
|
set(_LibreSSL_HINTS "C:\\Program Files\\LibreSSL")
|
|
|
|
endif()
|
|
|
|
|
2019-02-06 14:20:44 +08:00
|
|
|
find_path(LIBRESSL_INCLUDE_DIR
|
|
|
|
NAMES
|
|
|
|
tls.h
|
|
|
|
PATH_SUFFIXES
|
|
|
|
include
|
2019-02-07 00:51:47 +08:00
|
|
|
HINTS
|
|
|
|
"${_LibreSSL_HINTS}"
|
2019-02-06 14:20:44 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
find_library(LIBRESSL_CRYPTO_LIBRARY
|
|
|
|
NAMES crypto
|
2019-02-07 00:51:47 +08:00
|
|
|
NAMES_PER_DIR ${_LIBRESSL_HINTS_AND_PATHS}
|
|
|
|
PATH_SUFFIXES lib
|
|
|
|
HINTS "${_LibreSSL_HINTS}")
|
2019-02-06 14:20:44 +08:00
|
|
|
|
|
|
|
find_library(LIBRESSL_SSL_LIBRARY
|
|
|
|
NAMES ssl
|
2019-02-07 00:51:47 +08:00
|
|
|
PATH_SUFFIXES lib
|
|
|
|
HINTS "${_LibreSSL_HINTS}")
|
2019-02-06 14:20:44 +08:00
|
|
|
|
|
|
|
find_library(LIBRESSL_TLS_LIBRARY
|
|
|
|
NAMES tls
|
2019-02-07 00:51:47 +08:00
|
|
|
PATH_SUFFIXES lib
|
|
|
|
HINTS "${_LibreSSL_HINTS}")
|
2019-02-06 14:20:44 +08:00
|
|
|
|
|
|
|
mark_as_advanced(LIBRESSL_CRYPTO_LIBRARY LIBRESSL_SSL_LIBRARY LIBRESSL_TLS_LIBRARY)
|
|
|
|
|
|
|
|
find_package_handle_standard_args(LibreSSL
|
|
|
|
REQUIRED_VARS
|
|
|
|
LIBRESSL_CRYPTO_LIBRARY
|
|
|
|
LIBRESSL_SSL_LIBRARY
|
|
|
|
LIBRESSL_TLS_LIBRARY
|
|
|
|
LIBRESSL_INCLUDE_DIR
|
|
|
|
FAIL_MESSAGE
|
|
|
|
"Could NOT find LibreSSL, try to set the path to LibreSSL root folder in the system variable LibreSSL_ROOT"
|
|
|
|
)
|
|
|
|
|
|
|
|
if(LIBRESSL_FOUND)
|
|
|
|
add_library(LibreSSL INTERFACE)
|
|
|
|
target_include_directories(LibreSSL INTERFACE "${LIBRESSL_INCLUDE_DIR}")
|
|
|
|
# in theory we could make those components. However there are good reasons not to do that:
|
|
|
|
# 1. FDB links against all of them anyways
|
|
|
|
# 2. The order in which we link them is important and the dependency graph would become kind of complex...
|
|
|
|
# So if this module should ever be reused to allow to only link against some of the libraries, this
|
|
|
|
# should probably be rewritten
|
|
|
|
target_link_libraries(LibreSSL INTERFACE "${LIBRESSL_TLS_LIBRARY}" "${LIBRESSL_SSL_LIBRARY}" "${LIBRESSL_CRYPTO_LIBRARY}")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(LIBRESSL_USE_STATIC_LIBS)
|
|
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_libressl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
|
|
endif()
|