]> git.proxmox.com Git - libgit2.git/blame - cmake/Modules/FindmbedTLS.cmake
New upstream version 0.28.4+dfsg.1
[libgit2.git] / cmake / Modules / FindmbedTLS.cmake
CommitLineData
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
16SET(_MBEDTLS_ROOT_HINTS
17 ${MBEDTLS_ROOT_DIR}
18 ENV MBEDTLS_ROOT_DIR
19)
20
21SET(_MBEDTLS_ROOT_HINTS_AND_PATHS
22 HINTS ${_MBEDTLS_ROOT_HINTS}
23 PATHS ${_MBEDTLS_ROOT_PATHS}
24)
25
26FIND_PATH(MBEDTLS_INCLUDE_DIR
27 NAMES mbedtls/version.h
28 ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
29 PATH_SUFFIXES include
30)
31
32IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES)
33 # Already in cache, be silent
34 SET(MBEDTLS_FIND_QUIETLY TRUE)
35ENDIF()
36
37FIND_LIBRARY(MBEDTLS_LIBRARY
38 NAMES mbedtls libmbedtls
39 ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
40 PATH_SUFFIXES library
41)
42FIND_LIBRARY(MBEDX509_LIBRARY
43 NAMES mbedx509 libmbedx509
44 ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
45 PATH_SUFFIXES library
46)
47FIND_LIBRARY(MBEDCRYPTO_LIBRARY
48 NAMES mbedcrypto libmbedcrypto
49 ${_MBEDTLS_ROOT_HINTS_AND_PATHS}
50 PATH_SUFFIXES library
51)
52
53IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY)
54 SET(MBEDTLS_FOUND TRUE)
55ENDIF()
56
57IF(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)
80ELSE(MBEDTLS_FOUND)
81 IF(MBEDTLS_FIND_REQUIRED)
82 MESSAGE(FATAL_ERROR "Could not find mbedTLS")
83 ENDIF(MBEDTLS_FIND_REQUIRED)
84ENDIF(MBEDTLS_FOUND)
85
86MARK_AS_ADVANCED(
87 MBEDTLS_INCLUDE_DIR
88 MBEDTLS_LIBRARY_DIR
89 MBEDTLS_LIBRARIES
90 MBEDTLS_LIBRARY
91 MBEDX509_LIBRARY
92 MBEDCRYPTO_LIBRARY
93)