From 0f2935389adca56be5a5a9373179369cb919c212 Mon Sep 17 00:00:00 2001 From: luoxu Date: Thu, 23 Apr 2026 22:11:16 +0800 Subject: [PATCH] fix(bt): Normalize source paths for log compression pattern matching --- components/bt/common/CMakeLists.txt | 2 +- .../extension/log_compression/CMakeLists.txt | 6 ++++++ .../log_compression/scripts/ble_log_compress.py | 12 +++++++++--- components/bt/controller/CMakeLists.txt | 15 +++++++++------ components/bt/host/nimble/CMakeLists.txt | 1 - 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/components/bt/common/CMakeLists.txt b/components/bt/common/CMakeLists.txt index da22ae9d809..d994bf62413 100644 --- a/components/bt/common/CMakeLists.txt +++ b/components/bt/common/CMakeLists.txt @@ -3,7 +3,7 @@ function(replace_log_compression_srcs) return() endif() - set(CODE_BASE_PATH "${CMAKE_CURRENT_FUNCTION_LIST_DIR}/..") + 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 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 index f146e0ec10f..ff0a49276a0 100644 --- a/components/bt/controller/CMakeLists.txt +++ b/components/bt/controller/CMakeLists.txt @@ -1,14 +1,17 @@ # Function to register the libraries for the BT controller function(register_bt_ctrl_libs) - if(NOT CONFIG_BT_CONTROLLER_ENABLED) - return() - endif() - + # 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") - elseif(CONFIG_IDF_TARGET_ESP32C3) + 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() @@ -26,7 +29,7 @@ function(register_bt_ctrl_libs) 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) - else() + 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) diff --git a/components/bt/host/nimble/CMakeLists.txt b/components/bt/host/nimble/CMakeLists.txt index 3c438c7dcd5..74c10a6e816 100644 --- a/components/bt/host/nimble/CMakeLists.txt +++ b/components/bt/host/nimble/CMakeLists.txt @@ -210,7 +210,6 @@ list(APPEND nimble_host_include_dirs ${CMAKE_CURRENT_LIST_DIR}/nimble/porting/nimble/include ${CMAKE_CURRENT_LIST_DIR}/port/include ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/transport/include - ${CMAKE_CURRENT_LIST_DIR}/nimble/nimble/include ) if(CONFIG_BT_CONTROLLER_DISABLED)