]>
Commit | Line | Data |
---|---|---|
ac3d33df JK |
1 | # - Try to find mbedTLS |
2 | # Once done this will define | |
3 | # | |
4 | # Read-Only variables | |
5 | # MBEDTLS_FOUND - system has mbedTLS | |
6 | # MBEDTLS_INCLUDE_DIR - the mbedTLS include directory | |
7 | # MBEDTLS_LIBRARY_DIR - the mbedTLS library directory | |
8 | # MBEDTLS_LIBRARIES - Link these to use mbedTLS | |
9 | # MBEDTLS_LIBRARY - path to mbedTLS library | |
10 | # MBEDX509_LIBRARY - path to mbedTLS X.509 library | |
11 | # MBEDCRYPTO_LIBRARY - path to mbedTLS Crypto library | |
12 | # | |
13 | # Hint | |
14 | # MBEDTLS_ROOT_DIR can be pointed to a local mbedTLS installation. | |
15 | ||
16 | SET(_MBEDTLS_ROOT_HINTS | |
17 | ${MBEDTLS_ROOT_DIR} | |
18 | ENV MBEDTLS_ROOT_DIR | |
19 | ) | |
20 | ||
21 | SET(_MBEDTLS_ROOT_HINTS_AND_PATHS | |
22 | HINTS ${_MBEDTLS_ROOT_HINTS} | |
23 | PATHS ${_MBEDTLS_ROOT_PATHS} | |
24 | ) | |
25 | ||
26 | FIND_PATH(MBEDTLS_INCLUDE_DIR | |
27 | NAMES mbedtls/version.h | |
28 | ${_MBEDTLS_ROOT_HINTS_AND_PATHS} | |
29 | PATH_SUFFIXES include | |
30 | ) | |
31 | ||
32 | IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES) | |
33 | # Already in cache, be silent | |
34 | SET(MBEDTLS_FIND_QUIETLY TRUE) | |
35 | ENDIF() | |
36 | ||
37 | FIND_LIBRARY(MBEDTLS_LIBRARY | |
38 | NAMES mbedtls libmbedtls | |
39 | ${_MBEDTLS_ROOT_HINTS_AND_PATHS} | |
40 | PATH_SUFFIXES library | |
41 | ) | |
42 | FIND_LIBRARY(MBEDX509_LIBRARY | |
43 | NAMES mbedx509 libmbedx509 | |
44 | ${_MBEDTLS_ROOT_HINTS_AND_PATHS} | |
45 | PATH_SUFFIXES library | |
46 | ) | |
47 | FIND_LIBRARY(MBEDCRYPTO_LIBRARY | |
48 | NAMES mbedcrypto libmbedcrypto | |
49 | ${_MBEDTLS_ROOT_HINTS_AND_PATHS} | |
50 | PATH_SUFFIXES library | |
51 | ) | |
52 | ||
53 | IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY) | |
54 | SET(MBEDTLS_FOUND TRUE) | |
55 | ENDIF() | |
56 | ||
57 | IF(MBEDTLS_FOUND) | |
58 | # split mbedTLS into -L and -l linker options, so we can set them for pkg-config | |
59 | GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_DIR ${MBEDTLS_LIBRARY} PATH) | |
60 | GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY} NAME_WE) | |
61 | GET_FILENAME_COMPONENT(MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY} NAME_WE) | |
62 | GET_FILENAME_COMPONENT(MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY} NAME_WE) | |
63 | STRING(REGEX REPLACE "^lib" "" MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY_FILE}) | |
64 | STRING(REGEX REPLACE "^lib" "" MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY_FILE}) | |
65 | STRING(REGEX REPLACE "^lib" "" MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY_FILE}) | |
66 | SET(MBEDTLS_LIBRARIES "-L${MBEDTLS_LIBRARY_DIR} -l${MBEDTLS_LIBRARY_FILE} -l${MBEDX509_LIBRARY_FILE} -l${MBEDCRYPTO_LIBRARY_FILE}") | |
67 | ||
68 | IF(NOT MBEDTLS_FIND_QUIETLY) | |
69 | MESSAGE(STATUS "Found mbedTLS:") | |
70 | FILE(READ ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLSCONTENT) | |
71 | STRING(REGEX MATCH "MBEDTLS_VERSION_STRING +\"[0-9|.]+\"" MBEDTLSMATCH ${MBEDTLSCONTENT}) | |
72 | IF (MBEDTLSMATCH) | |
73 | STRING(REGEX REPLACE "MBEDTLS_VERSION_STRING +\"([0-9|.]+)\"" "\\1" MBEDTLS_VERSION ${MBEDTLSMATCH}) | |
74 | MESSAGE(STATUS " version ${MBEDTLS_VERSION}") | |
75 | ENDIF(MBEDTLSMATCH) | |
76 | MESSAGE(STATUS " TLS: ${MBEDTLS_LIBRARY}") | |
77 | MESSAGE(STATUS " X509: ${MBEDX509_LIBRARY}") | |
78 | MESSAGE(STATUS " Crypto: ${MBEDCRYPTO_LIBRARY}") | |
79 | ENDIF(NOT MBEDTLS_FIND_QUIETLY) | |
80 | ELSE(MBEDTLS_FOUND) | |
81 | IF(MBEDTLS_FIND_REQUIRED) | |
82 | MESSAGE(FATAL_ERROR "Could not find mbedTLS") | |
83 | ENDIF(MBEDTLS_FIND_REQUIRED) | |
84 | ENDIF(MBEDTLS_FOUND) | |
85 | ||
86 | MARK_AS_ADVANCED( | |
87 | MBEDTLS_INCLUDE_DIR | |
88 | MBEDTLS_LIBRARY_DIR | |
89 | MBEDTLS_LIBRARIES | |
90 | MBEDTLS_LIBRARY | |
91 | MBEDX509_LIBRARY | |
92 | MBEDCRYPTO_LIBRARY | |
93 | ) |