mirror of
https://gitee.com/houstudio/Cdroid.git
synced 2024-12-10 17:02:35 +08:00
213 lines
6.9 KiB
CMake
Executable File
213 lines
6.9 KiB
CMake
Executable File
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
|
#.rst:
|
|
# FindOpenSSL
|
|
# -----------
|
|
#
|
|
# Find the OpenSSL encryption library.
|
|
#
|
|
# Imported Targets
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module defines the following :prop_tgt:`IMPORTED` targets:
|
|
#
|
|
# ``OpenSSL::SSL``
|
|
# The OpenSSL ``ssl`` library, if found.
|
|
# ``OpenSSL::Crypto``
|
|
# The OpenSSL ``crypto`` library, if found.
|
|
#
|
|
# Result Variables
|
|
# ^^^^^^^^^^^^^^^^
|
|
#
|
|
# This module will set the following variables in your project:
|
|
#
|
|
# ``OPENSSL_FOUND``
|
|
# System has the OpenSSL library.
|
|
# ``OPENSSL_INCLUDE_DIR``
|
|
# The OpenSSL include directory.
|
|
# ``OPENSSL_CRYPTO_LIBRARY``
|
|
# The OpenSSL crypto library.
|
|
# ``OPENSSL_SSL_LIBRARY``
|
|
# The OpenSSL SSL library.
|
|
# ``OPENSSL_LIBRARIES``
|
|
# All OpenSSL libraries.
|
|
# ``OPENSSL_VERSION``
|
|
# This is set to ``$major.$minor.$revision$patch`` (e.g. ``0.9.8s``).
|
|
#
|
|
# Hints
|
|
# ^^^^^
|
|
#
|
|
# Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
|
|
# Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
|
|
# Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
|
|
|
|
if (UNIX)
|
|
find_package(PkgConfig QUIET)
|
|
pkg_check_modules(_OPENSSL openssl)
|
|
endif ()
|
|
message("_OPENSSL=${_OPENSSL_INCLUDEDIR} ${_OPENSSL_LIBDIR}")
|
|
# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES
|
|
if(OPENSSL_USE_STATIC_LIBS)
|
|
set(_openssl_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()
|
|
|
|
if (WIN32)
|
|
# http://www.slproweb.com/products/Win32OpenSSL.html
|
|
set(_OPENSSL_ROOT_HINTS
|
|
${OPENSSL_ROOT_DIR}
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-bit)_is1;Inno Setup: App Path]"
|
|
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-bit)_is1;Inno Setup: App Path]"
|
|
ENV OPENSSL_ROOT_DIR
|
|
)
|
|
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
|
|
set(_OPENSSL_ROOT_PATHS
|
|
"${_programfiles}/OpenSSL"
|
|
"${_programfiles}/OpenSSL-Win32"
|
|
"${_programfiles}/OpenSSL-Win64"
|
|
"C:/OpenSSL/"
|
|
"C:/OpenSSL-Win32/"
|
|
"C:/OpenSSL-Win64/"
|
|
)
|
|
unset(_programfiles)
|
|
else ()
|
|
set(_OPENSSL_ROOT_HINTS
|
|
${OPENSSL_ROOT_DIR}
|
|
ENV OPENSSL_ROOT_DIR
|
|
)
|
|
endif ()
|
|
|
|
#set(_OPENSSL_ROOT_PATHS ${CMAKE_SOURCE_DIR}/src/3rdparty/openssl-1.1.1)
|
|
set(_OPENSSL_ROOT_HINTS_AND_PATHS
|
|
HINTS ${_OPENSSL_ROOT_HINTS}
|
|
PATHS ${_OPENSSL_ROOT_PATHS}
|
|
)
|
|
|
|
find_path(OPENSSL_INCLUDE_DIR
|
|
NAMES openssl/ssl.h
|
|
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
|
HINTS ${_OPENSSL_INCLUDEDIR}
|
|
PATH_SUFFIXES
|
|
include
|
|
)
|
|
|
|
find_library(OPENSSL_SSL_LIBRARY
|
|
NAMES ssl ssleay32 ssleay32MD
|
|
NAMES_PER_DIR
|
|
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
|
HINTS ${_OPENSSL_LIBDIR}
|
|
PATH_SUFFIXES lib
|
|
)
|
|
|
|
find_library(OPENSSL_CRYPTO_LIBRARY
|
|
NAMES crypto
|
|
NAMES_PER_DIR
|
|
${_OPENSSL_ROOT_HINTS_AND_PATHS}
|
|
HINTS ${_OPENSSL_LIBDIR}
|
|
PATH_SUFFIXES lib
|
|
)
|
|
|
|
message("OPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} OPENSSL_SSL_LIBRARY=${OPENSSL_SSL_LIBRARY} OPENSSL_CRYPTO_LIBRARY=${OPENSSL_CRYPTO_LIBRARY}")
|
|
mark_as_advanced(OPENSSL_CRYPTO_LIBRARY OPENSSL_SSL_LIBRARY)
|
|
|
|
# compat defines
|
|
set(OPENSSL_SSL_LIBRARIES ${OPENSSL_SSL_LIBRARY})
|
|
set(OPENSSL_CRYPTO_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY})
|
|
|
|
|
|
set(OPENSSL_LIBRARIES ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY} )
|
|
|
|
if (OPENSSL_VERSION)
|
|
find_package_handle_standard_args(OpenSSL
|
|
REQUIRED_VARS
|
|
#OPENSSL_SSL_LIBRARY # FIXME: require based on a component request?
|
|
OPENSSL_CRYPTO_LIBRARY
|
|
OPENSSL_INCLUDE_DIR
|
|
VERSION_VAR
|
|
OPENSSL_VERSION
|
|
FAIL_MESSAGE
|
|
"Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
|
)
|
|
else ()
|
|
find_package_handle_standard_args(OpenSSL "Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR"
|
|
#OPENSSL_SSL_LIBRARY # FIXME: require based on a component request?
|
|
OPENSSL_CRYPTO_LIBRARY
|
|
OPENSSL_INCLUDE_DIR
|
|
)
|
|
endif ()
|
|
|
|
mark_as_advanced(OPENSSL_INCLUDE_DIR OPENSSL_LIBRARIES)
|
|
|
|
if(OPENSSL_FOUND)
|
|
if(NOT TARGET OpenSSL::Crypto AND
|
|
(EXISTS "${OPENSSL_CRYPTO_LIBRARY}" OR
|
|
EXISTS "${LIB_EAY_LIBRARY_DEBUG}" OR
|
|
EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
|
|
)
|
|
add_library(OpenSSL::Crypto UNKNOWN IMPORTED)
|
|
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
|
|
if(EXISTS "${OPENSSL_CRYPTO_LIBRARY}")
|
|
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
IMPORTED_LOCATION "${OPENSSL_CRYPTO_LIBRARY}")
|
|
endif()
|
|
if(EXISTS "${LIB_EAY_LIBRARY_RELEASE}")
|
|
set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS RELEASE)
|
|
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
|
IMPORTED_LOCATION_RELEASE "${LIB_EAY_LIBRARY_RELEASE}")
|
|
endif()
|
|
if(EXISTS "${LIB_EAY_LIBRARY_DEBUG}")
|
|
set_property(TARGET OpenSSL::Crypto APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS DEBUG)
|
|
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
|
|
IMPORTED_LOCATION_DEBUG "${LIB_EAY_LIBRARY_DEBUG}")
|
|
endif()
|
|
endif()
|
|
if(NOT TARGET OpenSSL::SSL AND
|
|
(EXISTS "${OPENSSL_SSL_LIBRARY}" OR
|
|
EXISTS "${SSL_EAY_LIBRARY_DEBUG}" OR
|
|
EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
|
|
)
|
|
add_library(OpenSSL::SSL UNKNOWN IMPORTED)
|
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}")
|
|
if(EXISTS "${OPENSSL_SSL_LIBRARY}")
|
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
|
IMPORTED_LOCATION "${OPENSSL_SSL_LIBRARY}")
|
|
endif()
|
|
if(EXISTS "${SSL_EAY_LIBRARY_RELEASE}")
|
|
set_property(TARGET OpenSSL::SSL APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS RELEASE)
|
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
|
IMPORTED_LOCATION_RELEASE "${SSL_EAY_LIBRARY_RELEASE}")
|
|
endif()
|
|
if(EXISTS "${SSL_EAY_LIBRARY_DEBUG}")
|
|
set_property(TARGET OpenSSL::SSL APPEND PROPERTY
|
|
IMPORTED_CONFIGURATIONS DEBUG)
|
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
|
|
IMPORTED_LOCATION_DEBUG "${SSL_EAY_LIBRARY_DEBUG}")
|
|
endif()
|
|
if(TARGET OpenSSL::Crypto)
|
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
INTERFACE_LINK_LIBRARIES OpenSSL::Crypto)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Restore the original find library ordering
|
|
if(OPENSSL_USE_STATIC_LIBS)
|
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_openssl_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES})
|
|
endif()
|