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 include ) zephyr_library() file(GLOB mbedtls_sources # This is an output parameter ${ZEPHYR_CURRENT_MODULE_DIR}/library/*.c ) if(CONFIG_MBEDTLS_DEBUG_EXTRACT_BASENAME_AT_BUILDTIME) zephyr_cc_option(-fmacro-prefix-map=${ZEPHYR_CURRENT_MODULE_DIR}/library/=) endif() zephyr_library_sources( zephyr_init.c ${mbedtls_sources} ) zephyr_library_sources_ifdef(CONFIG_MBEDTLS_DEBUG debug.c) zephyr_library_sources_ifdef(CONFIG_MBEDTLS_SHELL shell.c) # mbedTLS v3.1.0 is having unused variables and functions in /library/ssl_msg.c # To avoid compilation warnings, which are treated as errors in CI, we disable unused variables and functions. # Please check when mbedTLS is updated to version >v3.1.0 if those flags are still needed. # If mbedTLS has fixed the mentioned issue, then please remove the flags. set_source_files_properties(${ZEPHYR_CURRENT_MODULE_DIR}/library/ssl_msg.c PROPERTIES COMPILE_OPTIONS "-Wno-unused-variable;-Wno-unused-function") 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()