From 07baa618e0f11c8eb75be58999f04601dd142619 Mon Sep 17 00:00:00 2001 From: Mathieu Choplain Date: Wed, 10 Dec 2025 14:03:34 +0100 Subject: [PATCH] lib: stm32wb0: implement IAR toolchain compatibility Replace all GCC-isms in the CMakeLists for STM32WB0 series libraries with toolchain agnostic patterns (or gate behind toolchain check) and rename some preprocessed assembler files to the proper extension to enable compilation of STM32WB0 Bluetooth apps with IAR toolchain. Signed-off-by: Mathieu Choplain --- ...it_conversion.s => blue_unit_conversion.S} | 0 .../Modules/{osal_memcpy.s => osal_memcpy.S} | 0 lib/stm32wb0/CMakeLists.txt | 84 ++++++++++--------- lib/stm32wb0/README.rst | 2 + 4 files changed, 45 insertions(+), 41 deletions(-) rename lib/stm32wb0/BLE_TransparentMode/System/Modules/{blue_unit_conversion.s => blue_unit_conversion.S} (100%) rename lib/stm32wb0/BLE_TransparentMode/System/Modules/{osal_memcpy.s => osal_memcpy.S} (100%) diff --git a/lib/stm32wb0/BLE_TransparentMode/System/Modules/blue_unit_conversion.s b/lib/stm32wb0/BLE_TransparentMode/System/Modules/blue_unit_conversion.S similarity index 100% rename from lib/stm32wb0/BLE_TransparentMode/System/Modules/blue_unit_conversion.s rename to lib/stm32wb0/BLE_TransparentMode/System/Modules/blue_unit_conversion.S diff --git a/lib/stm32wb0/BLE_TransparentMode/System/Modules/osal_memcpy.s b/lib/stm32wb0/BLE_TransparentMode/System/Modules/osal_memcpy.S similarity index 100% rename from lib/stm32wb0/BLE_TransparentMode/System/Modules/osal_memcpy.s rename to lib/stm32wb0/BLE_TransparentMode/System/Modules/osal_memcpy.S diff --git a/lib/stm32wb0/CMakeLists.txt b/lib/stm32wb0/CMakeLists.txt index 5e23eed06..3a6a4b9dd 100644 --- a/lib/stm32wb0/CMakeLists.txt +++ b/lib/stm32wb0/CMakeLists.txt @@ -6,7 +6,7 @@ zephyr_library() if(CONFIG_STM32WB0_RADIO_TIMER) zephyr_include_directories(BLE_TransparentMode/System/Modules) - zephyr_library_sources(BLE_TransparentMode/System/Modules/blue_unit_conversion.s) + zephyr_library_sources(BLE_TransparentMode/System/Modules/blue_unit_conversion.S) endif() if(CONFIG_BT_STM32WB0) @@ -21,8 +21,7 @@ zephyr_include_directories(BLE_TransparentMode/System/Modules/RTDebug) zephyr_include_directories(BLE_TransparentMode/Core/Inc) zephyr_include_directories(BLE_TransparentMode/STM32_BLE/App) -target_link_directories(app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../zephyr/blobs/stm32wb0/lib) -target_link_libraries(app PUBLIC -l:stm32wb0x_ble_stack_controller_only.a) +target_link_libraries(app PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../zephyr/blobs/stm32wb0/lib/stm32wb0x_ble_stack_controller_only.a) function(min OUT_VAR) list(SORT ARGN COMPARE NATURAL ORDER ASCENDING) @@ -50,14 +49,14 @@ set(CFG_BLE_CONNECTION_SUBRATING_ENABLED "0") set(CFG_BLE_CONTROLLER_CIS_ENABLED "0") zephyr_compile_definitions( - -DBLESTACK_CONTROLLER_ONLY=1 - -DACI_HAL_GET_FIRMWARE_DETAILS_ENABLED=0 - -DACI_HAL_GET_FIRMWARE_DETAILS_V2_ENABLED=0 - -DACI_HAL_UPDATER_START_ENABLED=0 - -DACI_HAL_TRANSMITTER_TEST_PACKETS_ENABLED=0 - -DACI_HAL_TRANSMITTER_TEST_PACKETS_V2_ENABLED=0 - -DACI_HAL_WRITE_RADIO_REG_ENABLED=0 - -DACI_HAL_READ_RADIO_REG_ENABLED=0 + BLESTACK_CONTROLLER_ONLY=1 + ACI_HAL_GET_FIRMWARE_DETAILS_ENABLED=0 + ACI_HAL_GET_FIRMWARE_DETAILS_V2_ENABLED=0 + ACI_HAL_UPDATER_START_ENABLED=0 + ACI_HAL_TRANSMITTER_TEST_PACKETS_ENABLED=0 + ACI_HAL_TRANSMITTER_TEST_PACKETS_V2_ENABLED=0 + ACI_HAL_WRITE_RADIO_REG_ENABLED=0 + ACI_HAL_READ_RADIO_REG_ENABLED=0 ) if(CONFIG_BT_OBSERVER) @@ -131,22 +130,22 @@ message(STATUS "CONNECTION_SUBRATING_ENABLED=${CFG_BLE_CONNECTION_SUBRATING_ENAB message(STATUS "CONTROLLER_CIS_ENABLED=${CFG_BLE_CONTROLLER_CIS_ENABLED}") zephyr_compile_definitions( - -DCFG_BLE_CONTROLLER_SCAN_ENABLED=${CFG_BLE_CONTROLLER_SCAN_ENABLED} - -DCFG_BLE_CONTROLLER_PRIVACY_ENABLED=${CFG_BLE_CONTROLLER_PRIVACY_ENABLED} - -DCFG_BLE_SECURE_CONNECTIONS_ENABLED=${CFG_BLE_SECURE_CONNECTIONS_ENABLED} - -DCFG_BLE_CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED=${CFG_BLE_CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED} - -DCFG_BLE_CONTROLLER_2M_CODED_PHY_ENABLED=${CFG_BLE_CONTROLLER_2M_CODED_PHY_ENABLED} - -DCFG_BLE_CONTROLLER_EXT_ADV_SCAN_ENABLED=${CFG_BLE_CONTROLLER_EXT_ADV_SCAN_ENABLED} - -DCFG_BLE_L2CAP_COS_ENABLED=${CFG_BLE_L2CAP_COS_ENABLED} - -DCFG_BLE_CONTROLLER_PERIODIC_ADV_ENABLED=${CFG_BLE_CONTROLLER_PERIODIC_ADV_ENABLED} - -DCFG_BLE_CONTROLLER_PERIODIC_ADV_WR_ENABLED=${CFG_BLE_CONTROLLER_PERIODIC_ADV_WR_ENABLED} - -DCFG_BLE_CONTROLLER_CTE_ENABLED=${CFG_BLE_CONTROLLER_CTE_ENABLED} - -DCFG_BLE_CONTROLLER_POWER_CONTROL_ENABLED=${CFG_BLE_CONTROLLER_POWER_CONTROL_ENABLED} - -DCFG_BLE_CONNECTION_ENABLED=${CFG_BLE_CONNECTION_ENABLED} - -DCFG_BLE_CONTROLLER_CHAN_CLASS_ENABLED=${CFG_BLE_CONTROLLER_CHAN_CLASS_ENABLED} - -DCFG_BLE_CONTROLLER_BIS_ENABLED=${CFG_BLE_CONTROLLER_BIS_ENABLED} - -DCFG_BLE_CONNECTION_SUBRATING_ENABLED=${CFG_BLE_CONNECTION_SUBRATING_ENABLED} - -DCFG_BLE_CONTROLLER_CIS_ENABLED=${CFG_BLE_CONTROLLER_CIS_ENABLED} + CFG_BLE_CONTROLLER_SCAN_ENABLED=${CFG_BLE_CONTROLLER_SCAN_ENABLED} + CFG_BLE_CONTROLLER_PRIVACY_ENABLED=${CFG_BLE_CONTROLLER_PRIVACY_ENABLED} + CFG_BLE_SECURE_CONNECTIONS_ENABLED=${CFG_BLE_SECURE_CONNECTIONS_ENABLED} + CFG_BLE_CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED=${CFG_BLE_CONTROLLER_DATA_LENGTH_EXTENSION_ENABLED} + CFG_BLE_CONTROLLER_2M_CODED_PHY_ENABLED=${CFG_BLE_CONTROLLER_2M_CODED_PHY_ENABLED} + CFG_BLE_CONTROLLER_EXT_ADV_SCAN_ENABLED=${CFG_BLE_CONTROLLER_EXT_ADV_SCAN_ENABLED} + CFG_BLE_L2CAP_COS_ENABLED=${CFG_BLE_L2CAP_COS_ENABLED} + CFG_BLE_CONTROLLER_PERIODIC_ADV_ENABLED=${CFG_BLE_CONTROLLER_PERIODIC_ADV_ENABLED} + CFG_BLE_CONTROLLER_PERIODIC_ADV_WR_ENABLED=${CFG_BLE_CONTROLLER_PERIODIC_ADV_WR_ENABLED} + CFG_BLE_CONTROLLER_CTE_ENABLED=${CFG_BLE_CONTROLLER_CTE_ENABLED} + CFG_BLE_CONTROLLER_POWER_CONTROL_ENABLED=${CFG_BLE_CONTROLLER_POWER_CONTROL_ENABLED} + CFG_BLE_CONNECTION_ENABLED=${CFG_BLE_CONNECTION_ENABLED} + CFG_BLE_CONTROLLER_CHAN_CLASS_ENABLED=${CFG_BLE_CONTROLLER_CHAN_CLASS_ENABLED} + CFG_BLE_CONTROLLER_BIS_ENABLED=${CFG_BLE_CONTROLLER_BIS_ENABLED} + CFG_BLE_CONNECTION_SUBRATING_ENABLED=${CFG_BLE_CONNECTION_SUBRATING_ENABLED} + CFG_BLE_CONTROLLER_CIS_ENABLED=${CFG_BLE_CONTROLLER_CIS_ENABLED} ) ########### End of modularity selection ########### @@ -215,16 +214,16 @@ if (CONFIG_BT_ISO_MAX_CHAN) endif() zephyr_compile_definitions( - -DCFG_BLE_NUM_SYNC_SLOTS=${CFG_BLE_NUM_SYNC_SLOTS} - -DCFG_BLE_NUM_ADV_SETS=${CFG_BLE_NUM_ADV_SETS} - -DCFG_BLE_NUM_EATT_CHANNELS=${CFG_BLE_NUM_EATT_CHANNELS} - -DCFG_BLE_NUM_BRC_BIG_MAX=${CFG_BLE_NUM_BRC_BIG_MAX} - -DCFG_BLE_NUM_SYNC_BIG_MAX=${CFG_BLE_NUM_SYNC_BIG_MAX} - -DCFG_BLE_NUM_SYNC_BIS_MAX=${CFG_BLE_NUM_SYNC_BIS_MAX} - -DCFG_BLE_NUM_BRC_BIS_MAX=${CFG_BLE_NUM_BRC_BIS_MAX} - -DCFG_BLE_NUM_CIG_MAX=${CFG_BLE_NUM_CIG_MAX} - -DCFG_BLE_NUM_CIS_MAX=${CFG_BLE_NUM_CIS_MAX} - -DCFG_BLE_NUM_AUX_SCAN_SLOTS=${CFG_BLE_NUM_AUX_SCAN_SLOTS} + CFG_BLE_NUM_SYNC_SLOTS=${CFG_BLE_NUM_SYNC_SLOTS} + CFG_BLE_NUM_ADV_SETS=${CFG_BLE_NUM_ADV_SETS} + CFG_BLE_NUM_EATT_CHANNELS=${CFG_BLE_NUM_EATT_CHANNELS} + CFG_BLE_NUM_BRC_BIG_MAX=${CFG_BLE_NUM_BRC_BIG_MAX} + CFG_BLE_NUM_SYNC_BIG_MAX=${CFG_BLE_NUM_SYNC_BIG_MAX} + CFG_BLE_NUM_SYNC_BIS_MAX=${CFG_BLE_NUM_SYNC_BIS_MAX} + CFG_BLE_NUM_BRC_BIS_MAX=${CFG_BLE_NUM_BRC_BIS_MAX} + CFG_BLE_NUM_CIG_MAX=${CFG_BLE_NUM_CIG_MAX} + CFG_BLE_NUM_CIS_MAX=${CFG_BLE_NUM_CIS_MAX} + CFG_BLE_NUM_AUX_SCAN_SLOTS=${CFG_BLE_NUM_AUX_SCAN_SLOTS} ) ########### End of numeric value section ########### @@ -279,7 +278,7 @@ if(${CFG_BLE_CONTROLLER_SCAN_ENABLED}) endif() message(STATUS "Number of computed radio tasks: ${tasks}") -zephyr_compile_definitions(-DCFG_BLE_NUM_RADIO_TASKS=${tasks}) +zephyr_compile_definitions(CFG_BLE_NUM_RADIO_TASKS=${tasks}) ########### End of number of radio tasks calculation ########### @@ -287,15 +286,18 @@ zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/dm_alloc.c) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/dtm_cmd_db.c) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/aci_adv_nwk.c) -set_source_files_properties(BLE_TransparentMode/STM32_BLE/App/dtm_cmd_db.c PROPERTIES COMPILE_FLAGS -Wno-array-bounds) -set_source_files_properties(STM32_BLE/stack/config/ble_stack_user_cfg.c PROPERTIES COMPILE_FLAGS -Wno-array-parameter) +if(ZEPHYR_TOOLCHAIN_VARIANT STREQUAL "zephyr") + # Silence some warnings in third-party code to prevent CI breakage + set_source_files_properties(BLE_TransparentMode/STM32_BLE/App/dtm_cmd_db.c PROPERTIES COMPILE_FLAGS -Wno-array-bounds) + set_source_files_properties(STM32_BLE/stack/config/ble_stack_user_cfg.c PROPERTIES COMPILE_FLAGS -Wno-array-parameter) +endif() zephyr_library_sources(BLE_TransparentMode/STM32_BLE/Target/bleplat_cntr.c) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/Target/bleplat.c) zephyr_library_sources(BLE_TransparentMode/System/Modules/PKAMGR/Src/pka_manager.c) zephyr_library_sources(BLE_TransparentMode/System/Interfaces/hw_aes.c) zephyr_library_sources(BLE_TransparentMode/System/Interfaces/hw_pka.c) zephyr_library_sources(BLE_TransparentMode/System/Interfaces/hw_rng.c) -zephyr_library_sources(BLE_TransparentMode/System/Modules/osal_memcpy.s) +zephyr_library_sources(BLE_TransparentMode/System/Modules/osal_memcpy.S) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/adv_buff_alloc_tiny.c) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/transport_layer.c) zephyr_library_sources(BLE_TransparentMode/STM32_BLE/App/dtm_preprocess_events.c) diff --git a/lib/stm32wb0/README.rst b/lib/stm32wb0/README.rst index dbc91a670..d77241729 100644 --- a/lib/stm32wb0/README.rst +++ b/lib/stm32wb0/README.rst @@ -131,5 +131,7 @@ Patch List: Impacted file: bleplat.c - Removed BLEPLAT_SetRadioTimerValue function: Impacted file: bleplat.c + - Rename assembly-with-preprocessing files from ".s" to ".S" + Impacted files: blue_unit_conversion.s, osal_memcpy.s - dos2unix applied - trailing white spaces removed