|
| 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 | +FIND_PATH(MBEDTLS_INCLUDE_DIR mbedtls/version.h) |
| 14 | + |
| 15 | +IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES) |
| 16 | + # Already in cache, be silent |
| 17 | + SET(MBEDTLS_FIND_QUIETLY TRUE) |
| 18 | +ENDIF() |
| 19 | + |
| 20 | +FIND_LIBRARY(MBEDTLS_LIBRARY NAMES mbedtls libmbedtls libmbedx509) |
| 21 | +FIND_LIBRARY(MBEDX509_LIBRARY NAMES mbedx509 libmbedx509) |
| 22 | +FIND_LIBRARY(MBEDCRYPTO_LIBRARY NAMES mbedcrypto libmbedcrypto) |
| 23 | + |
| 24 | +IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY) |
| 25 | + SET(MBEDTLS_FOUND TRUE) |
| 26 | +ENDIF() |
| 27 | + |
| 28 | +IF(MBEDTLS_FOUND) |
| 29 | + # split mbedTLS into -L and -l linker options, so we can set them for pkg-config |
| 30 | + GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_DIR ${MBEDTLS_LIBRARY} PATH) |
| 31 | + GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY} NAME_WE) |
| 32 | + GET_FILENAME_COMPONENT(MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY} NAME_WE) |
| 33 | + GET_FILENAME_COMPONENT(MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY} NAME_WE) |
| 34 | + STRING(REGEX REPLACE "^lib" "" MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY_FILE}) |
| 35 | + STRING(REGEX REPLACE "^lib" "" MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY_FILE}) |
| 36 | + STRING(REGEX REPLACE "^lib" "" MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY_FILE}) |
| 37 | + SET(MBEDTLS_LIBRARIES "-L${MBEDTLS_LIBRARY_DIR} -l${MBEDTLS_LIBRARY_FILE} -l${MBEDX509_LIBRARY_FILE} -l${MBEDCRYPTO_LIBRARY_FILE}") |
| 38 | + |
| 39 | + IF(NOT MBEDTLS_FIND_QUIETLY) |
| 40 | + MESSAGE(STATUS "Found mbedTLS:") |
| 41 | + FILE(READ ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLSCONTENT) |
| 42 | + STRING(REGEX MATCH "MBEDTLS_VERSION_STRING +\"[0-9|.]+\"" MBEDTLSMATCH ${MBEDTLSCONTENT}) |
| 43 | + IF (MBEDTLSMATCH) |
| 44 | + STRING(REGEX REPLACE "MBEDTLS_VERSION_STRING +\"([0-9|.]+)\"" "\\1" MBEDTLS_VERSION ${MBEDTLSMATCH}) |
| 45 | + MESSAGE(STATUS " version ${MBEDTLS_VERSION}") |
| 46 | + ENDIF(MBEDTLSMATCH) |
| 47 | + MESSAGE(STATUS " TLS: ${MBEDTLS_LIBRARY}") |
| 48 | + MESSAGE(STATUS " X509: ${MBEDX509_LIBRARY}") |
| 49 | + MESSAGE(STATUS " Crypto: ${MBEDCRYPTO_LIBRARY}") |
| 50 | + ENDIF(NOT MBEDTLS_FIND_QUIETLY) |
| 51 | +ELSE(MBEDTLS_FOUND) |
| 52 | + IF(MBEDTLS_FIND_REQUIRED) |
| 53 | + MESSAGE(FATAL_ERROR "Could not find mbedTLS") |
| 54 | + ENDIF(MBEDTLS_FIND_REQUIRED) |
| 55 | +ENDIF(MBEDTLS_FOUND) |
| 56 | + |
| 57 | +MARK_AS_ADVANCED( |
| 58 | + MBEDTLS_INCLUDE_DIR |
| 59 | + MBEDTLS_LIBRARY_DIR |
| 60 | + MBEDTLS_LIBRARIES |
| 61 | + MBEDTLS_LIBRARY |
| 62 | + MBEDX509_LIBRARY |
| 63 | + MBEDCRYPTO_LIBRARY |
| 64 | +) |
0 commit comments