zephyr/subsys/bluetooth/controller/CMakeLists.txt
Vinayak Kariappa Chettimada 1b7fe792e0 Bluetooth: Controller: Support Link Time Optimizations (LTO)
Support for using Link Time Optimization (LTO) when
building application with open source Bluetooth Low
Energy Controller. This reduces code space usage.

Current Memory Usage at the time of this PR (hci_ipc):

BT_CTLR_OPTIMIZE_FOR_SPEED:
Memory region         Used Size  Region Size  %age Used
           FLASH:      260112 B       256 KB     99.22%
             RAM:       60136 B        64 KB     91.76%
           SRAM1:           0 B        64 KB      0.00%
        IDT_LIST:           0 B        32 KB      0.00%

BT_CTLR_OPTIMIZE_FOR_SIZE:
Memory region         Used Size  Region Size  %age Used
           FLASH:      232292 B       256 KB     88.61%
             RAM:       60128 B        64 KB     91.75%
           SRAM1:           0 B        64 KB      0.00%
        IDT_LIST:           0 B        32 KB      0.00%

BT_CTLR_OPTIMIZE_FOR_APP_DEFAULT:
Memory region         Used Size  Region Size  %age Used
           FLASH:      232292 B       256 KB     88.61%
             RAM:       60128 B        64 KB     91.75%
           SRAM1:           0 B        64 KB      0.00%
        IDT_LIST:           0 B        32 KB      0.00%

BT_CTLR_LTO:
Memory region         Used Size  Region Size  %age Used
           FLASH:      221484 B       256 KB     84.49%
             RAM:       60120 B        64 KB     91.74%
           SRAM1:           0 B        64 KB      0.00%
        IDT_LIST:           0 B        32 KB      0.00%

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
2024-05-22 13:38:14 -05:00

224 lines
4.2 KiB
CMake

# SPDX-License-Identifier: Apache-2.0
if(CONFIG_BT_CTLR_ADVANCED_FEATURES)
message(WARNING "\nCONFIG_BT_CTLR_ADVANCED_FEATURES=y, Advanced Features' "
"default value change could change Zephyr Bluetooth "
"Controller's functional behavior.")
endif()
zephyr_library()
zephyr_library_link_libraries(subsys__bluetooth)
zephyr_library_sources(
util/mem.c
util/memq.c
util/mayfly.c
util/dbuf.c
util/util.c
ticker/ticker.c
ll_sw/ll_feat.c
ll_sw/ll_tx_pwr.c
ll_sw/ll_addr.c
ll_sw/ull.c
ll_sw/lll_common.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_HCI
hci/hci_driver.c
hci/hci.c
)
if(CONFIG_BT_BROADCASTER)
zephyr_library_sources(
ll_sw/ull_adv.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_ADV_EXT
ll_sw/ull_adv_aux.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_ADV_PERIODIC
ll_sw/ull_adv_sync.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_ADV_ISO
ll_sw/ull_adv_iso.c
)
endif()
if(CONFIG_BT_OBSERVER)
zephyr_library_sources(
ll_sw/ull_scan.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_ADV_EXT
ll_sw/ull_scan_aux.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_SYNC_PERIODIC
ll_sw/ull_sync.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_SYNC_ISO
ll_sw/ull_sync_iso.c
)
endif()
if(CONFIG_BT_CONN)
zephyr_library_sources(
ll_sw/ull_conn.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_LE_ENC
ll_sw/ull_llcp_enc.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_PHY
ll_sw/ull_llcp_phy.c
)
if (CONFIG_BT_CTLR_PERIPHERAL_ISO OR
CONFIG_BT_CTLR_CENTRAL_ISO)
zephyr_library_sources(
ll_sw/ull_llcp_cc.c
)
endif()
zephyr_library_sources(
ll_sw/ull_tx_queue.c
ll_sw/ull_llcp.c
ll_sw/ull_llcp_common.c
ll_sw/ull_llcp_local.c
ll_sw/ull_llcp_pdu.c
ll_sw/ull_llcp_conn_upd.c
ll_sw/ull_llcp_chmu.c
ll_sw/ull_llcp_remote.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_PERIPHERAL
ll_sw/ull_peripheral.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_PERIPHERAL_ISO
ll_sw/ull_peripheral_iso.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CENTRAL
ll_sw/ull_central.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_CENTRAL_ISO
ll_sw/ull_central_iso.c
)
endif()
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_SCHED_ADVANCED
ll_sw/ull_sched.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_DF
ll_sw/ull_df.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_CONN_ISO
ll_sw/ull_conn_iso.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_ISO
ll_sw/ull_iso.c
ll_sw/isoal.c
)
if(CONFIG_BT_CONN OR
(CONFIG_BT_BROADCASTER AND
CONFIG_BT_CTLR_ADV_EXT) OR
CONFIG_BT_CTLR_ADV_PERIODIC OR
CONFIG_BT_CTLR_SYNC_PERIODIC)
zephyr_library_sources(
ll_sw/ull_chan.c
ll_sw/lll_chan.c
)
endif()
if(CONFIG_BT_CTLR_FILTER_ACCEPT_LIST OR
CONFIG_BT_CTLR_SYNC_PERIODIC_ADV_LIST)
zephyr_library_sources(
ll_sw/ull_filter.c
)
endif()
zephyr_library_sources_ifdef(
CONFIG_BT_HCI_MESH_EXT
ll_sw/ll_mesh.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_SETTINGS
ll_sw/ll_settings.c
)
zephyr_library_sources_ifdef(
CONFIG_BT_CTLR_CRYPTO
crypto/crypto.c
)
zephyr_library_sources_ifdef(
CONFIG_SOC_FLASH_NRF_RADIO_SYNC_TICKER
flash/soc_flash_nrf_ticker.c
)
zephyr_library_include_directories(
.
include
)
zephyr_library_include_directories_ifdef(
CONFIG_BT_CTLR_CRYPTO
../crypto
)
zephyr_library_include_directories_ifdef(
CONFIG_SOC_FLASH_NRF_RADIO_SYNC_TICKER
${ZEPHYR_BASE}/drivers/flash
)
zephyr_library_include_directories_ifdef(
CONFIG_SOC_COMPATIBLE_NRF
ll_sw/nordic
ll_sw/nordic/hci
)
zephyr_library_include_directories_ifdef(
CONFIG_SOC_OPENISA_RV32M1
ll_sw/openisa
ll_sw/openisa/hci
)
add_subdirectory_ifdef(
CONFIG_BT_CTLR_COEX_DRIVERS
coex
)
add_subdirectory_ifdef(
CONFIG_SOC_COMPATIBLE_NRF
ll_sw/nordic
)
add_subdirectory_ifdef(
CONFIG_SOC_OPENISA_RV32M1
ll_sw/openisa
)
zephyr_library_compile_options_ifdef(
CONFIG_BT_CTLR_OPTIMIZE_FOR_SIZE
${OPTIMIZE_FOR_SIZE_FLAG}
)
zephyr_library_compile_options_ifdef(
CONFIG_BT_CTLR_OPTIMIZE_FOR_SPEED
${OPTIMIZE_FOR_SPEED_FLAG}
)