foundationdb/cmake/FindLibreSSL.cmake

69 lines
2.0 KiB
CMake

# 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()
set(_LibreSSL_HINTS "")
if(WIN32)
set(_LibreSSL_HINTS "C:\\Program Files\\LibreSSL")
endif()
find_path(LIBRESSL_INCLUDE_DIR
NAMES
tls.h
PATH_SUFFIXES
include
HINTS
"${_LibreSSL_HINTS}"
)
find_library(LIBRESSL_CRYPTO_LIBRARY
NAMES crypto
NAMES_PER_DIR ${_LIBRESSL_HINTS_AND_PATHS}
PATH_SUFFIXES lib
HINTS "${_LibreSSL_HINTS}")
find_library(LIBRESSL_SSL_LIBRARY
NAMES ssl
PATH_SUFFIXES lib
HINTS "${_LibreSSL_HINTS}")
find_library(LIBRESSL_TLS_LIBRARY
NAMES tls
PATH_SUFFIXES lib
HINTS "${_LibreSSL_HINTS}")
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()