Files
esp-idf/components/bt/CMakeLists.txt
Island b5b836be66 Merge branch 'feat/add_bt_common_npl' into 'master'
feat(bt): Add host-agnostic BT OSAL and shared BLE profile task

See merge request espressif/esp-idf!50797
2026-07-27 14:03:28 +08:00

130 lines
4.1 KiB
CMake

idf_build_get_property(target IDF_TARGET)
if(${target} STREQUAL "linux")
return() # This component is not supported by the POSIX/Linux simulator
endif()
if(CONFIG_IDF_TARGET_ESP32S3)
set(TARGET_SRC_NAME "esp32c3")
elseif(CONFIG_IDF_TARGET_ESP32C61)
set(TARGET_SRC_NAME "esp32c6")
elseif(CONFIG_IDF_TARGET_ESP32H21)
set(TARGET_SRC_NAME "esp32h2")
else()
set(TARGET_SRC_NAME "${idf_target}")
endif()
set(srcs "")
set(include_dirs "")
set(priv_include_dirs "")
set(ldscripts "linker_common.lf")
# API headers that are used in the docs are also compiled
# even if CONFIG_BT_ENABLED=n as long as CONFIG_IDF_DOC_BUILD=y
if(CONFIG_IDF_DOC_BUILD OR CONFIG_BT_ENABLED)
add_subdirectory(common)
list(APPEND srcs ${bt_common_srcs})
list(APPEND include_dirs ${bt_common_include_dirs})
list(APPEND priv_include_dirs ${bt_common_priv_include_dirs})
# Controller
add_subdirectory(controller)
list(APPEND srcs ${bt_ctrl_srcs})
list(APPEND include_dirs ${bt_ctrl_include_dirs})
set(ldscripts ${bt_ctrl_ldscripts})
# Controller porting or porting_btdm
if(CONFIG_SOC_ESP_NIMBLE_CONTROLLER)
if(CONFIG_BT_DUAL_MODE_ARCH)
add_subdirectory(porting_btdm)
else()
add_subdirectory(porting)
endif()
list(APPEND srcs ${porting_srcs})
list(APPEND include_dirs ${porting_include_dirs})
list(APPEND priv_include_dirs ${porting_priv_include_dirs})
endif()
# Host Bluedroid
add_subdirectory(host/bluedroid)
list(APPEND srcs ${bluedroid_host_srcs})
list(APPEND include_dirs ${bluedroid_host_include_dirs})
list(APPEND priv_include_dirs ${bluedroid_host_priv_include_dirs})
# NimBLE Host
add_subdirectory(host/nimble)
list(APPEND srcs ${nimble_host_srcs})
list(APPEND include_dirs ${nimble_host_include_dirs})
# BLE Mesh
add_subdirectory(esp_ble_mesh)
list(APPEND srcs ${ble_mesh_srcs})
list(APPEND include_dirs ${ble_mesh_include_dirs})
# BLE ISO (host shim + ISO transport, reusable by BLE Audio / HID-over-ISO / etc.)
add_subdirectory(esp_ble_iso)
list(APPEND srcs ${ble_iso_srcs})
list(APPEND include_dirs ${ble_iso_include_dirs})
# BLE Audio
add_subdirectory(esp_ble_audio)
list(APPEND srcs ${ble_audio_srcs})
list(APPEND include_dirs ${ble_audio_include_dirs})
list(APPEND ldscripts ${ble_audio_ldscripts})
# BLE profiles (host-agnostic profile cores + shared profile infrastructure)
add_subdirectory(ble_profiles)
list(APPEND srcs ${ble_profiles_srcs})
list(APPEND include_dirs ${ble_profiles_include_dirs})
# When log compression is enabled, selected logs are replaced
# by auto-generated macros that emit pre-encoded data.
# This eliminates the original format strings, reducing firmware size and
# removing runtime formatting overhead, so logs are produced faster and
# with less system impact.
replace_log_compression_srcs()
endif()
set(bt_priv_requires
nvs_flash
soc
esp_pm
esp_phy
esp_coex
mbedtls
esp_driver_uart
vfs
esp_ringbuf
esp_gdbstub
esp_security
esp_event
)
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "${include_dirs}"
PRIV_INCLUDE_DIRS "${priv_include_dirs}"
REQUIRES esp_timer esp_wifi esp_driver_spi esp_driver_gpio
PRIV_REQUIRES "${bt_priv_requires}"
LDFRAGMENTS "${ldscripts}")
idf_component_get_property(bt_component_type bt COMPONENT_TYPE)
if(bt_component_type STREQUAL "LIBRARY")
idf_component_optional_requires(PRIVATE ble_insights)
else()
idf_component_optional_requires(INTERFACE ble_insights)
endif()
if(CONFIG_BT_ENABLED)
target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough -Wno-unused-const-variable)
target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format")
register_bt_ctrl_libs()
set_bluedroid_host_compile_flags()
set_nimble_host_compile_flags()
register_ble_mesh_libs()
register_ble_audio_libs()
register_log_compression_dependency()
wrap_uart_log_tx_interface()
endif()