Files
esp-idf/components/tcp_transport/CMakeLists.txt
T
Guillaume Souchere d670774f5c feat(esp_common): implement composable error code registration via link-time arrays
Refactor the esp_err_to_name() system to decouple esp_common from
higher-level components. Instead of a monolithic generated table,
each component registers its error codes into a dedicated linker
section (.esp_err_msg_table) via idf_define_esp_err_codes() in its
CMakeLists.txt.

New files:
- tools/err_codes_extract.py: extract ESP_ERR_* defines from headers to CSV
- tools/err_codes_to_c.py: generate C source placing entries into linker section
- tools/err_codes_to_rst.py: generate RST documentation from error codes
- tools/cmake/err_codes.cmake: CMake module providing idf_define_esp_err_codes()
- components/esp_common/include/esp_err_codes.h: esp_err_msg_t typedef
- components/esp_common/src/esp_err_to_name_new.c: new lookup using link-time array
- tools/test_apps/build_system/err_codes_check/: CI test app

Changes:
- Remove all optional component dependencies from esp_common/CMakeLists.txt
- Add .esp_err_msg_table section to all 5 linker scripts
- Register error codes in 18 components via idf_define_esp_err_codes()
- Add new scripts to .gitlab/ci/rules.yml build_check patterns
- use new scripts to generate doc and add CI validation
- Update esp_err.rst to add description of composable code registration
2026-05-28 09:53:32 +02:00

45 lines
1.4 KiB
CMake

set(srcs
"transport.c"
"transport_ssl.c"
"transport_internal.c")
if(CONFIG_LWIP_IPV4)
list(APPEND srcs
"transport_socks_proxy.c")
endif()
if(CONFIG_WS_TRANSPORT)
list(APPEND srcs
"transport_ws.c")
endif()
set(req esp-tls)
if(NOT ${IDF_TARGET} STREQUAL "linux")
list(APPEND req lwip esp_timer)
else()
# Add esp_timer to REQUIRES for the linux target when Build system v2 is used
# since Build system v2 does not support BUILD_COMPONENTS and cannot link to
# esp_timer conditionally if LWIP is in the build.
if(CONFIG_LWIP_IPV4 AND IDF_BUILD_V2)
list(APPEND req esp_timer)
endif()
endif()
idf_component_register(SRCS "${srcs}"
INCLUDE_DIRS "include"
PRIV_INCLUDE_DIRS "private_include"
REQUIRES ${req})
idf_define_esp_err_codes(HEADERS include/esp_transport.h)
if(${IDF_TARGET} STREQUAL "linux" AND NOT IDF_BUILD_V2)
# Check if LWIP in the build for linux target to add esp_timer to the dependencies
# since socks_proxy transport needs it and lwip & linux build could use it
# Note: Build System v2 adds dependency on esp_timer during component registration
idf_build_get_property(build_components BUILD_COMPONENTS)
if("lwip" IN_LIST build_components)
idf_component_get_property(esp_timer esp_timer COMPONENT_LIB)
target_link_libraries(${COMPONENT_LIB} PUBLIC ${esp_timer})
endif()
endif()