diff --git a/components/bt/CMakeLists.txt b/components/bt/CMakeLists.txt index 0c2b74fb59b..1fa7638fddf 100644 --- a/components/bt/CMakeLists.txt +++ b/components/bt/CMakeLists.txt @@ -5,1172 +5,74 @@ if(${target} STREQUAL "linux") endif() if(CONFIG_IDF_TARGET_ESP32S3) - set(target_name "esp32c3") + set(TARGET_SRC_NAME "esp32c3") elseif(CONFIG_IDF_TARGET_ESP32C61) - set(target_name "esp32c6") + set(TARGET_SRC_NAME "esp32c6") else() - set(target_name "${idf_target}") + 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}) -if(CONFIG_SOC_BT_SUPPORTED) - set(target_specific_include_dirs include/${target_name}/include) -endif() + # Controller + add_subdirectory(controller) + list(APPEND srcs ${bt_ctrl_srcs}) + list(APPEND include_dirs ${bt_ctrl_include_dirs}) + set(ldscripts ${bt_ctrl_ldscripts}) -set(common_include_dirs - common/api/include/api - common/btc/profile/esp/blufi/include - common/btc/profile/esp/include - common/hci_log/include - common/ble_log/include - common/ble_log/deprecated/include -) - -set(ble_mesh_include_dirs - "esp_ble_mesh/common/include" - "esp_ble_mesh/core" - "esp_ble_mesh/core/include" - "esp_ble_mesh/core/storage" - "esp_ble_mesh/btc/include" - "esp_ble_mesh/models/common/include" - "esp_ble_mesh/models/client/include" - "esp_ble_mesh/models/server/include" - "esp_ble_mesh/api/core/include" - "esp_ble_mesh/api/models/include" - "esp_ble_mesh/api" -) - -set(ble_mesh_v11_include_dirs - "esp_ble_mesh/lib/include" - "esp_ble_mesh/v1.1/api/core/include" - "esp_ble_mesh/v1.1/api/models/include" - "esp_ble_mesh/v1.1/btc/include" - "esp_ble_mesh/v1.1/include" - "esp_ble_mesh/v1.1/dfu" - "esp_ble_mesh/v1.1/mbt" -) - -if(CONFIG_IDF_DOC_BUILD) - list(APPEND ble_mesh_include_dirs - ${ble_mesh_v11_include_dirs}) -endif() - -set(ble_iso_include_dirs - "esp_ble_audio/api/iso/include" -) - -set(ble_audio_include_dirs - "esp_ble_audio/api/audio/include" -) - -set(bluedroid_include_dirs host/bluedroid/api/include/api) - -if(CONFIG_BT_CONTROLLER_ENABLED OR CONFIG_IDF_DOC_BUILD) -set(nimble_hci_include_dirs host/nimble/esp-hci/include) -endif() - -if(CONFIG_IDF_DOC_BUILD) - list(APPEND include_dirs - ${target_specific_include_dirs} - ${common_include_dirs} - ${ble_mesh_include_dirs} - ${ble_iso_include_dirs} - ${ble_audio_include_dirs} - ${bluedroid_include_dirs} - ${nimble_hci_include_dirs}) -endif() - -if(CONFIG_BT_ENABLED) - - set(srcs "") - set(include_dirs "") - set(ldscripts "linker_common.lf") - if(CONFIG_BT_CONTROLLER_ENABLED) - list(APPEND srcs "controller/${target_name}/bt.c") - - if(CONFIG_IDF_TARGET_ESP32) - list(APPEND srcs "controller/esp32/hli_api.c" - "controller/esp32/hli_vectors.S") - list(APPEND ldscripts "linker_rw_bt_controller.lf") - elseif(CONFIG_IDF_TARGET_ESP32C3) - list(APPEND ldscripts "linker_rw_bt_controller.lf") - elseif(CONFIG_IDF_TARGET_ESP32S3) - list(APPEND ldscripts "linker_rw_bt_controller.lf") - elseif(CONFIG_IDF_TARGET_ESP32C2) - list(APPEND srcs "controller/${target_name}/ble.c") - list(APPEND srcs "controller/esp32c2/dummy.c") - set(ldscripts "linker_esp32c2.lf") - elseif(CONFIG_BT_DUAL_MODE_ARCH) - list(APPEND srcs "controller/${target_name}/bt.c") - list(APPEND ldscripts "linker_esp_btdm_controller.lf") + # Controller porting or porting_btdm + if(CONFIG_SOC_ESP_NIMBLE_CONTROLLER) + if(CONFIG_BT_DUAL_MODE_ARCH) + add_subdirectory(porting_btdm) else() - list(APPEND srcs "controller/${target_name}/ble.c") - list(APPEND ldscripts "linker_esp_ble_controller.lf") - endif() - - list(APPEND include_dirs ${target_specific_include_dirs}) - endif() - - # Common - list(APPEND include_dirs common/osi/include) - - list(APPEND priv_include_dirs - common/btc/include - common/include - ) - - if(NOT CONFIG_BT_DUAL_MODE_ARCH) - list(APPEND priv_include_dirs - porting/mem/ - porting/include - ) - endif() - - list(APPEND include_dirs ${common_include_dirs}) - - list(APPEND srcs "common/btc/core/btc_alarm.c" - "common/api/esp_blufi_api.c" - "common/hci_log/bt_hci_log.c" - "common/btc/core/btc_manage.c" - "common/btc/core/btc_task.c" - "common/btc/profile/esp/blufi/blufi_prf.c" - "common/btc/profile/esp/blufi/blufi_protocol.c" - "common/osi/alarm.c" - "common/osi/allocator.c" - "common/osi/buffer.c" - "common/osi/config.c" - "common/osi/fixed_queue.c" - "common/osi/pkt_queue.c" - "common/osi/fixed_pkt_queue.c" - "common/osi/future.c" - "common/osi/hash_functions.c" - "common/osi/hash_map.c" - "common/osi/list.c" - "common/osi/mutex.c" - "common/osi/thread.c" - "common/osi/osi.c" - "common/osi/semaphore.c" - "porting/mem/bt_osi_mem.c" - "common/ble_log/deprecated/ble_log_spi_out.c" - ) - - # BLE Log Module - if(CONFIG_BLE_LOG_ENABLED) - # Core source files - list(APPEND srcs - common/ble_log/src/ble_log.c - common/ble_log/src/ble_log_lbm.c - common/ble_log/src/ble_log_rt.c - common/ble_log/src/ble_log_util.c - ) - - # Includes - list(APPEND include_dirs - common/ble_log/include - ) - - # Private includes - list(APPEND priv_include_dirs - common/ble_log/src/internal_include - common/ble_log/src/internal_include/prph - ) - - # Timestamp synchronization extension - if(CONFIG_BLE_LOG_TS_ENABLED) - list(APPEND srcs common/ble_log/src/ble_log_ts.c) - endif() - - # Peripheral interface implementation - if(CONFIG_BLE_LOG_PRPH_DUMMY) - list(APPEND srcs common/ble_log/src/prph/ble_log_prph_dummy.c) - elseif(CONFIG_BLE_LOG_PRPH_SPI_MASTER_DMA) - list(APPEND srcs common/ble_log/src/prph/ble_log_prph_spi_master_dma.c) - elseif(CONFIG_BLE_LOG_PRPH_UART_DMA) - list(APPEND srcs common/ble_log/src/prph/ble_log_prph_uart_dma.c) + 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 - if(CONFIG_BT_BLUEDROID_ENABLED) - - list(APPEND priv_include_dirs - host/bluedroid/bta/include - host/bluedroid/bta/ar/include - host/bluedroid/bta/av/include - host/bluedroid/bta/dm/include - host/bluedroid/bta/gatt/include - host/bluedroid/bta/hf_ag/include - host/bluedroid/bta/hf_client/include - host/bluedroid/bta/hd/include - host/bluedroid/bta/hh/include - host/bluedroid/bta/jv/include - host/bluedroid/bta/pba/include - host/bluedroid/bta/sdp/include - host/bluedroid/bta/sys/include - host/bluedroid/device/include - host/bluedroid/hci/include - host/bluedroid/btc/profile/esp/include - host/bluedroid/btc/profile/std/a2dp/include - host/bluedroid/btc/profile/std/include - host/bluedroid/btc/include - host/bluedroid/stack/btm/include - host/bluedroid/stack/gap/include - host/bluedroid/stack/gatt/include - host/bluedroid/stack/hid/include - host/bluedroid/stack/l2cap/include - host/bluedroid/stack/sdp/include - host/bluedroid/stack/smp/include - host/bluedroid/stack/avct/include - host/bluedroid/stack/avrc/include - host/bluedroid/stack/avdt/include - host/bluedroid/stack/a2dp/include - host/bluedroid/stack/rfcomm/include - host/bluedroid/stack/obex/include - host/bluedroid/stack/goep/include - host/bluedroid/stack/include - host/bluedroid/common/include - host/bluedroid/config/include) - - list(APPEND include_dirs ${bluedroid_include_dirs}) - - list(APPEND srcs "host/bluedroid/api/esp_a2dp_api.c" - "host/bluedroid/api/esp_avrc_api.c" - "host/bluedroid/api/esp_bluedroid_hci.c" - "host/bluedroid/api/esp_bt_device.c" - "host/bluedroid/api/esp_bt_main.c" - "host/bluedroid/api/esp_gap_ble_api.c" - "host/bluedroid/api/esp_gap_bt_api.c" - "host/bluedroid/api/esp_gatt_common_api.c" - "host/bluedroid/api/esp_gattc_api.c" - "host/bluedroid/api/esp_gatts_api.c" - "host/bluedroid/api/esp_hidd_api.c" - "host/bluedroid/api/esp_hidh_api.c" - "host/bluedroid/api/esp_hf_ag_api.c" - "host/bluedroid/api/esp_hf_client_api.c" - "host/bluedroid/api/esp_spp_api.c" - "host/bluedroid/api/esp_sdp_api.c" - "host/bluedroid/api/esp_l2cap_bt_api.c" - "host/bluedroid/api/esp_pbac_api.c" - "host/bluedroid/bta/ar/bta_ar.c" - "host/bluedroid/bta/av/bta_av_aact.c" - "host/bluedroid/bta/av/bta_av_act.c" - "host/bluedroid/bta/av/bta_av_api.c" - "host/bluedroid/bta/av/bta_av_ca_act.c" - "host/bluedroid/bta/av/bta_av_ca_sm.c" - "host/bluedroid/bta/av/bta_av_cfg.c" - "host/bluedroid/bta/av/bta_av_ci.c" - "host/bluedroid/bta/av/bta_av_main.c" - "host/bluedroid/bta/av/bta_av_sbc.c" - "host/bluedroid/bta/av/bta_av_ssm.c" - "host/bluedroid/bta/dm/bta_dm_act.c" - "host/bluedroid/bta/dm/bta_dm_api.c" - "host/bluedroid/bta/dm/bta_dm_cfg.c" - "host/bluedroid/bta/dm/bta_dm_ci.c" - "host/bluedroid/bta/dm/bta_dm_co.c" - "host/bluedroid/bta/dm/bta_dm_main.c" - "host/bluedroid/bta/dm/bta_dm_pm.c" - "host/bluedroid/bta/dm/bta_dm_sco.c" - "host/bluedroid/bta/dm/bta_dm_qos.c" - "host/bluedroid/bta/gatt/bta_gatt_common.c" - "host/bluedroid/bta/gatt/bta_gattc_act.c" - "host/bluedroid/bta/gatt/bta_gattc_api.c" - "host/bluedroid/bta/gatt/bta_gattc_cache.c" - "host/bluedroid/bta/gatt/bta_gattc_ci.c" - "host/bluedroid/bta/gatt/bta_gattc_co.c" - "host/bluedroid/bta/gatt/bta_gattc_main.c" - "host/bluedroid/bta/gatt/bta_gattc_utils.c" - "host/bluedroid/bta/gatt/bta_gatts_act.c" - "host/bluedroid/bta/gatt/bta_gatts_api.c" - "host/bluedroid/bta/gatt/bta_gatts_co.c" - "host/bluedroid/bta/gatt/bta_gatts_main.c" - "host/bluedroid/bta/gatt/bta_gatts_utils.c" - "host/bluedroid/bta/hd/bta_hd_api.c" - "host/bluedroid/bta/hd/bta_hd_act.c" - "host/bluedroid/bta/hd/bta_hd_main.c" - "host/bluedroid/bta/hh/bta_hh_act.c" - "host/bluedroid/bta/hh/bta_hh_api.c" - "host/bluedroid/bta/hh/bta_hh_cfg.c" - "host/bluedroid/bta/hh/bta_hh_le.c" - "host/bluedroid/bta/hh/bta_hh_main.c" - "host/bluedroid/bta/hh/bta_hh_utils.c" - "host/bluedroid/bta/jv/bta_jv_act.c" - "host/bluedroid/bta/jv/bta_jv_api.c" - "host/bluedroid/bta/jv/bta_jv_cfg.c" - "host/bluedroid/bta/jv/bta_jv_main.c" - "host/bluedroid/bta/hf_ag/bta_ag_act.c" - "host/bluedroid/bta/hf_ag/bta_ag_api.c" - "host/bluedroid/bta/hf_ag/bta_ag_at.c" - "host/bluedroid/bta/hf_ag/bta_ag_cfg.c" - "host/bluedroid/bta/hf_ag/bta_ag_cmd.c" - "host/bluedroid/bta/hf_ag/bta_ag_main.c" - "host/bluedroid/bta/hf_ag/bta_ag_rfc.c" - "host/bluedroid/bta/hf_ag/bta_ag_sco.c" - "host/bluedroid/bta/hf_ag/bta_ag_sdp.c" - "host/bluedroid/bta/hf_client/bta_hf_client_act.c" - "host/bluedroid/bta/hf_client/bta_hf_client_api.c" - "host/bluedroid/bta/hf_client/bta_hf_client_at.c" - "host/bluedroid/bta/hf_client/bta_hf_client_cmd.c" - "host/bluedroid/bta/hf_client/bta_hf_client_main.c" - "host/bluedroid/bta/hf_client/bta_hf_client_rfc.c" - "host/bluedroid/bta/hf_client/bta_hf_client_sco.c" - "host/bluedroid/bta/hf_client/bta_hf_client_sdp.c" - "host/bluedroid/bta/pba/bta_pba_client_act.c" - "host/bluedroid/bta/pba/bta_pba_client_api.c" - "host/bluedroid/bta/pba/bta_pba_client_main.c" - "host/bluedroid/bta/pba/bta_pba_client_sdp.c" - "host/bluedroid/bta/sdp/bta_sdp.c" - "host/bluedroid/bta/sdp/bta_sdp_act.c" - "host/bluedroid/bta/sdp/bta_sdp_api.c" - "host/bluedroid/bta/sdp/bta_sdp_cfg.c" - "host/bluedroid/bta/sys/bta_sys_conn.c" - "host/bluedroid/bta/sys/bta_sys_main.c" - "host/bluedroid/bta/sys/utl.c" - "host/bluedroid/btc/core/btc_ble_storage.c" - "host/bluedroid/btc/core/btc_config.c" - "host/bluedroid/btc/core/btc_dev.c" - "host/bluedroid/btc/core/btc_dm.c" - "host/bluedroid/btc/core/btc_main.c" - "host/bluedroid/btc/core/btc_profile_queue.c" - "host/bluedroid/btc/core/btc_sec.c" - "host/bluedroid/btc/core/btc_sm.c" - "host/bluedroid/btc/core/btc_storage.c" - "host/bluedroid/btc/core/btc_util.c" - "host/bluedroid/btc/profile/std/a2dp/bta_av_co.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp_control.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp_sink_ext_coedc.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp_source.c" - "host/bluedroid/btc/profile/std/a2dp/btc_a2dp_source_ext_codec.c" - "host/bluedroid/btc/profile/std/a2dp/btc_av.c" - "host/bluedroid/btc/profile/std/avrc/btc_avrc.c" - "host/bluedroid/btc/profile/std/avrc/bta_avrc_co.c" - "host/bluedroid/btc/profile/std/hf_ag/bta_ag_co.c" - "host/bluedroid/btc/profile/std/hf_ag/btc_hf_ag.c" - "host/bluedroid/btc/profile/std/hf_client/btc_hf_client.c" - "host/bluedroid/btc/profile/std/hf_client/bta_hf_client_co.c" - "host/bluedroid/btc/profile/std/hid/btc_hd.c" - "host/bluedroid/btc/profile/std/hid/btc_hh.c" - "host/bluedroid/btc/profile/std/hid/bta_hh_co.c" - "host/bluedroid/btc/profile/std/gap/btc_gap_ble.c" - "host/bluedroid/btc/profile/std/gap/btc_gap_bt.c" - "host/bluedroid/btc/profile/std/gap/bta_gap_bt_co.c" - "host/bluedroid/btc/profile/std/gatt/btc_gatt_common.c" - "host/bluedroid/btc/profile/std/gatt/btc_gatt_util.c" - "host/bluedroid/btc/profile/std/gatt/btc_gattc.c" - "host/bluedroid/btc/profile/std/gatt/btc_gatts.c" - "host/bluedroid/btc/profile/std/spp/btc_spp.c" - "host/bluedroid/btc/profile/std/sdp/btc_sdp.c" - "host/bluedroid/btc/profile/std/l2cap/btc_l2cap.c" - "host/bluedroid/btc/profile/std/pba/btc_pba_client.c" - "host/bluedroid/device/bdaddr.c" - "host/bluedroid/device/controller.c" - "host/bluedroid/device/interop.c" - "host/bluedroid/hci/hci_audio.c" - "host/bluedroid/hci/hci_hal_h4.c" - "host/bluedroid/hci/hci_layer.c" - "host/bluedroid/hci/hci_packet_factory.c" - "host/bluedroid/hci/hci_packet_parser.c" - "host/bluedroid/hci/packet_fragmenter.c" - "host/bluedroid/main/bte_init.c" - "host/bluedroid/main/bte_main.c" - "host/bluedroid/stack/a2dp/a2d_api.c" - "host/bluedroid/stack/a2dp/a2d_sbc.c" - "host/bluedroid/stack/avct/avct_api.c" - "host/bluedroid/stack/avct/avct_ccb.c" - "host/bluedroid/stack/avct/avct_l2c.c" - "host/bluedroid/stack/avct/avct_lcb.c" - "host/bluedroid/stack/avct/avct_lcb_act.c" - "host/bluedroid/stack/avdt/avdt_ad.c" - "host/bluedroid/stack/avdt/avdt_api.c" - "host/bluedroid/stack/avdt/avdt_ccb.c" - "host/bluedroid/stack/avdt/avdt_ccb_act.c" - "host/bluedroid/stack/avdt/avdt_l2c.c" - "host/bluedroid/stack/avdt/avdt_msg.c" - "host/bluedroid/stack/avdt/avdt_scb.c" - "host/bluedroid/stack/avdt/avdt_scb_act.c" - "host/bluedroid/stack/avrc/avrc_api.c" - "host/bluedroid/stack/avrc/avrc_bld_ct.c" - "host/bluedroid/stack/avrc/avrc_bld_tg.c" - "host/bluedroid/stack/avrc/avrc_opt.c" - "host/bluedroid/stack/avrc/avrc_pars_ct.c" - "host/bluedroid/stack/avrc/avrc_pars_tg.c" - "host/bluedroid/stack/avrc/avrc_sdp.c" - "host/bluedroid/stack/avrc/avrc_utils.c" - "host/bluedroid/stack/hid/hidd_api.c" - "host/bluedroid/stack/hid/hidd_conn.c" - "host/bluedroid/stack/hid/hidh_api.c" - "host/bluedroid/stack/hid/hidh_conn.c" - "host/bluedroid/stack/btm/btm_acl.c" - "host/bluedroid/stack/btm/btm_ble.c" - "host/bluedroid/stack/btm/btm_ble_addr.c" - "host/bluedroid/stack/btm/btm_ble_adv_filter.c" - "host/bluedroid/stack/btm/btm_ble_batchscan.c" - "host/bluedroid/stack/btm/btm_ble_bgconn.c" - "host/bluedroid/stack/btm/btm_ble_cont_energy.c" - "host/bluedroid/stack/btm/btm_ble_gap.c" - "host/bluedroid/stack/btm/btm_ble_5_gap.c" - "host/bluedroid/stack/btm/btm_ble_multi_adv.c" - "host/bluedroid/stack/btm/btm_ble_privacy.c" - "host/bluedroid/stack/btm/btm_dev.c" - "host/bluedroid/stack/btm/btm_devctl.c" - "host/bluedroid/stack/btm/btm_inq.c" - "host/bluedroid/stack/btm/btm_bredr_pwr_ctrl.c" - "host/bluedroid/stack/btm/btm_main.c" - "host/bluedroid/stack/btm/btm_pm.c" - "host/bluedroid/stack/btm/btm_sco.c" - "host/bluedroid/stack/btm/btm_sec.c" - "host/bluedroid/stack/btu/btu_hcif.c" - "host/bluedroid/stack/btu/btu_init.c" - "host/bluedroid/stack/btu/btu_task.c" - "host/bluedroid/stack/gap/gap_api.c" - "host/bluedroid/stack/gap/gap_ble.c" - "host/bluedroid/stack/gap/gap_conn.c" - "host/bluedroid/stack/gap/gap_utils.c" - "host/bluedroid/stack/gatt/att_protocol.c" - "host/bluedroid/stack/gatt/gatt_api.c" - "host/bluedroid/stack/gatt/gatt_attr.c" - "host/bluedroid/stack/gatt/gatt_auth.c" - "host/bluedroid/stack/gatt/gatt_cl.c" - "host/bluedroid/stack/gatt/gatt_db.c" - "host/bluedroid/stack/gatt/gatt_main.c" - "host/bluedroid/stack/gatt/gatt_sr.c" - "host/bluedroid/stack/gatt/gatt_sr_hash.c" - "host/bluedroid/stack/gatt/gatt_utils.c" - "host/bluedroid/stack/goep/goepc_api.c" - "host/bluedroid/stack/goep/goepc_main.c" - "host/bluedroid/stack/hcic/hciblecmds.c" - "host/bluedroid/stack/hcic/hcicmds.c" - "host/bluedroid/stack/l2cap/l2c_api.c" - "host/bluedroid/stack/l2cap/l2c_ble.c" - "host/bluedroid/stack/l2cap/l2c_csm.c" - "host/bluedroid/stack/l2cap/l2c_fcr.c" - "host/bluedroid/stack/l2cap/l2c_link.c" - "host/bluedroid/stack/l2cap/l2c_main.c" - "host/bluedroid/stack/l2cap/l2c_ucd.c" - "host/bluedroid/stack/l2cap/l2c_utils.c" - "host/bluedroid/stack/l2cap/l2cap_client.c" - "host/bluedroid/stack/obex/obex_api.c" - "host/bluedroid/stack/obex/obex_main.c" - "host/bluedroid/stack/obex/obex_tl_l2cap.c" - "host/bluedroid/stack/obex/obex_tl_rfcomm.c" - "host/bluedroid/stack/rfcomm/port_api.c" - "host/bluedroid/stack/rfcomm/port_rfc.c" - "host/bluedroid/stack/rfcomm/port_utils.c" - "host/bluedroid/stack/rfcomm/rfc_l2cap_if.c" - "host/bluedroid/stack/rfcomm/rfc_mx_fsm.c" - "host/bluedroid/stack/rfcomm/rfc_port_fsm.c" - "host/bluedroid/stack/rfcomm/rfc_port_if.c" - "host/bluedroid/stack/rfcomm/rfc_ts_frames.c" - "host/bluedroid/stack/rfcomm/rfc_utils.c" - "host/bluedroid/stack/sdp/sdp_api.c" - "host/bluedroid/stack/sdp/sdp_db.c" - "host/bluedroid/stack/sdp/sdp_discovery.c" - "host/bluedroid/stack/sdp/sdp_main.c" - "host/bluedroid/stack/sdp/sdp_server.c" - "host/bluedroid/stack/sdp/sdp_utils.c" - "host/bluedroid/stack/smp/aes.c" - "host/bluedroid/stack/smp/p_256_curvepara.c" - "host/bluedroid/stack/smp/p_256_ecc_pp.c" - "host/bluedroid/stack/smp/p_256_multprecision.c" - "host/bluedroid/stack/smp/smp_act.c" - "host/bluedroid/stack/smp/smp_api.c" - "host/bluedroid/stack/smp/smp_br_main.c" - "host/bluedroid/stack/smp/smp_cmac.c" - "host/bluedroid/stack/smp/smp_keys.c" - "host/bluedroid/stack/smp/smp_l2c.c" - "host/bluedroid/stack/smp/smp_main.c" - "host/bluedroid/stack/smp/smp_utils.c" - "host/bluedroid/config/stack_config.c") - - - list(APPEND srcs "common/btc/profile/esp/blufi/bluedroid_host/esp_blufi.c") - - if(CONFIG_BLE_MESH) - list(APPEND srcs "esp_ble_mesh/core/bluedroid_host/adapter.c") - endif() - - if(CONFIG_BT_BLE_FEAT_ISO_EN) - list(APPEND srcs "host/bluedroid/stack/btm/btm_ble_iso.c" - "host/bluedroid/btc/profile/std/iso/btc_iso_ble.c" - "host/bluedroid/api/esp_ble_iso_api.c" - "host/bluedroid/hci/ble_hci_iso.c") - endif() - - if(CONFIG_BT_BLE_FEAT_CTE_EN) - list(APPEND srcs "host/bluedroid/stack/btm/btm_ble_cte.c" - "host/bluedroid/btc/profile/std/cte/btc_ble_cte.c" - "host/bluedroid/api/esp_ble_cte_api.c") - endif() - - if((CONFIG_BT_A2DP_ENABLE AND NOT CONFIG_BT_A2DP_USE_EXTERNAL_CODEC) OR - (CONFIG_BT_HFP_ENABLE AND CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI AND NOT CONFIG_BT_HFP_USE_EXTERNAL_CODEC)) - list(APPEND priv_include_dirs - host/bluedroid/external/sbc/decoder/include - host/bluedroid/external/sbc/encoder/include - host/bluedroid/external/sbc/plc/include) - - list(APPEND srcs "host/bluedroid/external/sbc/decoder/srce/alloc.c" - "host/bluedroid/external/sbc/decoder/srce/bitalloc-sbc.c" - "host/bluedroid/external/sbc/decoder/srce/bitalloc.c" - "host/bluedroid/external/sbc/decoder/srce/bitstream-decode.c" - "host/bluedroid/external/sbc/decoder/srce/decoder-oina.c" - "host/bluedroid/external/sbc/decoder/srce/decoder-private.c" - "host/bluedroid/external/sbc/decoder/srce/decoder-sbc.c" - "host/bluedroid/external/sbc/decoder/srce/dequant.c" - "host/bluedroid/external/sbc/decoder/srce/framing-sbc.c" - "host/bluedroid/external/sbc/decoder/srce/framing.c" - "host/bluedroid/external/sbc/decoder/srce/oi_codec_version.c" - "host/bluedroid/external/sbc/decoder/srce/synthesis-8-generated.c" - "host/bluedroid/external/sbc/decoder/srce/synthesis-dct8.c" - "host/bluedroid/external/sbc/decoder/srce/synthesis-sbc.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_analysis.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_dct.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_dct_coeffs.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_enc_bit_alloc_mono.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_enc_bit_alloc_ste.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_enc_coeffs.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_encoder.c" - "host/bluedroid/external/sbc/encoder/srce/sbc_packing.c" - "host/bluedroid/external/sbc/plc/sbc_plc.c") - endif() - - endif() - - if(CONFIG_BLE_MESH) - - if(CONFIG_BLE_MESH_USE_UNIFIED_CRYPTO) - message(WARNING "This configuration path is deprecated and will be removed" - "in a future version. Please use the corresponding Kconfig" - "options under $IDF_PATH/components/bt/common/Kconfig.") - endif() - - list(APPEND include_dirs ${ble_mesh_include_dirs}) - - list(APPEND srcs "esp_ble_mesh/api/core/esp_ble_mesh_ble_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_common_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_local_data_operation_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_low_power_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_networking_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_provisioning_api.c" - "esp_ble_mesh/api/core/esp_ble_mesh_proxy_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_config_model_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_generic_model_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_health_model_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_lighting_model_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_sensor_model_api.c" - "esp_ble_mesh/api/models/esp_ble_mesh_time_scene_model_api.c" - "esp_ble_mesh/btc/btc_ble_mesh_ble.c" - "esp_ble_mesh/btc/btc_ble_mesh_config_model.c" - "esp_ble_mesh/btc/btc_ble_mesh_generic_model.c" - "esp_ble_mesh/btc/btc_ble_mesh_health_model.c" - "esp_ble_mesh/btc/btc_ble_mesh_lighting_model.c" - "esp_ble_mesh/btc/btc_ble_mesh_prov.c" - "esp_ble_mesh/btc/btc_ble_mesh_sensor_model.c" - "esp_ble_mesh/btc/btc_ble_mesh_time_scene_model.c" - "esp_ble_mesh/common/atomic.c" - "esp_ble_mesh/common/buf.c" - "esp_ble_mesh/common/common.c" - "esp_ble_mesh/common/kernel.c" - "esp_ble_mesh/common/mutex.c" - "esp_ble_mesh/common/queue.c" - "esp_ble_mesh/common/timer.c" - "esp_ble_mesh/common/utils.c") - - # Select crypto implementation based on config - if(CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT) - list(APPEND srcs "esp_ble_mesh/common/crypto_tc.c") - elseif(CONFIG_BT_SMP_CRYPTO_STACK_MBEDTLS) - if(CONFIG_MBEDTLS_VER_4_X_SUPPORT) - list(APPEND srcs "esp_ble_mesh/common/crypto_psa.c") - else() - list(APPEND srcs "esp_ble_mesh/common/crypto_mbedtls.c") - endif() - endif() - - list(APPEND srcs "esp_ble_mesh/core/storage/settings_nvs.c" - "esp_ble_mesh/core/storage/settings_uid.c" - "esp_ble_mesh/core/storage/settings.c" - "esp_ble_mesh/core/access.c" - "esp_ble_mesh/core/adv_common.c" - "esp_ble_mesh/core/beacon.c" - "esp_ble_mesh/core/cfg_cli.c" - "esp_ble_mesh/core/cfg_srv.c" - "esp_ble_mesh/core/crypto.c" - "esp_ble_mesh/core/fast_prov.c" - "esp_ble_mesh/core/friend.c" - "esp_ble_mesh/core/health_cli.c" - "esp_ble_mesh/core/health_srv.c" - "esp_ble_mesh/core/heartbeat.c" - "esp_ble_mesh/core/local.c" - "esp_ble_mesh/core/lpn.c" - "esp_ble_mesh/core/main.c" - "esp_ble_mesh/core/net.c" - "esp_ble_mesh/core/prov_common.c" - "esp_ble_mesh/core/prov_node.c" - "esp_ble_mesh/core/prov_pvnr.c" - "esp_ble_mesh/core/proxy_client.c" - "esp_ble_mesh/core/proxy_server.c" - "esp_ble_mesh/core/pvnr_mgmt.c" - "esp_ble_mesh/core/rpl.c" - "esp_ble_mesh/core/scan.c" - "esp_ble_mesh/core/test.c" - "esp_ble_mesh/models/common/device_property.c" - "esp_ble_mesh/models/common/model_common.c" - "esp_ble_mesh/models/client/client_common.c" - "esp_ble_mesh/models/client/generic_client.c" - "esp_ble_mesh/models/client/lighting_client.c" - "esp_ble_mesh/models/client/sensor_client.c" - "esp_ble_mesh/models/client/time_scene_client.c" - "esp_ble_mesh/models/server/generic_server.c" - "esp_ble_mesh/models/server/lighting_server.c" - "esp_ble_mesh/models/server/sensor_server.c" - "esp_ble_mesh/models/server/server_common.c" - "esp_ble_mesh/models/server/state_binding.c" - "esp_ble_mesh/models/server/state_transition.c" - "esp_ble_mesh/models/server/time_scene_server.c") - - if(CONFIG_BLE_MESH_V11_SUPPORT) - list(APPEND include_dirs ${ble_mesh_v11_include_dirs}) - - list(APPEND srcs - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_agg_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_brc_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_cm_data_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_df_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_lcd_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_odp_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_prb_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_rpr_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_sar_model_api.c" - "esp_ble_mesh/v1.1/api/core/esp_ble_mesh_srpl_model_api.c" - "esp_ble_mesh/v1.1/api/models/esp_ble_mesh_mbt_model_api.c" - "esp_ble_mesh/v1.1/api/models/esp_ble_mesh_dfu_model_api.c" - "esp_ble_mesh/v1.1/api/models/esp_ble_mesh_dfu_slot_api.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_agg_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_brc_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_df_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_dfu_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_dfu_slot.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_lcd_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_mbt_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_odp_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_prb_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_rpr_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_sar_model.c" - "esp_ble_mesh/v1.1/btc/btc_ble_mesh_srpl_model.c" - "esp_ble_mesh/v1.1/mbt/blob_srv.c" - "esp_ble_mesh/v1.1/mbt/blob_cli.c" - "esp_ble_mesh/v1.1/dfu/dfu_cli.c" - "esp_ble_mesh/v1.1/dfu/dfu_srv.c" - "esp_ble_mesh/v1.1/dfu/dfu_slot.c" - "esp_ble_mesh/v1.1/dfu/dfu_metadata.c" - "esp_ble_mesh/v1.1/dfu/dfd_srv.c" - "esp_ble_mesh/v1.1/dfu/dfd_cli.c" - "esp_ble_mesh/lib/ext.c") - - if(CONFIG_BLE_MESH_SAR_ENHANCEMENT) - list(APPEND srcs "esp_ble_mesh/core/transport.enh.c") - else() - list(APPEND srcs "esp_ble_mesh/core/transport.c") - endif() - else() - list(APPEND srcs "esp_ble_mesh/core/transport.c") - endif() - - if(CONFIG_BLE_MESH_SUPPORT_MULTI_ADV) - list(APPEND srcs "esp_ble_mesh/core/ext_adv.c") - else() - list(APPEND srcs "esp_ble_mesh/core/adv.c") - endif() - - if(CONFIG_BLE_MESH_SUPPORT_BLE_ADV) - list(APPEND srcs "esp_ble_mesh/core/ble_adv.c") - endif() - endif() - - if(CONFIG_BT_ISO) - list(APPEND include_dirs - ${ble_iso_include_dirs} - "esp_ble_audio/host" - "esp_ble_audio/host/adapter" - "esp_ble_audio/include/subsys/bluetooth" - "esp_ble_audio/include/subsys/bluetooth/host" - "esp_ble_audio/include") - - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/gatt/gatt.c" - "esp_ble_audio/host/adapter/nimble/gatt/gatt.db.c" - "esp_ble_audio/host/adapter/nimble/gatt/gatt.nrp.c" - "esp_ble_audio/host/adapter/nimble/gap.c" - "esp_ble_audio/host/adapter/nimble/iso.c" - "esp_ble_audio/host/common/adv.c" - "esp_ble_audio/host/common/conn.c" - "esp_ble_audio/host/common/gatt.c" - "esp_ble_audio/host/common/hci.c" - "esp_ble_audio/host/common/host.c" - "esp_ble_audio/host/common/iso.c" - "esp_ble_audio/host/common/scan.c" - "esp_ble_audio/host/common/task.c" - "esp_ble_audio/host/common/app/gap.c" - "esp_ble_audio/host/common/app/gatt.c" - "esp_ble_audio/host/utils/crc/crc32_sw.c" - "esp_ble_audio/host/utils/addr.c" - "esp_ble_audio/host/utils/bt_str.c" - "esp_ble_audio/host/utils/buf.c" - "esp_ble_audio/host/utils/crypto.c" - "esp_ble_audio/host/utils/timer.c" - "esp_ble_audio/host/utils/utf8.c" - "esp_ble_audio/host/utils/utils.c" - "esp_ble_audio/host/utils/uuid.c" - "esp_ble_audio/host/iso/iso.c" - "esp_ble_audio/api/iso/esp_ble_iso_common_api.c") - - if(CONFIG_BT_OTS OR CONFIG_BT_OTS_CLIENT) - list(APPEND srcs - "esp_ble_audio/host/common/l2cap.c" - "esp_ble_audio/host/adapter/nimble/l2cap.c") - endif() - endif() - - if(CONFIG_BT_AUDIO) - list(APPEND include_dirs - ${ble_audio_include_dirs} - "esp_ble_audio/include/subsys/bluetooth/host") - - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/server.c" - "esp_ble_audio/host/adapter/nimble/init.c" - "esp_ble_audio/host/common/init.c" - "esp_ble_audio/api/audio/esp_ble_audio_aics_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_bap_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_cap_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_ccp_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_codec_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_common_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_csip_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_gmap_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_has_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_mcc_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_media_proxy_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_micp_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_pacs_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_pbp_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_tbs_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_tmap_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_vcp_api.c" - "esp_ble_audio/api/audio/esp_ble_audio_vocs_api.c") - - if(CONFIG_BT_ASCS) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/ascs.c") - endif() - - if(CONFIG_BT_PACS) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/pacs.c") - endif() - - if(CONFIG_BT_BAP_SCAN_DELEGATOR) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/bass.c") - endif() - - if(CONFIG_BT_CAP_ACCEPTOR) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/cas.c") - endif() - - if(CONFIG_BT_CSIP_SET_MEMBER) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/csis.c") - endif() - - if(CONFIG_BT_TBS) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/tbs.c") - endif() - - if(CONFIG_BT_TMAP) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/tmas.c") - endif() - - if(CONFIG_BT_VCP_VOL_REND) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/vcs.c") - endif() - - if(CONFIG_BT_MICP_MIC_DEV) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/mics.c") - endif() - - if(CONFIG_BT_MCS) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/mcs.c") - endif() - - if(CONFIG_BT_HAS) - list(APPEND srcs - "esp_ble_audio/host/adapter/nimble/profiles/has.c") - endif() - - if(CONFIG_BT_OTS OR CONFIG_BT_OTS_CLIENT) - list(APPEND include_dirs - "esp_ble_audio/host/services/ots") - - list(APPEND srcs - "esp_ble_audio/host/services/ots/ots_l2cap.c") - - if(CONFIG_BT_OTS) - list(APPEND srcs - "esp_ble_audio/host/services/ots/ots_oacp.c" - "esp_ble_audio/host/services/ots/ots_obj_manager.c" - "esp_ble_audio/host/services/ots/ots_olcp.c" - "esp_ble_audio/host/services/ots/ots.c") - - if(CONFIG_BT_OTS_DIR_LIST_OBJ) - list(APPEND srcs - "esp_ble_audio/host/services/ots/ots_dir_list.c") - endif() - endif() - - if(CONFIG_BT_OTS_CLIENT) - list(APPEND srcs - "esp_ble_audio/host/services/ots/ots_client.c") - endif() - endif() - endif() - - if(CONFIG_BT_DUAL_MODE_ARCH) - add_subdirectory(porting_btdm) - list(APPEND srcs - ${porting_btdm_srcs} - ) - - if(CONFIG_BT_NIMBLE_ENABLED) - list(APPEND srcs - "host/nimble/nimble/nimble/transport/esp_ipc_btdm/src/hci_esp_ipc.c" - ) - endif() - - list(APPEND include_dirs - ${porting_btdm_include_dirs} - ) - elseif(CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT) - list(APPEND srcs - "porting/npl/freertos/src/npl_os_freertos.c" - "porting/mem/os_msys_init.c" - "porting/mem/os_mempool.c" - "porting/transport/src/hci_transport.c" - ) - - list(APPEND include_dirs - host/nimble/port/include - ) - - if(CONFIG_BT_CONTROLLER_DISABLED) - list(APPEND srcs - "host/nimble/nimble/porting/nimble/src/hal_uart.c" - ) - elseif(CONFIG_BT_LE_HCI_INTERFACE_USE_RAM) - if(CONFIG_BT_NIMBLE_ENABLED) - list(APPEND srcs - "porting/transport/driver/vhci/hci_driver_nimble.c" - "host/nimble/nimble/nimble/transport/esp_ipc/src/hci_esp_ipc.c" - ) - else() - list(APPEND srcs - "porting/transport/driver/vhci/hci_driver_standard.c" - ) - endif() - elseif(CONFIG_BT_LE_HCI_INTERFACE_USE_UART) - list(APPEND srcs - "porting/transport/driver/common/hci_driver_util.c" - "porting/transport/driver/common/hci_driver_h4.c" - "porting/transport/driver/common/hci_driver_mem.c" - "porting/transport/driver/uart/hci_driver_uart_config.c" - ) - if(CONFIG_BT_LE_UART_HCI_DMA_MODE) - list(APPEND srcs - "porting/transport/driver/uart/hci_driver_uart_dma.c" - ) - else() - list(APPEND srcs - "porting/transport/driver/uart/hci_driver_uart.c" - ) - endif() - endif() - - list(APPEND include_dirs - porting/include - porting/npl/freertos/include - porting/transport/include - ) - endif() - - # Compile TinyCrypt if: - # 1. Controller uses TinyCrypt (not mbedTLS), OR - # 2. NimBLE uses TinyCrypt (not mbedTLS), OR - # 3. Bluedroid Host SMP uses TinyCrypt - if(CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT OR NOT CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS) - list(APPEND include_dirs - common/tinycrypt/include - common/tinycrypt/port - ) - list(APPEND srcs "common/tinycrypt/src/utils.c" - "common/tinycrypt/src/sha256.c" - "common/tinycrypt/src/ecc.c" - "common/tinycrypt/src/ctr_prng.c" - "common/tinycrypt/src/ctr_mode.c" - "common/tinycrypt/src/aes_decrypt.c" - "common/tinycrypt/src/aes_encrypt.c" - "common/tinycrypt/src/ccm_mode.c" - "common/tinycrypt/src/ecc_dsa.c" - "common/tinycrypt/src/cmac_mode.c" - "common/tinycrypt/src/ecc_dh.c" - "common/tinycrypt/src/hmac_prng.c" - "common/tinycrypt/src/ecc_platform_specific.c" - "common/tinycrypt/src/hmac.c" - "common/tinycrypt/src/cbc_mode.c" - "common/tinycrypt/port/esp_tinycrypt_port.c") - endif() - - if(CONFIG_BT_NIMBLE_ENABLED) - - list(APPEND include_dirs - host/nimble/nimble/nimble/host/include - host/nimble/nimble/nimble/include - host/nimble/nimble/nimble/host/services/ans/include - host/nimble/nimble/nimble/host/services/bas/include - host/nimble/nimble/nimble/host/services/dis/include - host/nimble/nimble/nimble/host/services/gap/include - host/nimble/nimble/nimble/host/services/gatt/include - host/nimble/nimble/nimble/host/services/hr/include - host/nimble/nimble/nimble/host/services/htp/include - host/nimble/nimble/nimble/host/services/ias/include - host/nimble/nimble/nimble/host/services/ipss/include - host/nimble/nimble/nimble/host/services/lls/include - host/nimble/nimble/nimble/host/services/prox/include - host/nimble/nimble/nimble/host/services/cts/include - host/nimble/nimble/nimble/host/services/tps/include - host/nimble/nimble/nimble/host/services/hid/include - host/nimble/nimble/nimble/host/services/sps/include - host/nimble/nimble/nimble/host/services/cte/include - host/nimble/nimble/nimble/host/util/include - host/nimble/nimble/nimble/host/store/ram/include - host/nimble/nimble/nimble/host/store/config/include - host/nimble/nimble/nimble/host/services/ras/include - ) - - list(APPEND srcs "host/nimble/nimble/nimble/transport/src/transport.c" - "host/nimble/nimble/nimble/host/util/src/addr.c" - "host/nimble/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c" - "host/nimble/nimble/nimble/host/services/tps/src/ble_svc_tps.c" - "host/nimble/nimble/nimble/host/services/ias/src/ble_svc_ias.c" - "host/nimble/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c" - "host/nimble/nimble/nimble/host/services/ans/src/ble_svc_ans.c" - "host/nimble/nimble/nimble/host/services/hr/src/ble_svc_hr.c" - "host/nimble/nimble/nimble/host/services/htp/src/ble_svc_htp.c" - "host/nimble/nimble/nimble/host/services/gap/src/ble_svc_gap.c" - "host/nimble/nimble/nimble/host/services/bas/src/ble_svc_bas.c" - "host/nimble/nimble/nimble/host/services/dis/src/ble_svc_dis.c" - "host/nimble/nimble/nimble/host/services/lls/src/ble_svc_lls.c" - "host/nimble/nimble/nimble/host/services/prox/src/ble_svc_prox.c" - "host/nimble/nimble/nimble/host/services/cts/src/ble_svc_cts.c" - "host/nimble/nimble/nimble/host/services/hid/src/ble_svc_hid.c" - "host/nimble/nimble/nimble/host/services/sps/src/ble_svc_sps.c" - "host/nimble/nimble/nimble/host/services/cte/src/ble_svc_cte.c" - "host/nimble/nimble/nimble/host/services/ras/src/ble_svc_ras.c" - "host/nimble/nimble/nimble/host/src/ble_cs.c" - "host/nimble/nimble/nimble/host/src/ble_hs_conn.c" - "host/nimble/nimble/nimble/host/src/ble_store_util.c" - "host/nimble/nimble/nimble/host/src/ble_sm.c" - "host/nimble/nimble/nimble/host/src/ble_hs_shutdown.c" - "host/nimble/nimble/nimble/host/src/ble_l2cap_sig_cmd.c" - "host/nimble/nimble/nimble/host/src/ble_hs_hci_cmd.c" - "host/nimble/nimble/nimble/host/src/ble_hs_id.c" - "host/nimble/nimble/nimble/host/src/ble_att_svr.c" - "host/nimble/nimble/nimble/host/src/ble_gatts_lcl.c" - "host/nimble/nimble/nimble/host/src/ble_ibeacon.c" - "host/nimble/nimble/nimble/host/src/ble_hs_atomic.c" - "host/nimble/nimble/nimble/host/src/ble_sm_alg.c" - "host/nimble/nimble/nimble/host/src/ble_hs_stop.c" - "host/nimble/nimble/nimble/host/src/ble_hs.c" - "host/nimble/nimble/nimble/host/src/ble_hs_hci_evt.c" - "host/nimble/nimble/nimble/host/src/ble_hs_mqueue.c" - "host/nimble/nimble/nimble/host/src/ble_hs_periodic_sync.c" - "host/nimble/nimble/nimble/host/src/ble_att.c" - "host/nimble/nimble/nimble/host/src/ble_ead.c" - "host/nimble/nimble/nimble/host/src/ble_aes_ccm.c" - "host/nimble/nimble/nimble/host/src/ble_gattc.c" - "host/nimble/nimble/nimble/host/src/ble_store.c" - "host/nimble/nimble/nimble/host/src/ble_sm_lgcy.c" - "host/nimble/nimble/nimble/host/src/ble_hs_cfg.c" - "host/nimble/nimble/nimble/host/src/ble_att_clt.c" - "host/nimble/nimble/nimble/host/src/ble_l2cap_coc.c" - "host/nimble/nimble/nimble/host/src/ble_hs_mbuf.c" - "host/nimble/nimble/nimble/host/src/ble_att_cmd.c" - "host/nimble/nimble/nimble/host/src/ble_hs_log.c" - "host/nimble/nimble/nimble/host/src/ble_eddystone.c" - "host/nimble/nimble/nimble/host/src/ble_hs_startup.c" - "host/nimble/nimble/nimble/host/src/ble_l2cap_sig.c" - "host/nimble/nimble/nimble/host/src/ble_gap.c" - "host/nimble/nimble/nimble/host/src/ble_sm_cmd.c" - "host/nimble/nimble/nimble/host/src/ble_uuid.c" - "host/nimble/nimble/nimble/host/src/ble_hs_pvcy.c" - "host/nimble/nimble/nimble/host/src/ble_hs_flow.c" - "host/nimble/nimble/nimble/host/src/ble_l2cap.c" - "host/nimble/nimble/nimble/host/src/ble_sm_sc.c" - "host/nimble/nimble/nimble/host/src/ble_hs_misc.c" - "host/nimble/nimble/nimble/host/src/ble_gatts.c" - "host/nimble/nimble/nimble/host/src/ble_hs_adv.c" - "host/nimble/nimble/nimble/host/src/ble_hs_hci.c" - "host/nimble/nimble/nimble/host/src/ble_hs_hci_util.c" - "host/nimble/nimble/nimble/host/src/ble_hs_resolv.c" - "host/nimble/nimble/nimble/host/store/ram/src/ble_store_ram.c" - "host/nimble/nimble/nimble/host/store/config/src/ble_store_config.c" - "host/nimble/nimble/nimble/host/store/config/src/ble_store_nvs.c" - "host/nimble/nimble/nimble/host/src/ble_gattc_cache.c" - "host/nimble/nimble/nimble/host/src/ble_gattc_cache_conn.c" - "host/nimble/nimble/nimble/host/src/ble_eatt.c" - ) - - if(CONFIG_BT_NIMBLE_ISO) - list(APPEND srcs - "host/nimble/nimble/nimble/host/src/ble_hs_iso_hci.c" - "host/nimble/nimble/nimble/host/src/ble_hs_iso.c" - ) - endif() - - if(CONFIG_BT_CONTROLLER_DISABLED AND CONFIG_BT_NIMBLE_TRANSPORT_UART) - list(APPEND srcs - "host/nimble/nimble/nimble/transport/uart_ll/src/hci_uart.c" - "host/nimble/nimble/nimble/transport/common/hci_h4/src/hci_h4.c" - ) - endif() - - list(APPEND srcs - "host/nimble/nimble/porting/nimble/src/nimble_port.c" - "host/nimble/port/src/nvs_port.c" - "host/nimble/port/src/esp_nimble_mem.c" - ) - if(CONFIG_BT_DUAL_MODE_ARCH) - list(APPEND srcs - "host/nimble/nimble/porting/npl/esp-idf/src/nimble_port_freertos.c" - ) - list(APPEND include_dirs - "host/nimble/nimble/porting/npl/esp-idf/include" - ) - else() - list(APPEND srcs - "host/nimble/nimble/porting/npl/freertos/src/nimble_port_freertos.c" - ) - endif() - - list(APPEND include_dirs - host/nimble/nimble/porting/nimble/include - host/nimble/port/include - host/nimble/nimble/nimble/transport/include - host/nimble/nimble/nimble/include - ) - - if(CONFIG_BT_CONTROLLER_DISABLED) - list(APPEND include_dirs - host/nimble/nimble/nimble/transport/common/hci_h4/include - ) - endif() - - if((NOT CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT) AND (NOT CONFIG_BT_DUAL_MODE_ARCH)) - list(APPEND srcs - "host/nimble/nimble/porting/nimble/src/endian.c" - "porting/mem/os_mempool.c" - "host/nimble/nimble/porting/nimble/src/mem.c" - "host/nimble/nimble/porting/nimble/src/os_mbuf.c" - "host/nimble/nimble/porting/nimble/src/os_msys_init.c" - "host/nimble/nimble/porting/npl/freertos/src/npl_os_freertos.c" - ) - - if(CONFIG_BT_CONTROLLER_DISABLED AND CONFIG_BT_NIMBLE_TRANSPORT_UART) - list(APPEND srcs - "host/nimble/nimble/porting/nimble/src/hal_uart.c" - ) - endif() - - list(APPEND include_dirs - porting/include - host/nimble/nimble/porting/npl/freertos/include - ) - endif() - - if(CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE AND CONFIG_BT_CONTROLLER_ENABLED) - list(APPEND srcs - "host/nimble/esp-hci/src/esp_nimble_hci.c" - "host/nimble/nimble/nimble/transport/esp_ipc_legacy/src/hci_esp_ipc_legacy.c" - ) - list(APPEND include_dirs ${nimble_hci_include_dirs}) - endif() - - list(APPEND srcs - "common/btc/profile/esp/blufi/nimble_host/esp_blufi.c") - - if(CONFIG_BLE_MESH) - list(APPEND srcs "esp_ble_mesh/core/nimble_host/adapter.c") - endif() - - if(CONFIG_BT_NIMBLE_MESH) - - list(APPEND include_dirs - host/nimble/nimble/nimble/host/mesh/include - host/nimble/nimble/nimble/host/include/host) - - list(APPEND srcs "host/nimble/nimble/nimble/host/mesh/src/shell.c" - "host/nimble/nimble/nimble/host/mesh/src/friend.c" - "host/nimble/nimble/nimble/host/mesh/src/crypto.c" - "host/nimble/nimble/nimble/host/mesh/src/settings.c" - "host/nimble/nimble/nimble/host/mesh/src/adv.c" - "host/nimble/nimble/nimble/host/mesh/src/adv_ext.c" - "host/nimble/nimble/nimble/host/mesh/src/adv_legacy.c" - "host/nimble/nimble/nimble/host/mesh/src/model_srv.c" - "host/nimble/nimble/nimble/host/mesh/src/msg.c" - "host/nimble/nimble/nimble/host/mesh/src/beacon.c" - "host/nimble/nimble/nimble/host/mesh/src/glue.c" - "host/nimble/nimble/nimble/host/mesh/src/model_cli.c" - "host/nimble/nimble/nimble/host/mesh/src/transport.c" - "host/nimble/nimble/nimble/host/mesh/src/prov.c" - "host/nimble/nimble/nimble/host/mesh/src/mesh.c" - "host/nimble/nimble/nimble/host/mesh/src/access.c" - "host/nimble/nimble/nimble/host/mesh/src/cfg_srv.c" - "host/nimble/nimble/nimble/host/mesh/src/cfg_cli.c" - "host/nimble/nimble/nimble/host/mesh/src/light_model.c" - "host/nimble/nimble/nimble/host/mesh/src/health_cli.c" - "host/nimble/nimble/nimble/host/mesh/src/lpn.c" - "host/nimble/nimble/nimble/host/mesh/src/health_srv.c" - "host/nimble/nimble/nimble/host/mesh/src/testing.c" - "host/nimble/nimble/nimble/host/mesh/src/aes-ccm.c" - "host/nimble/nimble/nimble/host/mesh/src/app_keys.c" - "host/nimble/nimble/nimble/host/mesh/src/cdb.c" - "host/nimble/nimble/nimble/host/mesh/src/cfg.c" - "host/nimble/nimble/nimble/host/mesh/src/pb_adv.c" - "host/nimble/nimble/nimble/host/mesh/src/pb_gatt.c" - "host/nimble/nimble/nimble/host/mesh/src/pb_gatt_srv.c" - "host/nimble/nimble/nimble/host/mesh/src/prov_device.c" - "host/nimble/nimble/nimble/host/mesh/src/provisioner.c" - "host/nimble/nimble/nimble/host/mesh/src/heartbeat.c" - "host/nimble/nimble/nimble/host/mesh/src/rpl.c" - "host/nimble/nimble/nimble/host/mesh/src/subnet.c" - "host/nimble/nimble/nimble/host/mesh/src/proxy_msg.c" - "host/nimble/nimble/nimble/host/mesh/src/proxy_srv.c" - "host/nimble/nimble/nimble/host/mesh/src/net.c") - endif() - endif() - + 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 Audio + add_subdirectory(esp_ble_audio) + list(APPEND srcs ${ble_audio_srcs}) + list(APPEND include_dirs ${ble_audio_include_dirs}) + list(APPEND priv_include_dirs ${ble_audio_priv_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 @@ -1185,33 +87,6 @@ set(bt_priv_requires esp_security ) -if(CONFIG_BLE_COMPRESSED_LOG_ENABLE) - set(CODE_BASE_PATH "${CMAKE_CURRENT_SOURCE_DIR}") - # 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. - add_subdirectory(common/ble_log/extension/log_compression) - if(LOG_COMPRESSION_TARGET) - set(srcs ${LOG_COMPRESS_SRCS}) - set(include_dirs ${LOG_COMPRESS_INCLUDE_DIRS}) - # LOG_COMPRESS_FILES_WITH_FLAGS format: "file_path|compile_flags" - if(LOG_COMPRESS_FILES_WITH_FLAGS) - foreach(file_entry ${LOG_COMPRESS_FILES_WITH_FLAGS}) - # Split by '|' to get file path and flags - string(REPLACE "|" ";" file_parts "${file_entry}") - list(GET file_parts 0 file_path) - list(GET file_parts 1 compile_flags) - set_source_files_properties(${file_path} - PROPERTIES COMPILE_FLAGS "${compile_flags}") - endforeach() - endif() - else() - list(APPEND include_dirs ${LOG_COMPRESS_INCLUDE_DIRS}) - endif() -endif() - idf_component_register(SRCS "${srcs}" INCLUDE_DIRS "${include_dirs}" PRIV_INCLUDE_DIRS "${priv_include_dirs}" @@ -1219,162 +94,17 @@ idf_component_register(SRCS "${srcs}" PRIV_REQUIRES "${bt_priv_requires}" LDFRAGMENTS "${ldscripts}") -# UART redir wrap flags — needed whenever BLE Log uses UART DMA on port 0, -# regardless of whether BLE controller is enabled. -if(DEFINED CONFIG_BLE_LOG_PRPH_UART_DMA_PORT) - if(CONFIG_BLE_LOG_PRPH_UART_DMA_PORT EQUAL 0) - target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_tx_chars") - target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_write_bytes") - target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_write_bytes_with_break") - endif() -endif() - -if(CONFIG_BLE_COMPRESSED_LOG_ENABLE) - if(LOG_COMPRESSION_TARGET) - add_dependencies(${COMPONENT_LIB} ${LOG_COMPRESSION_TARGET}) - endif() -endif() if(CONFIG_BT_ENABLED) target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-implicit-fallthrough -Wno-unused-const-variable) - if(CONFIG_IDF_TARGET_ESP32) - add_prebuilt_library(bt_btdm_app "${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32/esp32/libbtdm_app.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) - target_link_options(${COMPONENT_LIB} INTERFACE "SHELL:-u ld_include_hli_vectors_bt") - elseif(CONFIG_IDF_TARGET_ESP32C3) - if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY) - set(lib_name "btdm_app_flash") - else() - set(lib_name "btdm_app") - endif() - add_prebuilt_library(bt_btdm_app - "${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c3_family/esp32c3/lib${lib_name}.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) - elseif(CONFIG_IDF_TARGET_ESP32S3) - if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY) - set(lib_name "btdm_app_flash") - else() - set(lib_name "btdm_app") - endif() - add_prebuilt_library(bt_btdm_app - "${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c3_family/esp32s3/lib${lib_name}.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) - elseif(CONFIG_BT_CONTROLLER_ENABLED) - if(CONFIG_BT_LE_CONTROLLER_LOG_WRAP_PANIC_HANDLER_ENABLE) - target_link_options(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=esp_panic_handler") - endif() - if(CONFIG_BT_DUAL_MODE_ARCH) - if(CONFIG_BT_CTRL_BLE_ENABLE) - add_prebuilt_library(libble_app "controller/lib_${target_name}/${target_name}-bt-lib/libble_app.a" - REQUIRES esp_phy) - target_link_libraries(${COMPONENT_LIB} PRIVATE libble_app) - endif() - if(CONFIG_BT_CTRL_BREDR_ENABLE) - add_prebuilt_library(libbredr_app "controller/lib_${target_name}/${target_name}-bt-lib/libbredr_app.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE libbredr_app) - endif() - add_prebuilt_library(libbtdm_common - "controller/lib_${target_name}/${target_name}-bt-lib/libbtdm_common.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE libbtdm_common) - else() - if(CONFIG_IDF_TARGET_ESP32C6) - add_prebuilt_library(libble_app - "${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c6/esp32c6-bt-lib/esp32c6/libble_app.a" - REQUIRES esp_phy) - elseif(CONFIG_IDF_TARGET_ESP32C61) - add_prebuilt_library(libble_app - "${CMAKE_CURRENT_LIST_DIR}/controller/lib_esp32c6/esp32c6-bt-lib/esp32c61/libble_app.a" - REQUIRES esp_phy) - else() - if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY AND CONFIG_IDF_TARGET_ESP32C2) - add_prebuilt_library(libble_app - "controller/lib_${target_name}/${target_name}-bt-lib/libble_app_flash.a" - REQUIRES esp_phy) - else() - add_prebuilt_library(libble_app - "controller/lib_${target_name}/${target_name}-bt-lib/libble_app.a" - REQUIRES esp_phy) - endif() - endif() - target_link_libraries(${COMPONENT_LIB} PRIVATE libble_app) - endif() - endif() - - set_source_files_properties( - "host/bluedroid/bta/gatt/bta_gattc_act.c" - "host/bluedroid/bta/gatt/bta_gattc_cache.c" - "host/bluedroid/btc/profile/std/gatt/btc_gatt_util.c" - "host/bluedroid/btc/profile/std/gatt/btc_gatts.c" - PROPERTIES COMPILE_FLAGS -Wno-address-of-packed-member) - target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") -endif() - -if(CONFIG_BLE_MESH_V11_SUPPORT) - -set(BLE_MESH_LIB_NAME "libble_mesh.a") - - if(CONFIG_IDF_TARGET_ESP32) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32S3) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32s3/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32C3) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32c3/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32C6) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32c6/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32C61) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32c61/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32H2) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32h2/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - elseif(CONFIG_IDF_TARGET_ESP32C5) - add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/esp32c5/${BLE_MESH_LIB_NAME}") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) - endif() -endif() - -if(CONFIG_BT_NIMBLE_MESH) - set_source_files_properties("host/nimble/nimble/nimble/host/mesh/src/net.c" - PROPERTIES COMPILE_FLAGS -Wno-type-limits) -endif() - -if(CONFIG_BT_AUDIO) - if(CONFIG_IDF_TARGET_ESP32H4) - add_prebuilt_library(ble_audio "esp_ble_audio/lib/lib/esp32h4/libble_audio.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_audio) - elseif(CONFIG_IDF_TARGET_ESP32S31) - add_prebuilt_library(ble_audio "esp_ble_audio/lib/lib/esp32s31/libble_audio.a") - target_link_libraries(${COMPONENT_LIB} PRIVATE ble_audio) - endif() -endif() - -if(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE AND CONFIG_BT_NIMBLE_ENABLED) - # some variables in NimBLE are only used by asserts - target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-unused-but-set-variable -Wno-unused-variable) -endif() - -if(NOT CMAKE_BUILD_EARLY_EXPANSION) - set(jump_table_opts "-fjump-tables") - if(NOT (CMAKE_C_COMPILER_ID MATCHES "Clang") ) - set(jump_table_opts "${jump_table_opts} -ftree-switch-conversion") - endif() - set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/host/bluedroid/bta/hf_ag/bta_ag_cmd.c" - "${CMAKE_CURRENT_LIST_DIR}/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c" - PROPERTIES COMPILE_FLAGS "${jump_table_opts}") -endif() - -if(CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 15.0) - if(CONFIG_BT_BLUEDROID_ENABLED) - set_source_files_properties("host/bluedroid/device/controller.c" - PROPERTIES COMPILE_FLAGS "-Wno-unterminated-string-initialization") - endif() - if(CONFIG_BT_NIMBLE_ENABLED AND CONFIG_BT_NIMBLE_MESH) - set_source_files_properties("host/nimble/nimble/nimble/host/mesh/src/prov.c" - PROPERTIES COMPILE_FLAGS "-Wno-unterminated-string-initialization") - endif() + + 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() diff --git a/components/bt/common/CMakeLists.txt b/components/bt/common/CMakeLists.txt new file mode 100644 index 00000000000..d994bf62413 --- /dev/null +++ b/components/bt/common/CMakeLists.txt @@ -0,0 +1,203 @@ +function(replace_log_compression_srcs) + if(NOT CONFIG_BLE_COMPRESSED_LOG_ENABLE) + return() + endif() + + get_filename_component(CODE_BASE_PATH "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/.." ABSOLUTE) + # 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. + add_subdirectory(${CMAKE_CURRENT_FUNCTION_LIST_DIR}/ble_log/extension/log_compression) + set(LOG_COMPRESSION_TARGET "${LOG_COMPRESSION_TARGET}" PARENT_SCOPE) + + if(LOG_COMPRESSION_TARGET) + # Replace the caller's srcs/include_dirs with the compressed-log ones + set(srcs "${LOG_COMPRESS_SRCS}" PARENT_SCOPE) + set(include_dirs "${LOG_COMPRESS_INCLUDE_DIRS}" PARENT_SCOPE) + # LOG_COMPRESS_FILES_WITH_FLAGS format: "file_path|compile_flags" + if(LOG_COMPRESS_FILES_WITH_FLAGS) + foreach(file_entry ${LOG_COMPRESS_FILES_WITH_FLAGS}) + # Split by '|' to get file path and flags + string(REPLACE "|" ";" file_parts "${file_entry}") + list(GET file_parts 0 file_path) + list(GET file_parts 1 compile_flags) + set_source_files_properties(${file_path} + PROPERTIES COMPILE_FLAGS "${compile_flags}") + endforeach() + endif() + else() + # Only append extra include dirs, keep caller's srcs/include_dirs intact + set(_merged_include_dirs ${include_dirs} ${LOG_COMPRESS_INCLUDE_DIRS}) + set(include_dirs "${_merged_include_dirs}" PARENT_SCOPE) + endif() +endfunction() + +# Make the bt component library depend on the log-compression custom target +# so that the Python-driven code-generation step (log index headers and +# replacement sources referenced by LOG_COMPRESS_SRCS) finishes before the +# component is compiled. Does nothing if compressed log is disabled or no +# module actually participates in log compression. +function(register_log_compression_dependency) + if(NOT CONFIG_BLE_COMPRESSED_LOG_ENABLE) + return() + endif() + if(NOT LOG_COMPRESSION_TARGET) + return() + endif() + + add_dependencies(${COMPONENT_LIB} ${LOG_COMPRESSION_TARGET}) +endfunction() + +function(wrap_uart_log_tx_interface) + if(NOT CONFIG_BT_ENABLED) + return() + endif() + + # UART redir wrap flags — needed whenever BLE Log uses UART DMA on port 0, + # regardless of whether BLE controller is enabled. + if(DEFINED CONFIG_BLE_LOG_PRPH_UART_DMA_PORT) + if(CONFIG_BLE_LOG_PRPH_UART_DMA_PORT EQUAL 0) + target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_tx_chars") + target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_write_bytes") + target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=uart_write_bytes_with_break") + endif() + endif() +endfunction() + +set(bt_common_srcs "" PARENT_SCOPE) +set(bt_common_include_dirs "" PARENT_SCOPE) +set(bt_common_priv_include_dirs "" PARENT_SCOPE) + +# 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) + set(bt_common_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/api/include/api" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/blufi/include" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/include" + "${CMAKE_CURRENT_LIST_DIR}/hci_log/include" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/include" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/deprecated/include" + PARENT_SCOPE + ) + return() +endif() + +if(NOT CONFIG_BT_ENABLED) + return() +endif() + +list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_alarm.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_blufi_api.c" + "${CMAKE_CURRENT_LIST_DIR}/hci_log/bt_hci_log.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_manage.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_task.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/blufi/blufi_prf.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/blufi/blufi_protocol.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/alarm.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/allocator.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/buffer.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/config.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/fixed_queue.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/pkt_queue.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/fixed_pkt_queue.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/future.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/hash_functions.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/hash_map.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/list.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/mutex.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/thread.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/osi.c" + "${CMAKE_CURRENT_LIST_DIR}/osi/semaphore.c" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/deprecated/ble_log_spi_out.c" +) + +list(APPEND bt_common_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/osi/include" + "${CMAKE_CURRENT_LIST_DIR}/api/include/api" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/blufi/include" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/include" + "${CMAKE_CURRENT_LIST_DIR}/hci_log/include" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/include" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/deprecated/include" +) + +list(APPEND bt_common_priv_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/btc/include" + "${CMAKE_CURRENT_LIST_DIR}/include" +) + +if(CONFIG_BLE_LOG_ENABLED) + list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/ble_log.c" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/ble_log_lbm.c" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/ble_log_rt.c" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/ble_log_util.c" + ) + + list(APPEND bt_common_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/include" + ) + + list(APPEND bt_common_priv_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/internal_include" + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/internal_include/prph" + ) + + # Timestamp synchronization extension + if(CONFIG_BLE_LOG_TS_ENABLED) + list(APPEND bt_common_srcs "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/ble_log_ts.c") + endif() + + # Peripheral interface implementation + if(CONFIG_BLE_LOG_PRPH_DUMMY) + list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/prph/ble_log_prph_dummy.c" + ) + elseif(CONFIG_BLE_LOG_PRPH_SPI_MASTER_DMA) + list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/prph/ble_log_prph_spi_master_dma.c" + ) + elseif(CONFIG_BLE_LOG_PRPH_UART_DMA) + list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/ble_log/src/prph/ble_log_prph_uart_dma.c" + ) + endif() +endif() + +# Compile TinyCrypt if: +# 1. Controller uses TinyCrypt (not mbedTLS), OR +# 2. NimBLE uses TinyCrypt (not mbedTLS), OR +# 3. Bluedroid Host SMP uses TinyCrypt +if(CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT OR NOT CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS) + list(APPEND bt_common_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/include" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/port" + ) + list(APPEND bt_common_srcs + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/utils.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/sha256.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ecc.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ctr_prng.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ctr_mode.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/aes_decrypt.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/aes_encrypt.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ccm_mode.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ecc_dsa.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/cmac_mode.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ecc_dh.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/hmac_prng.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/ecc_platform_specific.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/hmac.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/src/cbc_mode.c" + "${CMAKE_CURRENT_LIST_DIR}/tinycrypt/port/esp_tinycrypt_port.c" + ) +endif() + +# Export the variables to the parent scope +set(bt_common_srcs "${bt_common_srcs}" PARENT_SCOPE) +set(bt_common_include_dirs "${bt_common_include_dirs}" PARENT_SCOPE) +set(bt_common_priv_include_dirs "${bt_common_priv_include_dirs}" PARENT_SCOPE) diff --git a/components/bt/common/ble_log/extension/log_compression/CMakeLists.txt b/components/bt/common/ble_log/extension/log_compression/CMakeLists.txt index a0c001998d2..0c757ca5c43 100644 --- a/components/bt/common/ble_log/extension/log_compression/CMakeLists.txt +++ b/components/bt/common/ble_log/extension/log_compression/CMakeLists.txt @@ -132,6 +132,12 @@ if(LOG_COMPRESSED_MODULE) string(REPLACE ";" "|" MODULE_CODE_PATH "${LOG_COMPRESSED_MODULE_CODE_PATH}") set(MATCH_PATTERN "(${MODULE_CODE_PATH}).+\\.c") foreach(src ${srcs}) + # Normalize absolute paths to relative paths (relative to CODE_BASE_PATH) + # so that pattern matching works and .compressed_srcs/ has a clean layout + if(IS_ABSOLUTE "${src}") + get_filename_component(src "${src}" ABSOLUTE) + file(RELATIVE_PATH src "${CODE_BASE_PATH}" "${src}") + endif() if(src MATCHES ${MATCH_PATTERN}) set(dest "${LOG_COMPRESSED_SRCS_DIR}/${src}") file(WRITE "${dest}" "") diff --git a/components/bt/common/ble_log/extension/log_compression/scripts/ble_log_compress.py b/components/bt/common/ble_log/extension/log_compression/scripts/ble_log_compress.py index 7f046e04934..b4378dff57b 100644 --- a/components/bt/common/ble_log/extension/log_compression/scripts/ble_log_compress.py +++ b/components/bt/common/ble_log/extension/log_compression/scripts/ble_log_compress.py @@ -699,9 +699,15 @@ class LogCompressor: compressed_file_cnt = 0 total_cnt = 0 for src in srcs: - if pattern.match(src): - src_path = self.code_base_path / src - dest_path = self.bt_compressed_srcs_path / src + # Convert absolute paths to relative (to code_base_path) for pattern matching + src_for_match = src + try: + src_for_match = str(Path(src).relative_to(self.code_base_path)) + except ValueError: + pass # Not under code_base_path, keep as-is + if pattern.match(src_for_match): + src_path = self.code_base_path / src_for_match + dest_path = self.bt_compressed_srcs_path / src_for_match temp_path = f'{dest_path}.tmp' total_cnt += 1 # Skip if already processed diff --git a/components/bt/controller/CMakeLists.txt b/components/bt/controller/CMakeLists.txt new file mode 100644 index 00000000000..ff0a49276a0 --- /dev/null +++ b/components/bt/controller/CMakeLists.txt @@ -0,0 +1,132 @@ +# Function to register the libraries for the BT controller +function(register_bt_ctrl_libs) + # TODO: The coex will use controller library even if CONFIG_BT_CONTROLLER_ENABLED=n which is not correct. + if(CONFIG_IDF_TARGET_ESP32) + add_prebuilt_library(bt_btdm_app "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/lib_esp32/esp32/libbtdm_app.a") + target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) + target_link_options(${COMPONENT_LIB} INTERFACE "SHELL:-u ld_include_hli_vectors_bt") + endif() + + if(NOT CONFIG_BT_CONTROLLER_ENABLED) + return() + endif() + + if(CONFIG_IDF_TARGET_ESP32C3) + if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY) + set(lib_name "btdm_app_flash") + else() + set(lib_name "btdm_app") + endif() + add_prebuilt_library(bt_btdm_app + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/lib_esp32c3_family/esp32c3/lib${lib_name}.a") + target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) + elseif(CONFIG_IDF_TARGET_ESP32S3) + if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY) + set(lib_name "btdm_app_flash") + else() + set(lib_name "btdm_app") + endif() + add_prebuilt_library(bt_btdm_app + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/lib_esp32c3_family/esp32s3/lib${lib_name}.a") + target_link_libraries(${COMPONENT_LIB} PRIVATE bt_btdm_app) + elseif(NOT CONFIG_IDF_TARGET_ESP32) + set(lib_path "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/lib_${TARGET_SRC_NAME}/${TARGET_SRC_NAME}-bt-lib") + # BLE controller library + if(NOT CONFIG_BT_DUAL_MODE_ARCH OR CONFIG_BT_CTRL_BLE_ENABLE) + if(EXISTS "${lib_path}/libble_app.a") + if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY AND EXISTS "${lib_path}/libble_app_flash.a") + add_prebuilt_library(libble_app "${lib_path}/libble_app_flash.a" REQUIRES esp_phy bt) + else() + add_prebuilt_library(libble_app "${lib_path}/libble_app.a" REQUIRES esp_phy bt) + endif() + else() + if(CONFIG_BT_CTRL_RUN_IN_FLASH_ONLY AND EXISTS "${lib_path}/${idf_target}/libble_app_flash.a") + add_prebuilt_library(libble_app "${lib_path}/${idf_target}/libble_app_flash.a" REQUIRES esp_phy bt) + else() + add_prebuilt_library(libble_app "${lib_path}/${idf_target}/libble_app.a" REQUIRES esp_phy bt) + endif() + endif() + target_link_libraries(${COMPONENT_LIB} PRIVATE libble_app) + endif() + # BREDR controller library + if(CONFIG_BT_CTRL_BREDR_ENABLE) + if(EXISTS "${lib_path}/libbredr_app.a") + add_prebuilt_library(libbredr_app "${lib_path}/libbredr_app.a" REQUIRES esp_phy bt) + else() + add_prebuilt_library(libbredr_app "${lib_path}/${idf_target}/libbredr_app.a" REQUIRES esp_phy bt) + endif() + target_link_libraries(${COMPONENT_LIB} PRIVATE libbredr_app) + endif() + # BTDM common library + if(CONFIG_BT_DUAL_MODE_ARCH) + if(EXISTS "${lib_path}/libbtdm_common.a") + add_prebuilt_library(libbtdm_common "${lib_path}/libbtdm_common.a" esp_phy bt) + else() + add_prebuilt_library(libbtdm_common "${lib_path}/${idf_target}/libbtdm_common.a" esp_phy bt) + endif() + target_link_libraries(${COMPONENT_LIB} PRIVATE libbtdm_common) + endif() + endif() + + # Used to dump logs in the panic handler + if(CONFIG_BT_LE_CONTROLLER_LOG_WRAP_PANIC_HANDLER_ENABLE) + target_link_options(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=esp_panic_handler") + endif() +endfunction() + +set(bt_ctrl_srcs "" PARENT_SCOPE) +set(bt_ctrl_include_dirs "" PARENT_SCOPE) +set(bt_ctrl_ldscripts "${ldscripts}") +set(bt_ctrl_ldscripts "${bt_ctrl_ldscripts}" PARENT_SCOPE) + +# 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 AND CONFIG_SOC_BT_SUPPORTED) + get_filename_component( + _bt_ctrl_absolute_include_dir + "${CMAKE_CURRENT_LIST_DIR}/../include/${TARGET_SRC_NAME}/include" + ABSOLUTE + ) + set(bt_ctrl_include_dirs "${_bt_ctrl_absolute_include_dir}" PARENT_SCOPE) + return() +endif() + +if(NOT CONFIG_BT_CONTROLLER_ENABLED) + return() +endif() + +# Get all the .c files in the TARGET_SRC_NAME directory +file(GLOB_RECURSE _CTRL_SRCS "${TARGET_SRC_NAME}/*.c") +list(APPEND bt_ctrl_srcs ${_CTRL_SRCS}) +list(APPEND bt_ctrl_include_dirs "${CMAKE_CURRENT_LIST_DIR}/../include/${TARGET_SRC_NAME}/include") + +# TODO: Move this to a separate file for the controller and the host +if(CONFIG_SOC_ESP_NIMBLE_CONTROLLER AND NOT CONFIG_BT_NIMBLE_ENABLED) + list(APPEND bt_ctrl_srcs + "${CMAKE_CURRENT_LIST_DIR}/../host/nimble/port/src/esp_nimble_mem.c" + ) + list(APPEND bt_ctrl_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/../host/nimble/port/include" + ) +endif() + +# Add the linker scripts +if(CONFIG_IDF_TARGET_ESP32) + list(APPEND bt_ctrl_srcs "${CMAKE_CURRENT_LIST_DIR}/esp32/hli_vectors.S") + list(APPEND bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_rw_bt_controller.lf") +elseif(CONFIG_IDF_TARGET_ESP32C3) + list(APPEND bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_rw_bt_controller.lf") +elseif(CONFIG_IDF_TARGET_ESP32S3) + list(APPEND bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_rw_bt_controller.lf") +elseif(CONFIG_IDF_TARGET_ESP32C2) + set(bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_esp32c2.lf") +elseif(CONFIG_BT_DUAL_MODE_ARCH) + list(APPEND bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_esp_btdm_controller.lf") +else() + list(APPEND bt_ctrl_ldscripts "${CMAKE_CURRENT_LIST_DIR}/linker_esp_ble_controller.lf") +endif() + +# Export the variables to the parent scope +set(bt_ctrl_srcs "${bt_ctrl_srcs}" PARENT_SCOPE) +set(bt_ctrl_include_dirs "${bt_ctrl_include_dirs}" PARENT_SCOPE) +set(bt_ctrl_ldscripts "${bt_ctrl_ldscripts}" PARENT_SCOPE) diff --git a/components/bt/linker_esp32c2.lf b/components/bt/controller/linker_esp32c2.lf similarity index 100% rename from components/bt/linker_esp32c2.lf rename to components/bt/controller/linker_esp32c2.lf diff --git a/components/bt/linker_esp_ble_controller.lf b/components/bt/controller/linker_esp_ble_controller.lf similarity index 100% rename from components/bt/linker_esp_ble_controller.lf rename to components/bt/controller/linker_esp_ble_controller.lf diff --git a/components/bt/linker_esp_btdm_controller.lf b/components/bt/controller/linker_esp_btdm_controller.lf similarity index 100% rename from components/bt/linker_esp_btdm_controller.lf rename to components/bt/controller/linker_esp_btdm_controller.lf diff --git a/components/bt/linker_rw_bt_controller.lf b/components/bt/controller/linker_rw_bt_controller.lf similarity index 100% rename from components/bt/linker_rw_bt_controller.lf rename to components/bt/controller/linker_rw_bt_controller.lf diff --git a/components/bt/esp_ble_audio/CMakeLists.txt b/components/bt/esp_ble_audio/CMakeLists.txt new file mode 100644 index 00000000000..55487047587 --- /dev/null +++ b/components/bt/esp_ble_audio/CMakeLists.txt @@ -0,0 +1,209 @@ +function(register_ble_audio_libs) + if(NOT CONFIG_BT_AUDIO) + return() + endif() + + if(CONFIG_SOC_BLE_AUDIO_SUPPORTED) + add_prebuilt_library(ble_audio "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/lib/lib/${idf_target}/libble_audio.a") + target_link_libraries(${COMPONENT_LIB} PRIVATE ble_audio) + endif() +endfunction() + +set(ble_audio_srcs "" PARENT_SCOPE) +set(ble_audio_include_dirs "" PARENT_SCOPE) +set(ble_audio_priv_include_dirs "" PARENT_SCOPE) + +# 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) + set(ble_audio_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/api/iso/include" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/include" + PARENT_SCOPE + ) + return() +endif() + +if(CONFIG_BT_CONTROLLER_ONLY OR (NOT CONFIG_BT_ISO AND NOT CONFIG_BT_AUDIO)) + return() +endif() + +if(CONFIG_BT_ISO) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/gatt/gatt.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/gatt/gatt.db.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/gatt/gatt.nrp.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/gap.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/iso.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/adv.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/conn.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/gatt.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/hci.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/host.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/iso.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/scan.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/task.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/app/gap.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/app/gatt.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/crc/crc32_sw.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/addr.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/bt_str.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/buf.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/crypto.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/timer.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/utf8.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/utils.c" + "${CMAKE_CURRENT_LIST_DIR}/host/utils/uuid.c" + "${CMAKE_CURRENT_LIST_DIR}/host/iso/iso.c" + "${CMAKE_CURRENT_LIST_DIR}/api/iso/esp_ble_iso_common_api.c" + ) + + if(CONFIG_BT_OTS OR CONFIG_BT_OTS_CLIENT) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/common/l2cap.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/l2cap.c" + ) + endif() + + list(APPEND ble_audio_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/api/iso/include" + "${CMAKE_CURRENT_LIST_DIR}/host" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter" + "${CMAKE_CURRENT_LIST_DIR}/include/subsys/bluetooth" + "${CMAKE_CURRENT_LIST_DIR}/include/subsys/bluetooth/host" + "${CMAKE_CURRENT_LIST_DIR}/include" + ) +endif() + +if(CONFIG_BT_AUDIO) + list(APPEND ble_audio_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/api/audio/include" + "${CMAKE_CURRENT_LIST_DIR}/include/subsys/bluetooth/host" + ) + + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/server.c" + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/init.c" + "${CMAKE_CURRENT_LIST_DIR}/host/common/init.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_aics_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_bap_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_cap_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_ccp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_codec_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_common_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_csip_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_gmap_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_has_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_mcc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_media_proxy_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_micp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_pacs_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_pbp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_tbs_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_tmap_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_vcp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/audio/esp_ble_audio_vocs_api.c" + ) + + if(CONFIG_BT_ASCS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/ascs.c" + ) + endif() + + if(CONFIG_BT_PACS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/pacs.c" + ) + endif() + + if(CONFIG_BT_BAP_SCAN_DELEGATOR) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/bass.c" + ) + endif() + + if(CONFIG_BT_CAP_ACCEPTOR) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/cas.c" + ) + endif() + + if(CONFIG_BT_CSIP_SET_MEMBER) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/csis.c" + ) + endif() + + if(CONFIG_BT_TBS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/tbs.c" + ) + endif() + + if(CONFIG_BT_TMAP) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/tmas.c" + ) + endif() + + if(CONFIG_BT_VCP_VOL_REND) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/vcs.c" + ) + endif() + + if(CONFIG_BT_MICP_MIC_DEV) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/mics.c" + ) + endif() + + if(CONFIG_BT_MCS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/mcs.c" + ) + endif() + + if(CONFIG_BT_HAS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/adapter/nimble/profiles/has.c" + ) + endif() + + if(CONFIG_BT_OTS OR CONFIG_BT_OTS_CLIENT) + list(APPEND ble_audio_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots" + ) + + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_l2cap.c" + ) + + if(CONFIG_BT_OTS) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_oacp.c" + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_obj_manager.c" + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_olcp.c" + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots.c" + ) + + if(CONFIG_BT_OTS_DIR_LIST_OBJ) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_dir_list.c" + ) + endif() + endif() + + if(CONFIG_BT_OTS_CLIENT) + list(APPEND ble_audio_srcs + "${CMAKE_CURRENT_LIST_DIR}/host/services/ots/ots_client.c" + ) + endif() + endif() +endif() + +# Export the variables to the parent scope +set(ble_audio_srcs "${ble_audio_srcs}" PARENT_SCOPE) +set(ble_audio_include_dirs "${ble_audio_include_dirs}" PARENT_SCOPE) +set(ble_audio_priv_include_dirs "${ble_audio_priv_include_dirs}" PARENT_SCOPE) diff --git a/components/bt/esp_ble_mesh/CMakeLists.txt b/components/bt/esp_ble_mesh/CMakeLists.txt new file mode 100644 index 00000000000..648bd8e3451 --- /dev/null +++ b/components/bt/esp_ble_mesh/CMakeLists.txt @@ -0,0 +1,221 @@ +function(register_ble_mesh_libs) + if(NOT CONFIG_BLE_MESH) + return() + endif() + + if(CONFIG_BLE_MESH_V11_SUPPORT) + add_prebuilt_library(ble_mesh "esp_ble_mesh/lib/lib/${idf_target}/libble_mesh.a") + target_link_libraries(${COMPONENT_LIB} PRIVATE ble_mesh) + endif() +endfunction() + +set(ble_mesh_srcs "" PARENT_SCOPE) +set(ble_mesh_include_dirs "" PARENT_SCOPE) + +# 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) + set(ble_mesh_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/common/include" + "${CMAKE_CURRENT_LIST_DIR}/core" + "${CMAKE_CURRENT_LIST_DIR}/core/include" + "${CMAKE_CURRENT_LIST_DIR}/core/storage" + "${CMAKE_CURRENT_LIST_DIR}/btc/include" + "${CMAKE_CURRENT_LIST_DIR}/models/common/include" + "${CMAKE_CURRENT_LIST_DIR}/models/client/include" + "${CMAKE_CURRENT_LIST_DIR}/models/server/include" + "${CMAKE_CURRENT_LIST_DIR}/api/core/include" + "${CMAKE_CURRENT_LIST_DIR}/api/models/include" + "${CMAKE_CURRENT_LIST_DIR}/api" + # BLE Mesh v1.1 headers + "${CMAKE_CURRENT_LIST_DIR}/lib/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/models/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/mbt" + PARENT_SCOPE + ) + return() +endif() + +if(NOT CONFIG_BLE_MESH) + return() +endif() + +if(CONFIG_BLE_MESH_USE_UNIFIED_CRYPTO) + message(WARNING "This configuration path is deprecated and will be removed" + "in a future version. Please use the corresponding Kconfig" + "options under $IDF_PATH/components/bt/common/Kconfig.") +endif() + +list(APPEND ble_mesh_srcs + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_ble_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_common_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_local_data_operation_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_low_power_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_networking_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_provisioning_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/core/esp_ble_mesh_proxy_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_config_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_generic_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_health_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_lighting_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_sensor_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/models/esp_ble_mesh_time_scene_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_config_model.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_generic_model.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_health_model.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_lighting_model.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_prov.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_sensor_model.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/btc_ble_mesh_time_scene_model.c" + "${CMAKE_CURRENT_LIST_DIR}/common/atomic.c" + "${CMAKE_CURRENT_LIST_DIR}/common/buf.c" + "${CMAKE_CURRENT_LIST_DIR}/common/common.c" + "${CMAKE_CURRENT_LIST_DIR}/common/kernel.c" + "${CMAKE_CURRENT_LIST_DIR}/common/mutex.c" + "${CMAKE_CURRENT_LIST_DIR}/common/queue.c" + "${CMAKE_CURRENT_LIST_DIR}/common/timer.c" + "${CMAKE_CURRENT_LIST_DIR}/common/utils.c" + + "${CMAKE_CURRENT_LIST_DIR}/core/storage/settings_nvs.c" + "${CMAKE_CURRENT_LIST_DIR}/core/storage/settings_uid.c" + "${CMAKE_CURRENT_LIST_DIR}/core/storage/settings.c" + "${CMAKE_CURRENT_LIST_DIR}/core/access.c" + "${CMAKE_CURRENT_LIST_DIR}/core/adv_common.c" + "${CMAKE_CURRENT_LIST_DIR}/core/beacon.c" + "${CMAKE_CURRENT_LIST_DIR}/core/cfg_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/core/cfg_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/core/crypto.c" + "${CMAKE_CURRENT_LIST_DIR}/core/fast_prov.c" + "${CMAKE_CURRENT_LIST_DIR}/core/friend.c" + "${CMAKE_CURRENT_LIST_DIR}/core/health_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/core/health_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/core/heartbeat.c" + "${CMAKE_CURRENT_LIST_DIR}/core/local.c" + "${CMAKE_CURRENT_LIST_DIR}/core/lpn.c" + "${CMAKE_CURRENT_LIST_DIR}/core/main.c" + "${CMAKE_CURRENT_LIST_DIR}/core/net.c" + "${CMAKE_CURRENT_LIST_DIR}/core/prov_common.c" + "${CMAKE_CURRENT_LIST_DIR}/core/prov_node.c" + "${CMAKE_CURRENT_LIST_DIR}/core/prov_pvnr.c" + "${CMAKE_CURRENT_LIST_DIR}/core/proxy_client.c" + "${CMAKE_CURRENT_LIST_DIR}/core/proxy_server.c" + "${CMAKE_CURRENT_LIST_DIR}/core/pvnr_mgmt.c" + "${CMAKE_CURRENT_LIST_DIR}/core/rpl.c" + "${CMAKE_CURRENT_LIST_DIR}/core/scan.c" + "${CMAKE_CURRENT_LIST_DIR}/core/test.c" + "${CMAKE_CURRENT_LIST_DIR}/models/common/device_property.c" + "${CMAKE_CURRENT_LIST_DIR}/models/common/model_common.c" + "${CMAKE_CURRENT_LIST_DIR}/models/client/client_common.c" + "${CMAKE_CURRENT_LIST_DIR}/models/client/generic_client.c" + "${CMAKE_CURRENT_LIST_DIR}/models/client/lighting_client.c" + "${CMAKE_CURRENT_LIST_DIR}/models/client/sensor_client.c" + "${CMAKE_CURRENT_LIST_DIR}/models/client/time_scene_client.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/generic_server.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/lighting_server.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/sensor_server.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/server_common.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/state_binding.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/state_transition.c" + "${CMAKE_CURRENT_LIST_DIR}/models/server/time_scene_server.c" +) + +if(CONFIG_BLE_MESH_SUPPORT_MULTI_ADV) + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/ext_adv.c") +else() + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/adv.c") +endif() + +if(CONFIG_BLE_MESH_SUPPORT_BLE_ADV) + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/ble_adv.c") +endif() + +# Select crypto implementation based on config +if(CONFIG_BT_SMP_CRYPTO_STACK_TINYCRYPT) + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/common/crypto_tc.c") +elseif(CONFIG_BT_SMP_CRYPTO_STACK_MBEDTLS) + if(CONFIG_MBEDTLS_VER_4_X_SUPPORT) + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/common/crypto_psa.c") + else() + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/common/crypto_mbedtls.c") + endif() +endif() + +list(APPEND ble_mesh_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/common/include" + "${CMAKE_CURRENT_LIST_DIR}/core" + "${CMAKE_CURRENT_LIST_DIR}/core/include" + "${CMAKE_CURRENT_LIST_DIR}/core/storage" + "${CMAKE_CURRENT_LIST_DIR}/btc/include" + "${CMAKE_CURRENT_LIST_DIR}/models/common/include" + "${CMAKE_CURRENT_LIST_DIR}/models/client/include" + "${CMAKE_CURRENT_LIST_DIR}/models/server/include" + "${CMAKE_CURRENT_LIST_DIR}/api/core/include" + "${CMAKE_CURRENT_LIST_DIR}/api/models/include" + "${CMAKE_CURRENT_LIST_DIR}/api" +) + +if(CONFIG_BLE_MESH_V11_SUPPORT) + list(APPEND ble_mesh_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/lib/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/models/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/include" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/mbt" + ) + + list(APPEND ble_mesh_srcs + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_agg_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_brc_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_cm_data_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_df_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_lcd_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_odp_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_prb_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_rpr_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_sar_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/core/esp_ble_mesh_srpl_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/models/esp_ble_mesh_mbt_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/models/esp_ble_mesh_dfu_model_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/api/models/esp_ble_mesh_dfu_slot_api.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_agg_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_brc_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_df_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_dfu_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_dfu_slot.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_lcd_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_mbt_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_odp_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_prb_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_rpr_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_sar_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/btc/btc_ble_mesh_srpl_model.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/mbt/blob_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/mbt/blob_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfu_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfu_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfu_slot.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfu_metadata.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfd_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/v1.1/dfu/dfd_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/lib/ext.c" + ) + + if(CONFIG_BLE_MESH_SAR_ENHANCEMENT) + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/transport.enh.c") + else() + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/transport.c") + endif() +else() + list(APPEND ble_mesh_srcs "${CMAKE_CURRENT_LIST_DIR}/core/transport.c") +endif() + +# Export the variables to the parent scope +set(ble_mesh_srcs "${ble_mesh_srcs}" PARENT_SCOPE) +set(ble_mesh_include_dirs "${ble_mesh_include_dirs}" PARENT_SCOPE) diff --git a/components/bt/host/bluedroid/CMakeLists.txt b/components/bt/host/bluedroid/CMakeLists.txt new file mode 100644 index 00000000000..6d353315eca --- /dev/null +++ b/components/bt/host/bluedroid/CMakeLists.txt @@ -0,0 +1,406 @@ +# TODO: These warnings should be resolved in the Bluedroid code +function(set_bluedroid_host_compile_flags) + if(NOT CONFIG_BT_BLUEDROID_ENABLED) + return() + endif() + + set_source_files_properties( + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/bta/gatt/bta_gattc_act.c" + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/bta/gatt/bta_gattc_cache.c" + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/btc/profile/std/gatt/btc_gatt_util.c" + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/btc/profile/std/gatt/btc_gatts.c" + PROPERTIES COMPILE_FLAGS -Wno-address-of-packed-member + ) + + if(NOT CMAKE_BUILD_EARLY_EXPANSION) + set(jump_table_opts "-fjump-tables") + if(NOT (CMAKE_C_COMPILER_ID MATCHES "Clang") ) + set(jump_table_opts "${jump_table_opts} -ftree-switch-conversion") + endif() + set_source_files_properties("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/bta/hf_ag/bta_ag_cmd.c" + "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/btc/profile/std/gap/btc_gap_ble.c" + PROPERTIES COMPILE_FLAGS "${jump_table_opts}") + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 15.0) + set_source_files_properties("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/device/controller.c" + PROPERTIES COMPILE_FLAGS "-Wno-unterminated-string-initialization") + endif() +endfunction() + +set(bluedroid_host_srcs "" PARENT_SCOPE) +set(bluedroid_host_include_dirs "" PARENT_SCOPE) +set(bluedroid_host_priv_include_dirs "" PARENT_SCOPE) + +# 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) + set(bluedroid_host_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/api/include/api" + PARENT_SCOPE + ) + return() +endif() + +if(NOT CONFIG_BT_BLUEDROID_ENABLED) + return() +endif() + +list(APPEND bluedroid_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/api/esp_a2dp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_avrc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_bluedroid_hci.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_bt_device.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_bt_main.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_gap_ble_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_gap_bt_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_gatt_common_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_gattc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_gatts_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_hidd_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_hidh_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_hf_ag_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_hf_client_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_spp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_sdp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_l2cap_bt_api.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_pbac_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/ar/bta_ar.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_aact.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_ca_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_ca_sm.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_ci.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/av/bta_av_ssm.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_ci.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_co.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_pm.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_sco.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/dm/bta_dm_qos.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatt_common.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_cache.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_ci.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_co.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gattc_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatts_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatts_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatts_co.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatts_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/gatt/bta_gatts_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hd/bta_hd_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hd/bta_hd_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hd/bta_hd_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_le.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hh/bta_hh_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/jv/bta_jv_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/jv/bta_jv_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/jv/bta_jv_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/jv/bta_jv_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_at.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_rfc.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_sco.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/bta_ag_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_at.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_rfc.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_sco.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/bta_hf_client_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/pba/bta_pba_client_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/pba/bta_pba_client_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/pba/bta_pba_client_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/pba/bta_pba_client_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sdp/bta_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sdp/bta_sdp_act.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sdp/bta_sdp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sdp/bta_sdp_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sys/bta_sys_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sys/bta_sys_main.c" + "${CMAKE_CURRENT_LIST_DIR}/bta/sys/utl.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_ble_storage.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_config.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_dev.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_dm.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_main.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_profile_queue.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_sec.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_sm.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_storage.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/core/btc_util.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/bta_av_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp_control.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp_sink.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp_sink_ext_coedc.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp_source.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_a2dp_source_ext_codec.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/btc_av.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/avrc/btc_avrc.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/avrc/bta_avrc_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hf_ag/bta_ag_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hf_ag/btc_hf_ag.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hf_client/btc_hf_client.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hf_client/bta_hf_client_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hid/btc_hd.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hid/btc_hh.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/hid/bta_hh_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gap/btc_gap_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gap/btc_gap_bt.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gap/bta_gap_bt_co.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gatt/btc_gatt_common.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gatt/btc_gatt_util.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gatt/btc_gattc.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/gatt/btc_gatts.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/spp/btc_spp.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/sdp/btc_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/l2cap/btc_l2cap.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/pba/btc_pba_client.c" + "${CMAKE_CURRENT_LIST_DIR}/device/bdaddr.c" + "${CMAKE_CURRENT_LIST_DIR}/device/controller.c" + "${CMAKE_CURRENT_LIST_DIR}/device/interop.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/hci_audio.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/hci_hal_h4.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/hci_layer.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/hci_packet_factory.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/hci_packet_parser.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/packet_fragmenter.c" + "${CMAKE_CURRENT_LIST_DIR}/main/bte_init.c" + "${CMAKE_CURRENT_LIST_DIR}/main/bte_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/a2dp/a2d_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/a2dp/a2d_sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avct/avct_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avct/avct_ccb.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avct/avct_l2c.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avct/avct_lcb.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avct/avct_lcb_act.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_ad.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_ccb.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_ccb_act.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_l2c.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_msg.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_scb.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avdt/avdt_scb_act.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_bld_ct.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_bld_tg.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_opt.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_pars_ct.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_pars_tg.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_sdp.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/avrc/avrc_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hid/hidd_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hid/hidd_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hid/hidh_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hid/hidh_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_acl.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_addr.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_adv_filter.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_batchscan.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_bgconn.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_cont_energy.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_gap.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_5_gap.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_multi_adv.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_privacy.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_dev.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_devctl.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_inq.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_bredr_pwr_ctrl.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_pm.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_sco.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_sec.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btu/btu_hcif.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btu/btu_init.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/btu/btu_task.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gap/gap_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gap/gap_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gap/gap_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gap/gap_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/att_protocol.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_attr.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_auth.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_cl.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_db.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_sr.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_sr_hash.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/gatt/gatt_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/goep/goepc_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/goep/goepc_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hcic/hciblecmds.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/hcic/hcicmds.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_csm.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_fcr.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_link.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_ucd.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2c_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/l2cap_client.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/obex/obex_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/obex/obex_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/obex/obex_tl_l2cap.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/obex/obex_tl_rfcomm.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/port_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/port_rfc.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/port_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_l2cap_if.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_mx_fsm.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_port_fsm.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_port_if.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_ts_frames.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/rfc_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_db.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_discovery.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_server.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/sdp/sdp_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/aes.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/p_256_curvepara.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/p_256_ecc_pp.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/p_256_multprecision.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_act.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_api.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_br_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_cmac.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_keys.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_l2c.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_main.c" + "${CMAKE_CURRENT_LIST_DIR}/stack/smp/smp_utils.c" + "${CMAKE_CURRENT_LIST_DIR}/config/stack_config.c" + + # TODO: Add this file in the blufi cmake file + "${CMAKE_CURRENT_LIST_DIR}/../../common/btc/profile/esp/blufi/bluedroid_host/esp_blufi.c" +) + +if(CONFIG_BT_BLE_FEAT_ISO_EN) + list(APPEND bluedroid_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_iso.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/iso/btc_iso_ble.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_ble_iso_api.c" + "${CMAKE_CURRENT_LIST_DIR}/hci/ble_hci_iso.c" + ) +endif() + +if(CONFIG_BT_BLE_FEAT_CTE_EN) + list(APPEND bluedroid_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/stack/btm/btm_ble_cte.c" + "${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/cte/btc_ble_cte.c" + "${CMAKE_CURRENT_LIST_DIR}/api/esp_ble_cte_api.c" + ) +endif() + +# TODO: Added this file in the ble mesh cmake file +if(CONFIG_BLE_MESH) + list(APPEND bluedroid_host_srcs "${CMAKE_CURRENT_LIST_DIR}/../../esp_ble_mesh/core/bluedroid_host/adapter.c") +endif() + +list(APPEND bluedroid_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/api/include/api +) + +list(APPEND bluedroid_host_priv_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/bta/include + ${CMAKE_CURRENT_LIST_DIR}/bta/ar/include + ${CMAKE_CURRENT_LIST_DIR}/bta/av/include + ${CMAKE_CURRENT_LIST_DIR}/bta/dm/include + ${CMAKE_CURRENT_LIST_DIR}/bta/gatt/include + ${CMAKE_CURRENT_LIST_DIR}/bta/hf_ag/include + ${CMAKE_CURRENT_LIST_DIR}/bta/hf_client/include + ${CMAKE_CURRENT_LIST_DIR}/bta/hd/include + ${CMAKE_CURRENT_LIST_DIR}/bta/hh/include + ${CMAKE_CURRENT_LIST_DIR}/bta/jv/include + ${CMAKE_CURRENT_LIST_DIR}/bta/pba/include + ${CMAKE_CURRENT_LIST_DIR}/bta/sdp/include + ${CMAKE_CURRENT_LIST_DIR}/bta/sys/include + ${CMAKE_CURRENT_LIST_DIR}/device/include + ${CMAKE_CURRENT_LIST_DIR}/hci/include + ${CMAKE_CURRENT_LIST_DIR}/btc/profile/esp/include + ${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/a2dp/include + ${CMAKE_CURRENT_LIST_DIR}/btc/profile/std/include + ${CMAKE_CURRENT_LIST_DIR}/btc/include + ${CMAKE_CURRENT_LIST_DIR}/stack/btm/include + ${CMAKE_CURRENT_LIST_DIR}/stack/gap/include + ${CMAKE_CURRENT_LIST_DIR}/stack/gatt/include + ${CMAKE_CURRENT_LIST_DIR}/stack/hid/include + ${CMAKE_CURRENT_LIST_DIR}/stack/l2cap/include + ${CMAKE_CURRENT_LIST_DIR}/stack/sdp/include + ${CMAKE_CURRENT_LIST_DIR}/stack/smp/include + ${CMAKE_CURRENT_LIST_DIR}/stack/avct/include + ${CMAKE_CURRENT_LIST_DIR}/stack/avrc/include + ${CMAKE_CURRENT_LIST_DIR}/stack/avdt/include + ${CMAKE_CURRENT_LIST_DIR}/stack/a2dp/include + ${CMAKE_CURRENT_LIST_DIR}/stack/rfcomm/include + ${CMAKE_CURRENT_LIST_DIR}/stack/obex/include + ${CMAKE_CURRENT_LIST_DIR}/stack/goep/include + ${CMAKE_CURRENT_LIST_DIR}/stack/include + ${CMAKE_CURRENT_LIST_DIR}/common/include + ${CMAKE_CURRENT_LIST_DIR}/config/include +) + +if((CONFIG_BT_A2DP_ENABLE AND NOT CONFIG_BT_A2DP_USE_EXTERNAL_CODEC) OR + (CONFIG_BT_HFP_ENABLE AND CONFIG_BT_HFP_AUDIO_DATA_PATH_HCI AND NOT CONFIG_BT_HFP_USE_EXTERNAL_CODEC)) + list(APPEND bluedroid_host_priv_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/include + ${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/include + ${CMAKE_CURRENT_LIST_DIR}/external/sbc/plc/include + ) + + list(APPEND bluedroid_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/alloc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/bitalloc-sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/bitalloc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/bitstream-decode.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/decoder-oina.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/decoder-private.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/decoder-sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/dequant.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/framing-sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/framing.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/oi_codec_version.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/synthesis-8-generated.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/synthesis-dct8.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/decoder/srce/synthesis-sbc.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_analysis.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_dct.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_dct_coeffs.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_enc_bit_alloc_mono.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_enc_bit_alloc_ste.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_enc_coeffs.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_encoder.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/encoder/srce/sbc_packing.c" + "${CMAKE_CURRENT_LIST_DIR}/external/sbc/plc/sbc_plc.c") +endif() + +# Export the variables to the parent scope +set(bluedroid_host_srcs "${bluedroid_host_srcs}" PARENT_SCOPE) +set(bluedroid_host_include_dirs "${bluedroid_host_include_dirs}" PARENT_SCOPE) +set(bluedroid_host_priv_include_dirs "${bluedroid_host_priv_include_dirs}" PARENT_SCOPE) diff --git a/components/bt/host/nimble/CMakeLists.txt b/components/bt/host/nimble/CMakeLists.txt new file mode 100644 index 00000000000..74c10a6e816 --- /dev/null +++ b/components/bt/host/nimble/CMakeLists.txt @@ -0,0 +1,282 @@ +function(set_nimble_host_compile_flags) + if(NOT CONFIG_BT_NIMBLE_ENABLED) + return() + endif() + + # TODO: These warnings should be resolved in the NimBLE code + if(CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE) + # some variables in NimBLE are only used by asserts + target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-unused-but-set-variable -Wno-unused-variable) + endif() + + if(CMAKE_C_COMPILER_ID MATCHES "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER 15.0) + if(CONFIG_BT_NIMBLE_MESH) + set_source_files_properties("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/nimble/nimble/host/mesh/src/prov.c" + PROPERTIES COMPILE_FLAGS "-Wno-unterminated-string-initialization") + endif() + endif() +endfunction() + +set(nimble_host_srcs "" PARENT_SCOPE) +set(nimble_host_include_dirs "" PARENT_SCOPE) + +# 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) + set(nimble_host_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/esp-hci/include" + PARENT_SCOPE + ) + return() +endif() + +if(NOT CONFIG_BT_NIMBLE_ENABLED) + return() +endif() + +list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/src/transport.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/util/src/addr.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/tps/src/ble_svc_tps.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ias/src/ble_svc_ias.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ipss/src/ble_svc_ipss.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ans/src/ble_svc_ans.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/hr/src/ble_svc_hr.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/htp/src/ble_svc_htp.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/gap/src/ble_svc_gap.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/bas/src/ble_svc_bas.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/dis/src/ble_svc_dis.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/lls/src/ble_svc_lls.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/prox/src/ble_svc_prox.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/cts/src/ble_svc_cts.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/hid/src/ble_svc_hid.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/sps/src/ble_svc_sps.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/cte/src/ble_svc_cte.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ras/src/ble_svc_ras.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_cs.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_store_util.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_sm.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_shutdown.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_l2cap_sig_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_hci_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_id.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_att_svr.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gatts_lcl.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_ibeacon.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_atomic.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_sm_alg.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_stop.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_hci_evt.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_mqueue.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_periodic_sync.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_att.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_ead.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_aes_ccm.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gattc.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_store.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_sm_lgcy.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_att_clt.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_l2cap_coc.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_mbuf.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_att_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_log.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_eddystone.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_startup.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_l2cap_sig.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gap.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_sm_cmd.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_uuid.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_pvcy.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_flow.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_l2cap.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_sm_sc.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_misc.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gatts.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_adv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_hci.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_hci_util.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_resolv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/store/ram/src/ble_store_ram.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/store/config/src/ble_store_config.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/store/config/src/ble_store_nvs.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gattc_cache.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_gattc_cache_conn.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_eatt.c" + # NimBLE Porting + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/nimble_port.c" + "${CMAKE_CURRENT_LIST_DIR}/port/src/nvs_port.c" + "${CMAKE_CURRENT_LIST_DIR}/port/src/esp_nimble_mem.c" + # TODO: Add this file in the blufi cmake file + "${CMAKE_CURRENT_LIST_DIR}/../../common/btc/profile/esp/blufi/nimble_host/esp_blufi.c" +) + +# TODO: Added this file in the ble mesh cmake file +if(CONFIG_BLE_MESH) + list(APPEND nimble_host_srcs "${CMAKE_CURRENT_LIST_DIR}/../../esp_ble_mesh/core/nimble_host/adapter.c") +endif() + +if(CONFIG_BT_NIMBLE_ISO) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_iso_hci.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/src/ble_hs_iso.c" + ) +endif() + +# Nimble porting layer for FreeRTOS +if(CONFIG_BT_DUAL_MODE_ARCH) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/npl/esp-idf/src/nimble_port_freertos.c" + ) + list(APPEND nimble_host_include_dirs + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/npl/esp-idf/include" + ) +else() + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/npl/freertos/src/nimble_port_freertos.c" + ) +endif() + +if(CONFIG_BT_CONTROLLER_DISABLED) + # UART HCI driver for host only mode + if(CONFIG_BT_NIMBLE_TRANSPORT_UART) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/uart_ll/src/hci_uart.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/common/hci_h4/src/hci_h4.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/hal_uart.c" + ) + endif() +else() + # Inter-Process Communication (VHCI) + if(CONFIG_BT_NIMBLE_LEGACY_VHCI_ENABLE) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/esp-hci/src/esp_nimble_hci.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/esp_ipc_legacy/src/hci_esp_ipc_legacy.c" + ) + list(APPEND nimble_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/esp-hci/include + ) + elseif(CONFIG_BT_DUAL_MODE_ARCH) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/esp_ipc_btdm/src/hci_esp_ipc.c" + ) + else() + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/esp_ipc/src/hci_esp_ipc.c" + ) + endif() +endif() + +# Reuse the code from the controller to reduce flash usage +if(CONFIG_BT_CONTROLLER_DISABLED OR NOT CONFIG_SOC_ESP_NIMBLE_CONTROLLER) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/endian.c" + #TODO: Split this into a separate file for the controller and the host + "${CMAKE_CURRENT_LIST_DIR}/../../porting/mem/os_mempool.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/mem.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/os_mbuf.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/src/os_msys_init.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/porting/npl/freertos/src/npl_os_freertos.c" + ) +endif() + +list(APPEND nimble_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ans/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/bas/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/dis/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/gap/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/gatt/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/hr/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/htp/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ias/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ipss/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/lls/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/prox/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/cts/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/tps/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/hid/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/sps/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/cte/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/util/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/store/ram/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/store/config/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/services/ras/include + + ${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/include + ${CMAKE_CURRENT_LIST_DIR}/port/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/include +) + +if(CONFIG_BT_CONTROLLER_DISABLED) + list(APPEND nimble_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/common/hci_h4/include + ) +endif() + +if(CONFIG_BT_CONTROLLER_DISABLED OR NOT CONFIG_SOC_ESP_NIMBLE_CONTROLLER) + list(APPEND nimble_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/../../porting/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/porting/npl/freertos/include + ) +endif() + +# BLE NIMBLE MESH (Deprecated) +if(CONFIG_BT_NIMBLE_MESH) + list(APPEND nimble_host_srcs + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/shell.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/friend.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/crypto.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/settings.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/adv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/adv_ext.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/adv_legacy.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/model_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/msg.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/beacon.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/glue.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/model_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/transport.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/prov.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/mesh.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/access.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/cfg_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/cfg_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/light_model.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/health_cli.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/lpn.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/health_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/testing.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/aes-ccm.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/app_keys.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/cdb.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/cfg.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/pb_adv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/pb_gatt.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/pb_gatt_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/prov_device.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/provisioner.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/heartbeat.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/rpl.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/subnet.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/proxy_msg.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/proxy_srv.c" + "${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/net.c" + ) + + list(APPEND nimble_host_include_dirs + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/include + ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/include/host + ) + + set_source_files_properties("${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/host/mesh/src/net.c" + PROPERTIES COMPILE_FLAGS -Wno-type-limits) +endif() + +# Export the variables to the parent scope +set(nimble_host_srcs "${nimble_host_srcs}" PARENT_SCOPE) +set(nimble_host_include_dirs "${nimble_host_include_dirs}" PARENT_SCOPE) diff --git a/components/bt/porting/CMakeLists.txt b/components/bt/porting/CMakeLists.txt new file mode 100644 index 00000000000..b8b0ff0097f --- /dev/null +++ b/components/bt/porting/CMakeLists.txt @@ -0,0 +1,58 @@ +set(porting_srcs "" PARENT_SCOPE) +set(porting_include_dirs "" PARENT_SCOPE) +set(porting_priv_include_dirs "" PARENT_SCOPE) + +if(NOT CONFIG_BT_CONTROLLER_ENABLED) + return() +endif() + +list(APPEND porting_priv_include_dirs + ${CMAKE_CURRENT_SOURCE_DIR}/mem/ + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/mem/bt_osi_mem.c" + "${CMAKE_CURRENT_SOURCE_DIR}/mem/os_msys_init.c" + "${CMAKE_CURRENT_SOURCE_DIR}/mem/os_mempool.c" + "${CMAKE_CURRENT_SOURCE_DIR}/npl/freertos/src/npl_os_freertos.c" + "${CMAKE_CURRENT_SOURCE_DIR}/transport/src/hci_transport.c" +) + +if(CONFIG_BT_LE_HCI_INTERFACE_USE_RAM) + if(CONFIG_BT_NIMBLE_ENABLED) + list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/vhci/hci_driver_nimble.c" + ) + else() + list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/vhci/hci_driver_standard.c" + ) + endif() +elseif(CONFIG_BT_LE_HCI_INTERFACE_USE_UART) + list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_util.c" + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_h4.c" + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_mem.c" + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart_config.c" + ) + if(CONFIG_BT_LE_UART_HCI_DMA_MODE) + list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart_dma.c" + ) + else() + list(APPEND porting_srcs + "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart.c" + ) + endif() +endif() + +list(APPEND porting_include_dirs + "${CMAKE_CURRENT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_SOURCE_DIR}/npl/freertos/include" + "${CMAKE_CURRENT_SOURCE_DIR}/transport/include" +) + +set(porting_srcs ${porting_srcs} PARENT_SCOPE) +set(porting_include_dirs ${porting_include_dirs} PARENT_SCOPE) +set(porting_priv_include_dirs ${porting_priv_include_dirs} PARENT_SCOPE) diff --git a/components/bt/porting_btdm/CMakeLists.txt b/components/bt/porting_btdm/CMakeLists.txt index b32b05c1257..c421ab372f0 100644 --- a/components/bt/porting_btdm/CMakeLists.txt +++ b/components/bt/porting_btdm/CMakeLists.txt @@ -1,56 +1,62 @@ -set(porting_btdm_srcs "") -set(porting_btdm_include_dirs "") +set(porting_srcs "" PARENT_SCOPE) +set(porting_include_dirs "" PARENT_SCOPE) +set(porting_priv_include_dirs "" PARENT_SCOPE) + +if(NOT CONFIG_BT_CONTROLLER_ENABLED) + return() +endif() # btdm_common file(GLOB_RECURSE BTDM_COMMON_SRCS "controller/btdm_common/src/*.c") -list(APPEND porting_btdm_srcs ${BTDM_COMMON_SRCS}) -list(APPEND porting_btdm_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/btdm_common/include") +list(APPEND porting_srcs ${BTDM_COMMON_SRCS}) +list(APPEND porting_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/btdm_common/include") # ble if(CONFIG_BT_CTRL_BLE_ENABLE) - list(APPEND porting_btdm_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/ble/include") + list(APPEND porting_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/ble/include") file(GLOB_RECURSE BLE_SRCS "controller/ble/src/*.c") - list(APPEND porting_btdm_srcs ${BLE_SRCS}) + list(APPEND porting_srcs ${BLE_SRCS}) endif() # bredr if(CONFIG_BT_CTRL_BREDR_ENABLE) - list(APPEND porting_btdm_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/bredr/include") + list(APPEND porting_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/controller/bredr/include") file(GLOB_RECURSE BREDR_SRCS "controller/bredr/src/*.c") - list(APPEND porting_btdm_srcs ${BREDR_SRCS}) + list(APPEND porting_srcs ${BREDR_SRCS}) endif() # transport file(GLOB_RECURSE TRANSPORT_SRCS "transport/src/*.c") -list(APPEND porting_btdm_srcs ${TRANSPORT_SRCS}) -list(APPEND porting_btdm_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/transport/include") +list(APPEND porting_srcs ${TRANSPORT_SRCS}) +list(APPEND porting_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/transport/include") if(CONFIG_BT_CTRL_HCI_INTERFACE_USE_RAM) if(CONFIG_BT_NIMBLE_ENABLED) - list(APPEND porting_btdm_srcs + list(APPEND porting_srcs "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/vhci/hci_driver_nimble.c" ) else() - list(APPEND porting_btdm_srcs + list(APPEND porting_srcs "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/vhci/hci_driver_standard.c" ) endif() elseif(CONFIG_BT_CTRL_HCI_INTERFACE_USE_UART) - list(APPEND porting_btdm_srcs + list(APPEND porting_srcs "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_util.c" "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_h4.c" "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/common/hci_driver_mem.c" "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart_config.c" ) if(CONFIG_BT_CTRL_UART_HCI_NO_DMA_MODE) - list(APPEND porting_btdm_srcs + list(APPEND porting_srcs "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart.c" ) else() - list(APPEND porting_btdm_srcs + list(APPEND porting_srcs "${CMAKE_CURRENT_SOURCE_DIR}/transport/driver/uart/hci_driver_uart_dma.c" ) endif() endif() -set(porting_btdm_srcs ${porting_btdm_srcs} PARENT_SCOPE) -set(porting_btdm_include_dirs ${porting_btdm_include_dirs} PARENT_SCOPE) +set(porting_srcs ${porting_srcs} PARENT_SCOPE) +set(porting_include_dirs ${porting_include_dirs} PARENT_SCOPE) +set(porting_priv_include_dirs ${porting_priv_include_dirs} PARENT_SCOPE)