-
Notifications
You must be signed in to change notification settings - Fork 13
/
FindBoringSSL.cmake
132 lines (110 loc) · 4.01 KB
/
FindBoringSSL.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#[=======================================================================[
FindBoringSSL
-----------
Find the BoringSSL encryption library.
This module finds an installed BoringSSL library.
This module defines the following :prop_tgt:`IMPORTED` targets:
``OpenSSL::SSL``
The BoringSSL ``ssl`` library, if found.
``OpenSSL::Crypto``
The BoringSSL ``crypto`` library, if found.
Result Variables
^^^^^^^^^^^^^^^^
This module will set the following variables in your project:
``BORINGSSL_FOUND``
System has the BoringSSL library. If no components are requested it only
requires the crypto library.
``BORINGSSL_INCLUDE_DIR``
The BoringSSL include directory.
``BORINGSSLL_CRYPTO_LIBRARY``
The BoringSSL crypto library.
``BORINGSSL_SSL_LIBRARY``
The BoringSSL SSL library.
``BORINGSSL_PREFIX_SYMBOLS_FOUND``
TRUE if BoringSSL prefixed symbols headers are found.
Hints
^^^^^
The following variables may be set to control search behavior:
``BORINGSSL_ROOT_DIR``
Set to the root directory of an BoringSSL installation.
#]=======================================================================]
if(BORINGSSL_ROOT_DIR
OR NOT
"$ENV{BORINGSSL_ROOT_DIR}"
STREQUAL
"")
set(_BORINGSSL_ROOT_HINTS ${BORINGSSL_ROOT_DIR} ENV BORINGSSL_ROOT_DIR)
endif()
find_path(
BORINGSSL_ROOT_DIR
NAMES include/openssl/ssl.h include/openssl/base.h
HINTS ${_BORINGSSL_ROOT_HINTS})
message(STATUS "BORINGSSL_ROOT_DIR=\"${BORINGSSL_ROOT_DIR}\"")
if(BORINGSSL_ROOT_DIR AND EXISTS ${BORINGSSL_ROOT_DIR})
find_path(
BORINGSSL_INCLUDE_DIR
NAMES openssl/ssl.h openssl/base.h
HINTS ${_BORINGSSL_ROOT_HINTS}/include)
if(WIN32 AND NOT MINGW)
set(LIB_CRYPTO "crypto${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(LIB_SSL "ssl${CMAKE_STATIC_LIBRARY_SUFFIX}")
else()
set(LIB_CRYPTO "libcrypto${CMAKE_STATIC_LIBRARY_SUFFIX}")
set(LIB_SSL "libssl${CMAKE_STATIC_LIBRARY_SUFFIX}")
endif()
find_library(
BORINGSSL_SSL_LIBRARY
NAMES ${LIB_SSL}
HINTS ${BORINGSSL_ROOT_DIR}/lib ${BORINGSSL_ROOT_DIR}/lib/ssl ${BORINGSSL_ROOT_DIR}/ssl
NO_DEFAULT_PATH)
find_library(
BORINGSSL_CRYPTO_LIBRARY
NAMES ${LIB_CRYPTO}
HINTS ${BORINGSSL_ROOT_DIR}/lib ${BORINGSSL_ROOT_DIR}/lib/crypto ${BORINGSSL_ROOT_DIR}/crypto
NO_DEFAULT_PATH)
if(COUCHBASE_CXX_CLIENT_USE_BORINGSSL_PREFIX)
if(EXISTS "${BORINGSSL_INCLUDE_DIR}/boringssl_prefix_symbols.h")
set(BORINGSSL_PREFIX_SYMBOLS_FOUND TRUE)
else()
set(BORINGSSL_PREFIX_SYMBOLS_FOUND FALSE)
endif()
endif()
else()
# set everything to not-found
set(BORINGSSL_INCLUDE_DIR "BORINGSSL_INCLUDE_DIR-NOTFOUND")
set(BORINGSSL_CRYPTO_LIBRARY "BORINGSSL_CRYPTO_LIBRARY-NOTFOUND")
set(BORINGSSL_SSL_LIBRARY "BORINGSSL_SSL_LIBRARY-NOTFOUND")
set(BORINGSSL_PREFIX_SYMBOLS_FOUND FALSE)
endif()
include(FindPackageHandleStandardArgs)
# BORINGSSL_FOUND will be set to TRUE if all the required VARS do not end in -NOTFOUND
find_package_handle_standard_args(
BoringSSL
REQUIRED_VARS BORINGSSL_CRYPTO_LIBRARY BORINGSSL_SSL_LIBRARY BORINGSSL_INCLUDE_DIR
FAIL_MESSAGE "Could NOT Find BoringSSL, try to set the BoringSSL root folder in the variable BORINGSSL_ROOT_DIR")
mark_as_advanced(
BORINGSSL_ROOT_DIR
BORINGSSL_INCLUDE_DIR
BORINGSSL_CRYPTO_LIBRARY
BORINGSSL_SSL_LIBRARY
BORINGSSL_PREFIX_SYMBOLS_FOUND)
if(BORINGSSL_FOUND)
if(NOT TARGET OpenSSL::Crypto AND EXISTS "${BORINGSSL_CRYPTO_LIBRARY}")
add_library(
OpenSSL::Crypto
STATIC
IMPORTED
GLOBAL)
set_target_properties(OpenSSL::Crypto PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BORINGSSL_INCLUDE_DIR}"
IMPORTED_LOCATION "${BORINGSSL_CRYPTO_LIBRARY}")
endif()
if(NOT TARGET OpenSSL::SSL AND EXISTS "${BORINGSSL_SSL_LIBRARY}")
add_library(
OpenSSL::SSL
STATIC
IMPORTED
GLOBAL)
set_target_properties(OpenSSL::SSL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${BORINGSSL_INCLUDE_DIR}"
IMPORTED_LOCATION "${BORINGSSL_SSL_LIBRARY}")
endif()
endif()