undefined reference to `mbedtls_ccm_init' and any other mbedtls_ccm functions

I am building an application for the nRF52840 on Linux just using west . I have been struggling with this issue for some time now. The linker can't find any mbedtls_ccm functions no matter what.  

I am including the following headers in my source file 

#include <mbedtls/aes.h>
#include <mbedtls/ccm.h>
#include <mbedtls/sha256.h>

My proj.conf file looks like this : 

# Configurations
# SUBSYSTEM-ACCEL
CONFIG_CTR_ACCEL=y
# SUBSYSTEM-BATT
# @erich CONFIG_CTR_BATT=y
# SUBSYSTEM-BLUETOOTH
CONFIG_CTR_BLE=y
# SUBSYSTEM-BUF
CONFIG_CTR_BUF=y
# SUBSYSTEM-BUTTON
CONFIG_CTR_BUTTON=y
# SUBSYSTEM-CLOUD
CONFIG_CTR_CLOUD=y
CONFIG_SETTINGS_SHELL=y
CONFIG_SETTINGS_FCB=y
CONFIG_FCB=y
CONFIG_IMG_MANAGER=y
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_PM_PARTITION_SIZE_SETTINGS_STORAGE=0x8000
CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
CONFIG_SPI=y
CONFIG_DFU_TARGET=y
CONFIG_DFU_TARGET_STREAM=y
CONFIG_DFU_TARGET_MCUBOOT=y
CONFIG_DFU_TARGET_LOG_LEVEL_DBG=y
CONFIG_STREAM_FLASH_ERASE=y
CONFIG_STREAM_FLASH=y
CONFIG_FILE_SYSTEM=y
CONFIG_FILE_SYSTEM_LITTLEFS=y
CONFIG_FILE_SYSTEM_MKFS=y
CONFIG_FILE_SYSTEM_SHELL=y
CONFIG_SETTINGS_FILE=y
CONFIG_SETTINGS_FILE_PATH="/lfs1/settings/run"
CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
# SUBSYSTEM-CONFIG
CONFIG_CTR_CONFIG=y
# SUBSYSTEM-DEFAULTS
CONFIG_CTR_DEFAULTS=y
# SUBSYSTEM-ENTROPY-GENERATOR
CONFIG_ENTROPY_GENERATOR=y
# SUBSYSTEM-GNSS
CONFIG_CTR_GNSS=y
# SUBSYSTEM-INFO
CONFIG_CTR_INFO=y
# SUBSYSTEM-LED
CONFIG_CTR_LED=y
# SUBSYSTEM-LOG
CONFIG_CTR_LOG=y
# SUBSYSTEM-LTE-V2
CONFIG_CTR_LTE_V2=y
# SUBSYSTEM-RTC
CONFIG_CTR_RTC=y
# SUBSYSTEM-SHELL
CONFIG_CTR_SHELL=y
# SUBSYSTEM-THERM
CONFIG_CTR_THERM=y
# SUBSYSTEM-TINYCRYPT
CONFIG_TINYCRYPT=y
# SUBSYSTEM-TINYCRYPT-SHA256
CONFIG_TINYCRYPT_SHA256=y
# SUBSYSTEM-WDOG
CONFIG_CTR_WDOG=y
# SUBSYSTEM-ZCBOR
CONFIG_ZCBOR=y
CONFIG_ZCBOR_STOP_ON_ERROR=y
# Extra configurations
CONFIG_ADC_NRFX_SAADC=n
CONFIG_ADC_SHELL=n
CONFIG_ADC_TLA2021_INIT_PRIORITY=60
CONFIG_CTR_LTE_V2_GNSS=y
CONFIG_NEWLIB_LIBC_NANO=n
CONFIG_CTR_GNSS_LOG_LEVEL_DBG=y
CONFIG_GNSS_M8_LOG_LEVEL_DBG=y
CONFIG_CTR_GNSS_M8=y
CONFIG_CTR_GPIO=y


CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
#CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n
CONFIG_BT_BONDABLE=n
CONFIG_BT_SMP=n
CONFIG_BT_SETTINGS=y 

CONFIG_BT_DEVICE_NAME="Belter GATT Server"

# GATT dynamic DB support
CONFIG_BT_GATT_DYNAMIC_DB=y

# Optional: Change MTU size
CONFIG_BT_L2CAP_TX_MTU=247
CONFIG_BT_BUF_ACL_RX_SIZE=251
CONFIG_BT_BUF_ACL_TX_SIZE=251

# Logging (optional but useful)
CONFIG_LOG=y
CONFIG_LOG_MODE_IMMEDIATE=y


CONFIG_MBEDTLS=y
CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_AES_C=y
CONFIG_MBEDTLS_CCM_C=y

CONFIG_MBEDTLS_BUILTIN=y
CONFIG_MBEDTLS_ENABLE_HEAP=y
CONFIG_MBEDTLS_HEAP_SIZE=34000
CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=4096
CONFIG_NET_SOCKETS_SOCKOPT_TLS=y

CONFIG_MBEDTLS_SHA256_C=y


CONFIG_POSIX_API=y
CONFIG_POSIX_TIMERS=y

#CONFIG_MBEDTLS_SHA256_ALT=n   # Use software SHA256 implementation

# ### Preserved code "config" (begin)
# ^^^ Preserved code "config" (end)

When I do a west build get the following linker errors. The application builds fine when i disable any mbedtls calls. What am I missing or doing wrong? 

/home/user/firmware/src/app_ble_auth.c:147: undefined reference to `mbedtls_ccm_init'
/home/user/zephyr-sdk-0.17.0/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/user/firmware/src/app_ble_auth.c:151: undefined reference to `mbedtls_ccm_setkey'
/home/user/zephyr-sdk-0.17.0/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/user/firmware/src/app_ble_auth.c:157: undefined reference to `mbedtls_ccm_encrypt_and_tag'
/home/user/zephyr-sdk-0.17.0/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd: /home/user/firmware/src/app_ble_auth.c:169: undefined reference to `mbedtls_ccm_free'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Related