63 lines
1.8 KiB
CMake
63 lines
1.8 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
|
|
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 ()
|
|
|
|
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()
|