# - Try to find mbedTLS # Once done this will define # # Read-Only variables # MBEDTLS_FOUND - system has mbedTLS # MBEDTLS_INCLUDE_DIR - the mbedTLS include directory # MBEDTLS_LIBRARY_DIR - the mbedTLS library directory # MBEDTLS_LIBRARIES - Link these to use mbedTLS # MBEDTLS_LIBRARY - path to mbedTLS library # MBEDX509_LIBRARY - path to mbedTLS X.509 library # MBEDCRYPTO_LIBRARY - path to mbedTLS Crypto library FIND_PATH(MBEDTLS_INCLUDE_DIR mbedtls/version.h) IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARIES) # Already in cache, be silent SET(MBEDTLS_FIND_QUIETLY TRUE) ENDIF() FIND_LIBRARY(MBEDTLS_LIBRARY NAMES mbedtls libmbedtls libmbedx509) FIND_LIBRARY(MBEDX509_LIBRARY NAMES mbedx509 libmbedx509) FIND_LIBRARY(MBEDCRYPTO_LIBRARY NAMES mbedcrypto libmbedcrypto) IF(MBEDTLS_INCLUDE_DIR AND MBEDTLS_LIBRARY AND MBEDX509_LIBRARY AND MBEDCRYPTO_LIBRARY) SET(MBEDTLS_FOUND TRUE) ENDIF() IF(MBEDTLS_FOUND) # split mbedTLS into -L and -l linker options, so we can set them for pkg-config GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_DIR ${MBEDTLS_LIBRARY} PATH) GET_FILENAME_COMPONENT(MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY} NAME_WE) GET_FILENAME_COMPONENT(MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY} NAME_WE) GET_FILENAME_COMPONENT(MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY} NAME_WE) STRING(REGEX REPLACE "^lib" "" MBEDTLS_LIBRARY_FILE ${MBEDTLS_LIBRARY_FILE}) STRING(REGEX REPLACE "^lib" "" MBEDX509_LIBRARY_FILE ${MBEDX509_LIBRARY_FILE}) STRING(REGEX REPLACE "^lib" "" MBEDCRYPTO_LIBRARY_FILE ${MBEDCRYPTO_LIBRARY_FILE}) SET(MBEDTLS_LIBRARIES "-L${MBEDTLS_LIBRARY_DIR} -l${MBEDTLS_LIBRARY_FILE} -l${MBEDX509_LIBRARY_FILE} -l${MBEDCRYPTO_LIBRARY_FILE}") IF(NOT MBEDTLS_FIND_QUIETLY) MESSAGE(STATUS "Found mbedTLS:") FILE(READ ${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h MBEDTLSCONTENT) STRING(REGEX MATCH "MBEDTLS_VERSION_STRING +\"[0-9|.]+\"" MBEDTLSMATCH ${MBEDTLSCONTENT}) IF (MBEDTLSMATCH) STRING(REGEX REPLACE "MBEDTLS_VERSION_STRING +\"([0-9|.]+)\"" "\\1" MBEDTLS_VERSION ${MBEDTLSMATCH}) MESSAGE(STATUS " version ${MBEDTLS_VERSION}") ENDIF(MBEDTLSMATCH) MESSAGE(STATUS " TLS: ${MBEDTLS_LIBRARY}") MESSAGE(STATUS " X509: ${MBEDX509_LIBRARY}") MESSAGE(STATUS " Crypto: ${MBEDCRYPTO_LIBRARY}") ENDIF(NOT MBEDTLS_FIND_QUIETLY) ELSE(MBEDTLS_FOUND) IF(MBEDTLS_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find mbedTLS") ENDIF(MBEDTLS_FIND_REQUIRED) ENDIF(MBEDTLS_FOUND) MARK_AS_ADVANCED( MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY_DIR MBEDTLS_LIBRARIES MBEDTLS_LIBRARY MBEDX509_LIBRARY MBEDCRYPTO_LIBRARY )