zephyr/modules/mbedtls/CMakeLists.txt
Robert Lubos c7327f5f70 modules: mbedtls: Add mbed TLS entropy source based on Zephyr entropy
Add entropy source for mbed TLS based on Zephyr entropy driver.

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2022-08-12 16:17:59 +02:00

72 lines
2.3 KiB
CMake

if(CONFIG_MBEDTLS)
zephyr_interface_library_named(mbedTLS)
if(CONFIG_MBEDTLS_BUILTIN)
target_compile_definitions(mbedTLS INTERFACE
MBEDTLS_CONFIG_FILE="${CONFIG_MBEDTLS_CFG_FILE}"
)
target_include_directories(mbedTLS INTERFACE
${ZEPHYR_CURRENT_MODULE_DIR}/include
# mbedTLS v3.1.0 has psa_crypto_cipher.c including an internal header using <>.
# This line ensures the header can be found in Zephyr.
# When updating to mbedTLS > v3.1.0, please check if this has been corrected,
# and if so remove this include path.
${ZEPHYR_CURRENT_MODULE_DIR}/library
configs
)
zephyr_library()
file(GLOB
mbedtls_sources # This is an output parameter
${ZEPHYR_CURRENT_MODULE_DIR}/library/*.c
)
zephyr_library_sources(
zephyr_init.c
${mbedtls_sources}
)
zephyr_library_sources_ifdef(CONFIG_MBEDTLS_SHELL shell.c)
zephyr_library_app_memory(k_mbedtls_partition)
if(CONFIG_ARCH_POSIX AND CONFIG_ASAN AND NOT CONFIG_64BIT)
# i386 assembly code used in MBEDTLS does not compile with size optimization
# if address sanitizer is enabled, as such switch default optimization level
# to speed
set_property(SOURCE ${ZEPHYR_CURRENT_MODULE_DIR}/mbedtls/library/bignum.c APPEND PROPERTY COMPILE_OPTIONS
"${OPTIMIZE_FOR_SPEED_FLAG}")
endif ()
if(CONFIG_MBEDTLS_ZEPHYR_ENTROPY AND NOT CONFIG_ENTROPY_HAS_DRIVER)
message(WARNING "No entropy device on the system, using fake entropy source!")
endif()
zephyr_library_link_libraries(mbedTLS)
elseif (CONFIG_MBEDTLS_LIBRARY)
# NB: CONFIG_MBEDTLS_LIBRARY is not regression tested and is
# therefore susceptible to bit rot
target_include_directories(mbedTLS INTERFACE
${CONFIG_MBEDTLS_INSTALL_PATH}
)
zephyr_link_libraries(
mbedtls_external
-L${CONFIG_MBEDTLS_INSTALL_PATH}
gcc
)
# Lib mbedtls_external depends on libgcc (I assume?) so to allow
# mbedtls_external to link with gcc we need to ensure it is placed
# after mbedtls_external on the linkers command line.
else()
# If none of either CONFIG_MBEDTLS_BUILTIN or CONFIG_MBEDTLS_LIBRARY
# are defined the users need add a custom Kconfig choice to the
# MBEDTLS_IMPLEMENTATION and manually add the mbedtls library and
# included the required directories for mbedtls in their projects.
endif()
endif()