Weird error when building libmetal

I'm trying to add matter over thread to my firmware, but I keep getting this error:

[405/588] Building C object modules/libmetal/libmetal/lib/CMakeFiles/metal.dir/dma.c.obj
FAILED: modules/libmetal/libmetal/lib/CMakeFiles/metal.dir/dma.c.obj 
ccache /opt/nordic/ncs/toolchains/580e4ef81c/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc -DKERNEL -DMBEDTLS_CONFIG_FILE=\"nrf-config.h\" -DMBEDTLS_PSA_CRYPTO_CONFIG_FILE=\"nrf-psa-crypto-want-config.h\" -DMBEDTLS_PSA_CRYPTO_USER_CONFIG_FILE=\"nrf-psa-crypto-config.h\" -DMETAL_INTERNAL -DNRF5340_XXAA_APPLICATION -DNRF_802154_ACK_TIMEOUT_ENABLED=1 -DNRF_802154_CARRIER_FUNCTIONS_ENABLED=0 -DNRF_802154_CCA_CORR_LIMIT_DEFAULT=2 -DNRF_802154_CCA_CORR_THRESHOLD_DEFAULT=45 -DNRF_802154_CCA_ED_THRESHOLD_DEFAULT=45 -DNRF_802154_CCA_MODE_DEFAULT=NRF_RADIO_CCA_MODE_ED -DNRF_802154_ECB_PRIORITY=-1 -DNRF_802154_ENCRYPTION_ENABLED=1 -DNRF_802154_ENERGY_DETECTED_VERSION=1 -DNRF_802154_IE_WRITER_ENABLED=1 -DNRF_802154_INTERNAL_RADIO_IRQ_HANDLING=0 -DNRF_802154_PENDING_EXTENDED_ADDRESSES=16 -DNRF_802154_PENDING_SHORT_ADDRESSES=16 -DNRF_802154_PLATFORM_ASSERT_INCLUDE=\"nrf_802154_assert_zephyr.h\" -DNRF_802154_RX_BUFFERS=16 -DNRF_802154_SECURITY_KEY_STORAGE_SIZE=3 -DNRF_802154_SECURITY_WRITER_ENABLED=1 -DNRF_802154_SERIALIZATION_HOST=1 -DNRF_802154_SWI_PRIORITY=1 -DNRF_802154_TX_STARTED_NOTIFY_ENABLED=1 -DNRF_802154_USE_RAW_API=1 -DNRF_SKIP_FICR_NS_COPY_TO_RAM -DUSE_PARTITION_MANAGER=1 -DZCBOR_ASSERTS -D_ANSI_SOURCE -D_FORTIFY_SOURCE=1 -D__LINUX_ERRNO_EXTENSIONS__ -D__PROGRAM_START -D__ZEPHYR__=1 -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/modules/libmetal/libmetal/lib -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/libmetal/libmetal/lib -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/include -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/modules/libmetal/libmetal/lib/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/include -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/zephyr/include/generated -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/soc/arm/nordic_nrf/nrf53 -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/lib/libc/newlib/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/include/zephyr/posix -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/soc/common/nordic_nrf/. -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/soc/arm/nordic_nrf/common/. -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/subsys/bluetooth -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/subsys/settings/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/subsys/trusted_storage/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/tests/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/modules/openthread/platform/. -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/cmsis/CMSIS/Core/Include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/modules/cmsis/. -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/nordic/nrfx -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/nordic/nrfx/drivers/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/nordic/nrfx/mdk -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/modules/hal_nordic/nrfx/. -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/lib/open-amp/open-amp/lib/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/lib/zcbor/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/openthread/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/crypto/nrf_oberon/include/mbedtls -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/crypto/nrf_oberon/include -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/modules/nrf/subsys/nrf_security/src/include/generated -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/subsys/nrf_security/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/ext/oberon/psa/core/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/ext/oberon/psa/core/library -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/crypto/mbedtls/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/crypto/mbedtls/library -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrf/ext/oberon/psa/drivers -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/nrf_802154/serialization/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/nrf_802154/serialization/include/platform -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/nrf_802154/serialization/include/serialization -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/nrf_802154/common/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/modules/hal_nordic/nrf_802154/include -I/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/softdevice_controller/include -I/Users/marciorodrigues/Olibra/code/bond-core2/proto/cJSON_bond/. -I/Users/marciorodrigues/Olibra/code/bond-core2/proto/cJSON_bond/cJSON -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/Osal/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/Osal/rpa_queue -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/SysLog/. -I/Users/marciorodrigues/Olibra/code/bond-core2/utility/BString/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/FixEndian/. -I/Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/build/BondMain/include -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BFTL/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/Beau/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/crc32_bond/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BONDID/. -I/Users/marciorodrigues/Olibra/code/bond-core2/hal/Hal_Pin/. -I/Users/marciorodrigues/Olibra/code/bond-core2/proto/Transport_CLI/. -I/Users/marciorodrigues/Olibra/code/bond-core2/proto/Funnel/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BondToken/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BHook/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BondReset/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/base64_bond/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BLocale/. -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/BDevice/. -I/Users/marciorodrigues/Olibra/code/bond-core2/proto/BondSync/. -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/BFeature/. -I/Users/marciorodrigues/Olibra/code/bond-core2/ctrl/Ctrl32/. -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/Skeds/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BTime/. -I/Users/marciorodrigues/Olibra/code/bond-core2/sys/BTime/posix_tz_db -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/BGroup/. -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/BDebug/. -I/Users/marciorodrigues/Olibra/code/bond-core2/feature/BMock/. -I/Users/marciorodrigues/Olibra/code/bond-core2/hal/RLE/. -isystem /Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/lib/libc/common/include -isystem /Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/nrfxlib/crypto/nrf_cc312_platform/include -fdiagnostics-color=always -Wno-documentation -fno-strict-aliasing -Os -flto -imacros /Users/marciorodrigues/Olibra/code/bond-core2/target/yosemite-m/build/zephyr/include/generated/autoconf.h -fno-common -g -gdwarf-4 -fdiagnostics-color=always -mcpu=cortex-m33 -mthumb -mabi=aapcs -mfpu=fpv5-sp-d16 -mfloat-abi=hard -mfp16-format=ieee -mtp=soft --sysroot=/opt/nordic/ncs/toolchains/580e4ef81c/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi -imacros /Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr/include/zephyr/toolchain/zephyr_stdint.h -Wall -Wformat -Wformat-security -Wno-format-zero-length -Wno-pointer-sign -Wpointer-arith -Wexpansion-to-defined -Wno-unused-but-set-variable -Werror=implicit-int -fno-pic -fno-pie -fno-asynchronous-unwind-tables -ftls-model=local-exec -fno-reorder-functions --param=min-pagesize=0 -fno-defer-pop -fstack-usage -fmacro-prefix-map=/Users/marciorodrigues/Olibra/code/bond-core2/target=CMAKE_SOURCE_DIR -fmacro-prefix-map=/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/zephyr=ZEPHYR_BASE -fmacro-prefix-map=/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr=WEST_TOPDIR -ffunction-sections -fdata-sections -specs=nano.specs -D_POSIX_THREADS -std=c99 -MD -MT modules/libmetal/libmetal/lib/CMakeFiles/metal.dir/dma.c.obj -MF modules/libmetal/libmetal/lib/CMakeFiles/metal.dir/dma.c.obj.d -o modules/libmetal/libmetal/lib/CMakeFiles/metal.dir/dma.c.obj -c /Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/libmetal/libmetal/lib/dma.c
In file included from /opt/nordic/ncs/toolchains/580e4ef81c/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/sys-include/sys/reent.h:503,
                 from /opt/nordic/ncs/toolchains/580e4ef81c/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/sys-include/string.h:11,
                 from /Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/libmetal/libmetal/lib/dma.c:8:
/Users/marciorodrigues/Olibra/code/bond-core2/bsp/nrf-zephyr/modules/hal/libmetal/libmetal/lib/assert.h:15:10: fatal error: metal/system/@PROJECT_SYSTEM@/assert.h: No such file or directory
   15 | #include <metal/system/@PROJECT_SYSTEM@/assert.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

does anyone know what can be causing this and how to fix it?

  • Hi,

    1. Could you share your prj.conf? 
    2. Are you able to compile Libmetal before you attempt to add Matter over Thread?
      • I'm trying to add matter over thread to my firmware
      Typically we recommend that you go the other way around, i.e start with the Matter template sample and then add your firmware to this application. Are you seeing the same compilation errors when trying with a Matter sample + libmetal?

    Kind regards,
    Andreas

  • Here's my prj.conf:

    CONFIG_ARM_MPU=y
    CONFIG_ARM_TRUSTZONE_M=y
    CONFIG_BASE64=y
    CONFIG_BT_BUF_ACL_RX_SIZE=502
    CONFIG_BT_CENTRAL=n
    CONFIG_BT_HCI_RAW=y
    CONFIG_BT_HCI_RAW_RESERVE=1
    CONFIG_BUILD_OUTPUT_INFO_HEADER=y
    CONFIG_BUILD_OUTPUT_STRIPPED=y
    CONFIG_CHIP=y
    CONFIG_CHIP_DEVICE_PRODUCT_ID=32784
    CONFIG_CHIP_ENABLE_ICD_SUPPORT=y
    CONFIG_CHIP_ENABLE_PAIRING_AUTOSTART=y
    CONFIG_CHIP_ICD_FAST_POLLING_INTERVAL=500
    CONFIG_CHIP_ICD_SLOW_POLL_INTERVAL=500
    CONFIG_CHIP_LIB_SHELL=y
    CONFIG_CHIP_NFC_COMMISSIONING=n
    CONFIG_CHIP_PROJECT_CONFIG="src/chip_project_config.h"
    CONFIG_CHIP_THREAD_SSED=y
    CONFIG_COMMON_LIBC_MALLOC=y
    CONFIG_CONSOLE=y
    CONFIG_CONSOLE_GETCHAR=y
    CONFIG_CONSOLE_SUBSYS=y
    CONFIG_DEBUG_COREDUMP=y
    CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
    CONFIG_DEBUG_INFO=y
    CONFIG_DK_LIBRARY=y
    CONFIG_DYNAMIC_THREAD=y
    CONFIG_DYNAMIC_THREAD_ALLOC=y
    CONFIG_DYNAMIC_THREAD_POOL_SIZE=10
    CONFIG_DYNAMIC_THREAD_STACK_SIZE=10240
    CONFIG_FLASH_MAP_LABELS=y
    CONFIG_HEAP_MEM_POOL_SIZE=153000
    CONFIG_IDLE_STACK_SIZE=3072
    CONFIG_ISR_TABLES_LOCAL_DECLARATION=y
    CONFIG_LOG_MODE_IMMEDIATE=y
    CONFIG_LTO=y
    CONFIG_MAIN_STACK_SIZE=12000
    CONFIG_MAKEFILE_EXPORTS=y
    CONFIG_MAX_PTHREAD_BARRIER_COUNT=10
    CONFIG_MAX_PTHREAD_COND_COUNT=20
    CONFIG_MAX_PTHREAD_COUNT=50
    CONFIG_MAX_PTHREAD_KEY_COUNT=20
    CONFIG_MAX_PTHREAD_MUTEX_COUNT=50
    CONFIG_MAX_PTHREAD_SPINLOCK_COUNT=20
    CONFIG_MAX_TIMER_COUNT=50
    CONFIG_MBEDTLS_MPI_MAX_SIZE=256
    CONFIG_MCUBOOT_UTIL_LOG_LEVEL_OFF=y
    CONFIG_MPU_STACK_GUARD=y
    CONFIG_NRFX_GPIOTE_NUM_OF_EVT_HANDLERS=1
    CONFIG_OUTPUT_DISASSEMBLY=y
    CONFIG_OUTPUT_SYMBOLS=y
    CONFIG_PM_DEVICE=y
    CONFIG_PM_PARTITION_SIZE_SETTINGS_STORAGE=0x8000
    CONFIG_POSIX_API=y
    CONFIG_PTHREAD_COND_LOG_LEVEL_OFF=y
    CONFIG_PTHREAD_CREATE_BARRIER=y
    CONFIG_PWM=y
    CONFIG_REQUIRES_FLOAT_PRINTF=y
    CONFIG_RESET_ON_FATAL_ERROR=n
    CONFIG_SHARED_MULTI_HEAP=y
    CONFIG_SOC_SERIES_NRF53X=y
    CONFIG_STACK_USAGE=y
    CONFIG_STD_CPP17=y
    CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
    CONFIG_SYS_HASH_FUNC32=y
    CONFIG_THREAD_LOCAL_STORAGE=y
    CONFIG_THREAD_MONITOR=y
    CONFIG_THREAD_NAME=y
    CONFIG_TIMER=y
    CONFIG_TIMING_FUNCTIONS=y
    CONFIG_UART_0_NRF_TX_BUFFER_SIZE=4096
    CONFIG_UART_CONSOLE=y
    CONFIG_UTF8=y
    

    My project is very complex and unorthodox, so I've created a sample with a lot of stuff removed to be able to share it:

    https://github.com/marciogranzotto/nrf-proj-issue-sample

    I'm not seeing the same compilation errors when trying to build the matter samples, but since I'm using a custom CMakeLists.txt, and not using west, only cmake and ninja, idk if this could be the issue.

  • I've found the issue... My CMakeLists had this on it:

    set(CMAKE_INCLUDE_CURRENT_DIR ON)

    which was adding some include paths that were causing this error.

Related