Skip to content

Commit d2fa261

Browse files
committed
Merge branch 'feat/ble_log_compression_modularized_v5.4' into 'release/v5.4'
refactor(ble): modularize compressed log scripts for better maintainability (v5.4) See merge request espressif/esp-idf!43550
2 parents 495ecf6 + 9ec28bd commit d2fa261

File tree

7 files changed

+279
-149
lines changed

7 files changed

+279
-149
lines changed

components/bt/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ set(bt_priv_requires
935935
)
936936

937937
if(CONFIG_BLE_COMPRESSED_LOG_ENABLE)
938-
set(BT_ROOT_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
938+
set(CODE_BASE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
939939
# When log compression is enabled, selected logs are replaced
940940
# by auto-generated macros that emit pre-encoded data.
941941
# This eliminates the original format strings, reducing firmware size and

components/bt/common/ble_log/extension/log_compression/CMakeLists.txt

Lines changed: 79 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
21
set(LOG_COMPRESSED_MODULE "")
32
set(LOG_COMPRESSED_MODULE_CODE_PATH "")
3+
set(BT_ROOT_PATH $ENV{IDF_PATH}/components/bt)
44
set(LOG_COMPRESSED_SRCS_DIR "${CMAKE_BINARY_DIR}/ble_log/.compressed_srcs")
55

66
# default config value for ble mesh module
@@ -17,32 +17,62 @@ set(BLE_HOST_TAGS_PRESERVE "")
1717

1818
if(CONFIG_BLE_MESH_COMPRESSED_LOG_ENABLE)
1919
list(APPEND LOG_COMPRESSED_MODULE "BLE_MESH")
20-
if(NOT EXISTS "${CMAKE_BINARY_DIR}/ble_log/include/mesh_log_index.h")
21-
file(WRITE "${CMAKE_BINARY_DIR}/ble_log/include/mesh_log_index.h" "")
22-
endif()
23-
list(APPEND LOG_COMPRESSED_MODULE_CODE_PATH "esp_ble_mesh")
2420

2521
# update config file
2622
set(BLE_MESH_CODE_PATH "esp_ble_mesh")
2723
set(BLE_MESH_LOG_INDEX_HEADER "mesh_log_index.h")
24+
set(BLE_MESH_LOG_SCRIPT_PATH
25+
"${CMAKE_CURRENT_LIST_DIR}/scripts/module_scripts/ble_mesh/make_mesh_log_macro.py")
2826
# update BLE_MESH_TAGS and BLE_MESH_TAGS_PRESERVE
2927
include(${CMAKE_CURRENT_LIST_DIR}/cmake/ble_mesh_log_tags.cmake)
30-
28+
if(NOT EXISTS "${CMAKE_BINARY_DIR}/ble_log/include/${BLE_MESH_LOG_INDEX_HEADER}")
29+
file(WRITE "${CMAKE_BINARY_DIR}/ble_log/include/${BLE_MESH_LOG_INDEX_HEADER}" "")
30+
endif()
31+
list(APPEND LOG_COMPRESSED_MODULE_CODE_PATH ${BLE_MESH_CODE_PATH})
3132
endif()
33+
3234
if(CONFIG_BLE_HOST_COMPRESSED_LOG_ENABLE AND CONFIG_BT_BLUEDROID_ENABLED)
3335
list(APPEND LOG_COMPRESSED_MODULE "BLE_HOST")
34-
list(APPEND LOG_COMPRESSED_MODULE_CODE_PATH "host/bluedroid/stack")
35-
if(NOT EXISTS "${CMAKE_BINARY_DIR}/ble_log/include/host_log_index.h")
36-
file(WRITE "${CMAKE_BINARY_DIR}/ble_log/include/host_log_index.h" "")
37-
endif()
3836

37+
# update config file
3938
set(HOST_CODE_PATH "host/bluedroid/stack")
4039
set(HOST_LOG_INDEX_HEADER "host_log_index.h")
40+
set(BLE_HOST_LOG_SCRIPT_PATH
41+
"${CMAKE_CURRENT_LIST_DIR}/scripts/module_scripts/bluedroid/make_bluedroid_log_macro.py")
42+
4143
include(${CMAKE_CURRENT_LIST_DIR}/cmake/ble_host_bluedroid_tags.cmake)
44+
if(NOT EXISTS "${CMAKE_BINARY_DIR}/ble_log/include/${HOST_LOG_INDEX_HEADER}")
45+
file(WRITE "${CMAKE_BINARY_DIR}/ble_log/include/${HOST_LOG_INDEX_HEADER}" "")
46+
endif()
47+
list(APPEND LOG_COMPRESSED_MODULE_CODE_PATH ${HOST_CODE_PATH})
48+
endif()
49+
50+
if(BLE_COMPRESSED_LIB_LOG_BUILD)
51+
if(NOT (BLE_COMPRESSED_LIB_NAME AND BLE_COMPRESSED_LIB_CODE_DIR AND BLE_COMPRESSED_LIB_LOG_TAGS))
52+
message(FATAL_ERROR "Invalid settings")
53+
else()
54+
message("Building compressed log for ${BLE_COMPRESSED_LIB_NAME}")
55+
endif()
56+
list(APPEND LOG_COMPRESSED_MODULE ${BLE_COMPRESSED_LIB_NAME})
57+
if(NOT EXISTS "${CMAKE_BINARY_DIR}/ble_log/include/${BLE_COMPRESSED_LIB_LOG_INDEX_HEADER}")
58+
file(WRITE "${CMAKE_BINARY_DIR}/ble_log/include/${BLE_COMPRESSED_LIB_LOG_INDEX_HEADER}" "")
59+
endif()
60+
list(APPEND LOG_COMPRESSED_MODULE_CODE_PATH ${BLE_COMPRESSED_LIB_CODE_DIR})
61+
62+
string(REPLACE ";" "," BLE_COMPRESSED_LIB_CODE_DIR "${BLE_COMPRESSED_LIB_CODE_DIR}")
63+
string(REPLACE ";" "," BLE_COMPRESSED_LIB_LOG_TAGS "${BLE_COMPRESSED_LIB_LOG_TAGS}")
64+
string(REPLACE ";" "," BLE_COMPRESSED_LIB_LOG_TAGS_PRESERVE "${BLE_COMPRESSED_LIB_LOG_TAGS_PRESERVE}")
65+
else()
66+
set(BLE_COMPRESSED_LIB_NAME "placeholder")
4267
endif()
68+
69+
4370
if(LOG_COMPRESSED_MODULE)
44-
list(APPEND srcs "common/ble_log/extension/log_compression/ble_log_compression.c")
45-
list(APPEND include_dirs "${CMAKE_BINARY_DIR}/ble_log/include")
71+
# When building the library, ble_log_compression.c and its dependencies are not needed
72+
if(NOT BLE_COMPRESSED_LIB_LOG_BUILD)
73+
list(APPEND srcs "common/ble_log/extension/log_compression/ble_log_compression.c")
74+
list(APPEND include_dirs "${CMAKE_BINARY_DIR}/ble_log/include")
75+
endif()
4676
if(NOT CMAKE_VERSION VERSION_LESS 3.15.0)
4777
set(Python3_FIND_STRATEGY LOCATION)
4878
find_package(Python3 COMPONENTS Interpreter)
@@ -111,19 +141,39 @@ if(LOG_COMPRESSED_MODULE)
111141
"host/nimble/nimble/nimble/host/store/config/src")
112142
endif()
113143

114-
add_custom_target(ble_log_compression ALL
115-
COMMAND ${BLE_PYTHON_EXECUTABLE} ${PYTHON_SCRIPT}
116-
compress
117-
--compressed_srcs_path "${LOG_COMPRESSED_SRCS_DIR}"
118-
--build_path "${CMAKE_BINARY_DIR}"
119-
--module "'${LOG_COMPRESSED_MODULE}'"
120-
--bt_path "${BT_ROOT_PATH}"
121-
--srcs "'${compressed_srcs}'"
122-
DEPENDS ${compressed_srcs_with_abs_path} ${PYTHON_SCRIPT}
123-
COMMENT "Log compression is being performed, please wait..."
124-
WORKING_DIRECTORY ${BT_ROOT_PATH}
125-
USES_TERMINAL
126-
)
144+
if(BLE_COMPRESSED_LIB_LOG_BUILD)
145+
execute_process(COMMAND ${BLE_PYTHON_EXECUTABLE} ${PYTHON_SCRIPT}
146+
compress
147+
--compressed_srcs_path "${LOG_COMPRESSED_SRCS_DIR}"
148+
--build_path "${CMAKE_BINARY_DIR}"
149+
--module "${LOG_COMPRESSED_MODULE}"
150+
--code_base_path "${CODE_BASE_PATH}"
151+
--srcs "${compressed_srcs}"
152+
RESULT_VARIABLE result
153+
OUTPUT_VARIABLE out
154+
ERROR_VARIABLE err)
155+
if(NOT ${result} EQUAL 0)
156+
message(WARNING "${err}")
157+
message(WARNING "Exit this log compression due to failure of compression")
158+
set(LOG_COMPRESS_INCLUDE_DIRS ${include_dirs} PARENT_SCOPE)
159+
set(LOG_COMPRESSION_TARGET "" PARENT_SCOPE)
160+
return()
161+
endif()
162+
else()
163+
add_custom_target(ble_log_compression ALL
164+
COMMAND ${BLE_PYTHON_EXECUTABLE} ${PYTHON_SCRIPT}
165+
compress
166+
--compressed_srcs_path "${LOG_COMPRESSED_SRCS_DIR}"
167+
--build_path "${CMAKE_BINARY_DIR}"
168+
--module "'${LOG_COMPRESSED_MODULE}'"
169+
--code_base_path "${CODE_BASE_PATH}"
170+
--srcs "'${compressed_srcs}'"
171+
DEPENDS ${compressed_srcs_with_abs_path} ${PYTHON_SCRIPT}
172+
COMMENT "Log compression is being performed, please wait..."
173+
WORKING_DIRECTORY ${BT_ROOT_PATH}
174+
USES_TERMINAL
175+
)
176+
endif()
127177

128178
function(add_flags_if_in_list file file_list compile_flags)
129179
set(PROCESSED OFF PARENT_SCOPE)
@@ -190,7 +240,10 @@ if(LOG_COMPRESSED_MODULE)
190240
set(LOG_COMPRESSION_TARGET ble_log_compression PARENT_SCOPE)
191241
# set(LOG_COMPRESSION_TARGET "" PARENT_SCOPE)
192242
set(LOG_COMPRESS_SRCS "${compressed_srcs_with_abs_path};${uncompressed_srcs}" PARENT_SCOPE)
193-
list(APPEND include_dirs "common/ble_log/extension/log_compression/include")
243+
if(NOT BLE_COMPRESSED_LIB_LOG_BUILD)
244+
list(APPEND include_dirs "common/ble_log/extension/log_compression/include")
245+
endif()
246+
list(APPEND include_dirs "${CMAKE_BINARY_DIR}/ble_log/include")
194247
set(LOG_COMPRESS_INCLUDE_DIRS ${include_dirs} PARENT_SCOPE)
195248
else()
196249
set(LOG_COMPRESSION_TARGET "" PARENT_SCOPE)

0 commit comments

Comments
 (0)