Skip to content

Commit

Permalink
[cmake] fix handling of assembly files
Browse files Browse the repository at this point in the history
These changes address the build failure that occurs when trying to build with the `ot_crash_handler` component which uses an assembly file `fault.s`.

Previously, `.s` files were incorrectly set to be handled as C files without the `-x assemble-with-cpp` flag

```bash
/opt/toolchain/arm-gnu-toolchain-12.3.rel1-x86_64-arm-none-eabi/bin/arm-none-eabi-gcc -DCORTEXM3=1 -DCORTEXM3_EFM32_MICRO=1 -DCORTEXM3_EFR32=1 -DEFR32MG21A020F1024IM32=1 -DHARDWARE_BOARD_DEFAULT_RF_BAND_2400=1 -DHARDWARE_BOARD_SUPPORTS_1_RF_BAND=1 -DHARDWARE_BOARD_SUPPORTS_RF_BAND_2400=1 -DHFXO_FREQ=38400000 -DMBEDTLS_CONFIG_FILE="<sl_mbedtls_config.h>" -DMBEDTLS_PSA_CRYPTO_CONFIG_FILE="<psa_crypto_config.h>" -DOPENTHREAD_CONFIG_DIAG_ENABLE=1 -DOPENTHREAD_CONFIG_ENABLE_BUILTIN_MBEDTLS=0 -DOPENTHREAD_CONFIG_ENABLE_BUILTIN_MBEDTLS_MANAGEMENT=0 -DOPENTHREAD_CONFIG_HEAP_EXTERNAL_ENABLE=1 -DOPENTHREAD_CONFIG_IP6_SLAAC_ENABLE=1 -DOPENTHREAD_CONFIG_NCP_HDLC_ENABLE=1 -DOPENTHREAD_CONFIG_PING_SENDER_ENABLE=1 -DOPENTHREAD_CONFIG_THREAD_VERSION=OT_THREAD_VERSION_1_3 -DOPENTHREAD_CORE_CONFIG_PLATFORM_CHECK_FILE=\"openthread-core-efr32-config-check.h\" -DOPENTHREAD_PROJECT_CORE_CONFIG_FILE=\"openthread-core-efr32-config.h\" -DPACKAGE_NAME=\"OPENTHREAD\" -DPHY_RAIL=1 -DPLATFORM_HEADER=\"platform-header.h\" -DSLI_RADIOAES_REQUIRES_MASKING=1 -DSL_BOARD_NAME=\"BRD4180A\" -DSL_BOARD_REV=\"A02\" -DSL_COMPONENT_CATALOG_PRESENT=1 -DSL_OPENTHREAD_STACK_FEATURES_CONFIG_FILE=\"sl_openthread_features_config.h\" -DSL_RAIL_LIB_MULTIPROTOCOL_SUPPORT=0 -DSL_RAIL_UTIL_PA_CONFIG_HEADER="<sl_rail_util_pa_config.h>" -I/Users/matran/repos/ot-efr32/build/brd4180a/slc/soc/autogen -I/Users/matran/repos/ot-efr32/build/brd4180a/slc/soc/config -I/Users/matran/repos/ot-efr32/openthread/include -I/Users/matran/repos/ot-efr32/openthread/src -I/Users/matran/repos/ot-efr32/openthread/src/core -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/Device/SiliconLabs/EFR32MG21/Include -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/common/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/hardware/board/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/CMSIS/Core/Include -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/hardware/driver/configuration_over_swo/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/driver/debug/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/device_init/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emdrv/dmadrv/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emdrv/common/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emlib/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emdrv/gpiointerrupt/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/sl_mbedtls_support/config -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/sl_mbedtls_support/config/preset -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/sl_mbedtls_support/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/util/third_party/mbedtls/include -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/util/third_party/mbedtls/library -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/mpu/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emdrv/nvm3/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/protocol/openthread/src/legacy_hal/include -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/inc -I/Users/matran/repos/ot-efr32/openthread/examples/platforms -I/Users/matran/repos/ot-efr32/openthread/examples/platforms/utils -I/Users/matran/repos/ot-efr32/src/src -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/protocol/openthread/platform-abstraction/include -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/sl_psa_driver/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/common -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/protocol/ble -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/protocol/ieee802154 -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/protocol/wmbus -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/protocol/zwave -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/chip/efr32/efr32xg2x -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/protocol/sidewalk -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/plugin/pa-conversions -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/plugin/pa-conversions/efr32xg21 -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/plugin/rail_util_pti -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/plugin/rail_util_rf_path -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/radio/rail_lib/plugin/rail_util_rssi -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/se_manager/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/se_manager/src -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/util/plugin/security_manager -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/util/silicon_labs/silabs_core/memory_manager -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/common/toolchain/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/system/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/sleeptimer/inc -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/security/sl_component/sl_protocol_crypto/src -I/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/emdrv/uartdrv/inc -mcpu=cortex-m33 -mthumb -fmessage-length=0 -ffunction-sections -fdata-sections -mfpu=fpv5-sp-d16 -mfloat-abi=hard -std=c99 -Os -mcpu=cortex-m33 -mthumb -mfpu=fpv5-sp-d16 -mfloat-abi=hard -std=c99 -Wall -Wextra -Os -fdata-sections -ffunction-sections -fomit-frame-pointer -imacros sl_gcc_preinclude.h -mcmse --specs=nano.specs -g -Wno-shadow -Wno-pedantic -std=gnu99 -MD -MT build/brd4180a/slc/soc/CMakeFiles/openthread-efr32-soc.dir/__/__/__/__/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s.obj -MF build/brd4180a/slc/soc/CMakeFiles/openthread-efr32-soc.dir/__/__/__/__/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s.obj.d -o build/brd4180a/slc/soc/CMakeFiles/openthread-efr32-soc.dir/__/__/__/__/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s.obj -c /Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s: Assembler messages:
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:20: Error: bad instruction `__import__ halCrashInfo'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:21: Error: bad instruction `__import__ halInternalCrashHandler'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:22: Error: bad instruction `__import__ halInternalSysReset'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:25: Error: bad instruction `__equ__(EXC_RETURN_HANDLER_MSP, 0xFFFFFFF1)'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:26: Error: bad instruction `__equ__(EXC_RETURN_THREAD_MSP, 0xFFFFFFF9)'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:27: Error: bad instruction `__equ__(EXC_RETURN_THREAD_PSP, 0xFFFFFFFD)'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:30: Error: bad instruction `__equ__(CRASH_STACK_SIZE, 64)'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:43: Error: bad instruction `__code__'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:44: Error: bad instruction `__thumb__'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:45: Error: bad instruction `__export__ NMI_Handler'
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:47: Error: unexpected character `w' in type specifier
/Users/matran/repos/ot-efr32/third_party/silabs/gecko_sdk/platform/service/legacy_hal/src/faults.s:47: Error: bad instruction `b.w fault'
...
...
```
  • Loading branch information
lmnotran committed Feb 2, 2024
1 parent 10d7e90 commit b9d3ddf
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 14 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
# CMake project definitions
# ==============================================================================
cmake_minimum_required(VERSION 3.16.0)
project(ot-efr32 VERSION 1.0.0)
project(ot-efr32 VERSION 1.0.0 LANGUAGES C CXX ASM)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
Expand Down
9 changes: 1 addition & 8 deletions slc/exporter_templates/platform_library/CMakeLists.txt.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -88,19 +88,12 @@ target_include_directories({{PROJECT_NAME}} PRIVATE
# ==============================================================================
target_sources({{PROJECT_NAME}} PRIVATE
{%- for source in NON_MBEDTLS_SOURCES %}
{%- if source.endswith('.c') or source.endswith('.cpp') or source.endswith('.h') or source.endswith('.hpp') %}
{%- if source.endswith('.c') or source.endswith('.cpp') or source.endswith('.h') or source.endswith('.hpp') or source.endswith('.s') or source.endswith('.S') %}
{{source}}
{%- endif %}
{%- endfor %}
)

{%- for source in NON_MBEDTLS_SOURCES %}
{%- if source.endswith('.s') or source.endswith('.S') %}
target_sources({{PROJECT_NAME}} PRIVATE {{source}})
set_property(SOURCE {{source}} PROPERTY LANGUAGE C)
{%- endif %}
{%- endfor %}

# ==============================================================================
# Compile definitions
# ==============================================================================
Expand Down
3 changes: 2 additions & 1 deletion src/efr32mg1/arm-none-eabi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_RANLIB arm-none-eabi-ranlib)

execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand All @@ -40,6 +40,7 @@ set(COMMON_C_FLAGS "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-ab

set(CMAKE_C_FLAGS_INIT "${COMMON_C_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS_INIT "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs")

set(CMAKE_C_FLAGS_DEBUG "-Og -g")
Expand Down
3 changes: 2 additions & 1 deletion src/efr32mg12/arm-none-eabi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_RANLIB arm-none-eabi-ranlib)

execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand All @@ -40,6 +40,7 @@ set(COMMON_C_FLAGS "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-ab

set(CMAKE_C_FLAGS_INIT "${COMMON_C_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS_INIT "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs")

set(CMAKE_C_FLAGS_DEBUG "-Og -g")
Expand Down
3 changes: 2 additions & 1 deletion src/efr32mg13/arm-none-eabi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_RANLIB arm-none-eabi-ranlib)

execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand All @@ -40,6 +40,7 @@ set(COMMON_C_FLAGS "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-ab

set(CMAKE_C_FLAGS_INIT "${COMMON_C_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS_INIT "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs")

set(CMAKE_C_FLAGS_DEBUG "-Og -g")
Expand Down
3 changes: 2 additions & 1 deletion src/efr32mg21/arm-none-eabi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_RANLIB arm-none-eabi-ranlib)

execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand All @@ -40,6 +40,7 @@ set(COMMON_C_FLAGS "-mcpu=cortex-m33 -mthumb -fmessage-length=0

set(CMAKE_C_FLAGS_INIT "${COMMON_C_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS_INIT "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs")

set(CMAKE_C_FLAGS_DEBUG "-Og -g")
Expand Down
3 changes: 2 additions & 1 deletion src/efr32mg24/arm-none-eabi.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ set(CMAKE_SYSTEM_PROCESSOR ARM)

set(CMAKE_C_COMPILER arm-none-eabi-gcc)
set(CMAKE_CXX_COMPILER arm-none-eabi-g++)
set(CMAKE_ASM_COMPILER arm-none-eabi-as)
set(CMAKE_ASM_COMPILER arm-none-eabi-gcc)
set(CMAKE_RANLIB arm-none-eabi-ranlib)

execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE COMPILER_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand All @@ -40,6 +40,7 @@ set(COMMON_C_FLAGS "-mcpu=cortex-m33 -mthumb -fmessage-length=0

set(CMAKE_C_FLAGS_INIT "${COMMON_C_FLAGS} -std=c99")
set(CMAKE_CXX_FLAGS_INIT "${COMMON_C_FLAGS} -fno-exceptions -fno-rtti")
set(CMAKE_ASM_FLAGS_INIT "${CMAKE_C_FLAGS_INIT} -x assembler-with-cpp")
set(CMAKE_EXE_LINKER_FLAGS_INIT "${COMMON_C_FLAGS} -specs=nano.specs -specs=nosys.specs")

set(CMAKE_C_FLAGS_DEBUG "-Og -g")
Expand Down

0 comments on commit b9d3ddf

Please sign in to comment.