mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-05 05:34:32 +02:00
build system: remove lwip from common requirements
lwip was added to common requirements list to provide "sys/socket.h" header to all components without additional requirements specified. However, lwip pulls in a lot of dependencies on other components. This commit removes lwip from common requirements to reduce the number of components in G1-only apps. To compensate for this removal, the following changes are made: - newlib (which is a common requirement) has a public dependency on lwip if lwip is present in the build. This ensures that sys/socket.h is available as long as lwip component is included into the build. - lwip is now a public requirement of esp-tls since esp_tls.h includes sys/socket.h header. - lwip is now a public requirement o esp_http_client because sys/socket.h is included from esp_http_client.h - lwip is now a private requirement of esp_wifi for "smartconfig_ack" - lwip is now a private requirement of mqtt for socket functions - lwip is now a public requirement of tcp_transport because esp_transport_tcp.h includes sys/socket.h header. - mbedtls checks if lwip component is present in the build. If yes, net_sockets.c is added to the build, along with the dependency on lwip. Previously lwip was a public requirement of mbedtls unconditionally. system/g1_components test app is updated to reflect the changes Default public dependencies of a component before and after this change, except common requirements: - esp_timer (public dependency of freertos) - bootloader_support (public dependency of esp_hw_support) - vfs (public dependency of lwip) - esp_wifi (public dependency of lwip) - esp_event (public dependency of esp_wifi) - esp_netif (public dependency of esp_event) - esp_eth (public dependency of esp_netif) - esp_phy (public dependency of esp_wifi) After: - esp_timer (public dependency of freertos) - bootloader_support (public dependency of esp_hw_support) Altogether, the following components have been always added as public requirements to all other components, and are not added now ([breaking-change]): - lwip - vfs - esp_wifi - esp_event - esp_netif - esp_eth - esp_phy Application components now need to explicitly declare dependencies on these components.
This commit is contained in:
@@ -12,8 +12,10 @@ endif()
|
|||||||
idf_component_register(SRCS "${srcs}"
|
idf_component_register(SRCS "${srcs}"
|
||||||
INCLUDE_DIRS . esp-tls-crypto
|
INCLUDE_DIRS . esp-tls-crypto
|
||||||
PRIV_INCLUDE_DIRS "private_include"
|
PRIV_INCLUDE_DIRS "private_include"
|
||||||
REQUIRES mbedtls
|
# lwip and mbedtls are public requirements becasue esp_tls.h
|
||||||
PRIV_REQUIRES lwip http_parser)
|
# includes sys/socket.h and mbedtls header files.
|
||||||
|
REQUIRES mbedtls lwip
|
||||||
|
PRIV_REQUIRES http_parser)
|
||||||
|
|
||||||
if(CONFIG_ESP_TLS_USING_WOLFSSL)
|
if(CONFIG_ESP_TLS_USING_WOLFSSL)
|
||||||
idf_component_get_property(wolfssl esp-wolfssl COMPONENT_LIB)
|
idf_component_get_property(wolfssl esp-wolfssl COMPONENT_LIB)
|
||||||
|
@@ -4,5 +4,6 @@ idf_component_register(SRCS "esp_http_client.c"
|
|||||||
"lib/http_utils.c"
|
"lib/http_utils.c"
|
||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
PRIV_INCLUDE_DIRS "lib/include"
|
PRIV_INCLUDE_DIRS "lib/include"
|
||||||
REQUIRES http_parser
|
# lwip is a public requirement because esp_http_client.h includes sys/socket.h
|
||||||
|
REQUIRES http_parser lwip
|
||||||
PRIV_REQUIRES tcp_transport)
|
PRIV_REQUIRES tcp_transport)
|
||||||
|
@@ -31,7 +31,7 @@ idf_component_register(SRCS "${srcs}"
|
|||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
REQUIRES esp_event esp_phy
|
REQUIRES esp_event esp_phy
|
||||||
PRIV_REQUIRES driver esptool_py esp_netif esp_pm esp_timer nvs_flash
|
PRIV_REQUIRES driver esptool_py esp_netif esp_pm esp_timer nvs_flash
|
||||||
wpa_supplicant hal ${extra_priv_requires}
|
wpa_supplicant hal lwip ${extra_priv_requires}
|
||||||
LDFRAGMENTS "${ldfragments}")
|
LDFRAGMENTS "${ldfragments}")
|
||||||
|
|
||||||
if(CONFIG_ESP32_WIFI_ENABLED)
|
if(CONFIG_ESP32_WIFI_ENABLED)
|
||||||
|
@@ -17,10 +17,17 @@ endif()
|
|||||||
|
|
||||||
idf_component_register(SRCS "${mbedtls_srcs}"
|
idf_component_register(SRCS "${mbedtls_srcs}"
|
||||||
INCLUDE_DIRS "${mbedtls_include_dirs}"
|
INCLUDE_DIRS "${mbedtls_include_dirs}"
|
||||||
REQUIRES lwip
|
|
||||||
PRIV_REQUIRES "${priv_requires}"
|
PRIV_REQUIRES "${priv_requires}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Determine the type of mbedtls component library
|
||||||
|
if(mbedtls_srcs STREQUAL "")
|
||||||
|
# For no sources in component library we must use "INTERFACE"
|
||||||
|
set(linkage_type INTERFACE)
|
||||||
|
else()
|
||||||
|
set(linkage_type PUBLIC)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
if(CONFIG_MBEDTLS_CERTIFICATE_BUNDLE)
|
if(CONFIG_MBEDTLS_CERTIFICATE_BUNDLE)
|
||||||
set(bundle_name "x509_crt_bundle")
|
set(bundle_name "x509_crt_bundle")
|
||||||
@@ -103,8 +110,7 @@ endif()
|
|||||||
|
|
||||||
set(mbedtls_targets mbedtls mbedcrypto mbedx509)
|
set(mbedtls_targets mbedtls mbedcrypto mbedx509)
|
||||||
|
|
||||||
set(mbedtls_target_sources "${COMPONENT_DIR}/port/mbedtls_debug.c"
|
set(mbedtls_target_sources "${COMPONENT_DIR}/port/mbedtls_debug.c")
|
||||||
"${COMPONENT_DIR}/port/net_sockets.c")
|
|
||||||
|
|
||||||
if(CONFIG_MBEDTLS_DYNAMIC_BUFFER)
|
if(CONFIG_MBEDTLS_DYNAMIC_BUFFER)
|
||||||
set(mbedtls_target_sources ${mbedtls_target_sources}
|
set(mbedtls_target_sources ${mbedtls_target_sources}
|
||||||
@@ -114,6 +120,15 @@ set(mbedtls_target_sources ${mbedtls_target_sources}
|
|||||||
"${COMPONENT_DIR}/port/dynamic/esp_ssl_tls.c")
|
"${COMPONENT_DIR}/port/dynamic/esp_ssl_tls.c")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# net_sockets.c should only be compiled if BSD socket functions are available.
|
||||||
|
# Do this by checking if lwip component is included into the build.
|
||||||
|
idf_build_get_property(build_components BUILD_COMPONENTS)
|
||||||
|
if(lwip IN_LIST build_components)
|
||||||
|
list(APPEND mbedtls_target_sources "${COMPONENT_DIR}/port/net_sockets.c")
|
||||||
|
idf_component_get_property(lwip_lib lwip COMPONENT_LIB)
|
||||||
|
target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${lwip_lib})
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add port files to mbedtls targets
|
# Add port files to mbedtls targets
|
||||||
target_sources(mbedtls PRIVATE ${mbedtls_target_sources})
|
target_sources(mbedtls PRIVATE ${mbedtls_target_sources})
|
||||||
|
|
||||||
@@ -240,14 +255,6 @@ set_property(TARGET mbedcrypto APPEND PROPERTY LINK_INTERFACE_LIBRARIES mbedtls)
|
|||||||
set_property(TARGET mbedcrypto APPEND PROPERTY LINK_LIBRARIES idf::driver idf::${target})
|
set_property(TARGET mbedcrypto APPEND PROPERTY LINK_LIBRARIES idf::driver idf::${target})
|
||||||
set_property(TARGET mbedcrypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES idf::driver idf::${target})
|
set_property(TARGET mbedcrypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES idf::driver idf::${target})
|
||||||
|
|
||||||
# Link mbedtls libraries to component library
|
|
||||||
if(mbedtls_srcs STREQUAL "")
|
|
||||||
# For no sources in component library we must use "INTERFACE"
|
|
||||||
set(linkage_type INTERFACE)
|
|
||||||
else()
|
|
||||||
set(linkage_type PUBLIC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${mbedtls_targets})
|
target_link_libraries(${COMPONENT_LIB} ${linkage_type} ${mbedtls_targets})
|
||||||
|
|
||||||
if(CONFIG_ESP_TLS_USE_DS_PERIPHERAL)
|
if(CONFIG_ESP_TLS_USE_DS_PERIPHERAL)
|
||||||
|
@@ -4,6 +4,7 @@ idf_component_register(SRCS "esp-mqtt/mqtt_client.c"
|
|||||||
"esp-mqtt/lib/platform_esp32_idf.c"
|
"esp-mqtt/lib/platform_esp32_idf.c"
|
||||||
INCLUDE_DIRS esp-mqtt/include
|
INCLUDE_DIRS esp-mqtt/include
|
||||||
PRIV_INCLUDE_DIRS "esp-mqtt/lib/include"
|
PRIV_INCLUDE_DIRS "esp-mqtt/lib/include"
|
||||||
|
PRIV_REQUIRES lwip
|
||||||
)
|
)
|
||||||
|
|
||||||
if(TEST_BUILD)
|
if(TEST_BUILD)
|
||||||
|
@@ -53,3 +53,7 @@ if(CONFIG_NEWLIB_NANO_FORMAT)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(port)
|
add_subdirectory(port)
|
||||||
|
|
||||||
|
# if lwip is included in the build, add it as a public requirement so that
|
||||||
|
# #include <sys/socket.h> works without any special provisions.
|
||||||
|
idf_component_optional_requires(PUBLIC lwip)
|
||||||
|
@@ -11,4 +11,4 @@ endif()
|
|||||||
idf_component_register(SRCS "${srcs}"
|
idf_component_register(SRCS "${srcs}"
|
||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
PRIV_INCLUDE_DIRS "private_include"
|
PRIV_INCLUDE_DIRS "private_include"
|
||||||
REQUIRES esp-tls)
|
REQUIRES esp-tls lwip)
|
||||||
|
@@ -162,9 +162,8 @@ function(__build_init idf_path)
|
|||||||
else()
|
else()
|
||||||
# Set components required by all other components in the build
|
# Set components required by all other components in the build
|
||||||
#
|
#
|
||||||
# - lwip is here so that #include <sys/socket.h> works without any special provisions
|
|
||||||
# - esp_hw_support is here for backward compatibility
|
# - esp_hw_support is here for backward compatibility
|
||||||
set(requires_common cxx newlib freertos esp_hw_support heap log lwip soc hal esp_rom esp_common esp_system)
|
set(requires_common cxx newlib freertos esp_hw_support heap log soc hal esp_rom esp_common esp_system)
|
||||||
idf_build_set_property(__COMPONENT_REQUIRES_COMMON "${requires_common}")
|
idf_build_set_property(__COMPONENT_REQUIRES_COMMON "${requires_common}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@@ -41,15 +41,6 @@ set(extra_components_which_shouldnt_be_included
|
|||||||
# Figure out if these components can exist without a dependency on efuse.
|
# Figure out if these components can exist without a dependency on efuse.
|
||||||
# If not, see if esp_hw_support can provide minimal efuse component replacement in G1 build.
|
# If not, see if esp_hw_support can provide minimal efuse component replacement in G1 build.
|
||||||
efuse
|
efuse
|
||||||
# esp_eth is a dependency of esp_netif, esp_event, lwip
|
|
||||||
# Once they are removed from G1, esp_eth will be removed as well.
|
|
||||||
esp_eth
|
|
||||||
# esp_event is a dependency of esp_wifi, esp_eth. Both should be removed from G1.
|
|
||||||
esp_event
|
|
||||||
# esp_netif is a dependency of lwip and esp_event, should disappear once lwip is removed.
|
|
||||||
esp_netif
|
|
||||||
# esp_phy is a dependency of esp_wifi.
|
|
||||||
esp_phy
|
|
||||||
# esp_pm is pulled in by freertos, can be made a weak dependency
|
# esp_pm is pulled in by freertos, can be made a weak dependency
|
||||||
# conditional on related Kconfig option. It is also used by esp_wifi, driver, mbedtls,
|
# conditional on related Kconfig option. It is also used by esp_wifi, driver, mbedtls,
|
||||||
# all of which should be removed from G1-only build.
|
# all of which should be removed from G1-only build.
|
||||||
@@ -59,30 +50,17 @@ set(extra_components_which_shouldnt_be_included
|
|||||||
# esp_timer is a dependency of freertos, esp_event, esp_wifi, driver.
|
# esp_timer is a dependency of freertos, esp_event, esp_wifi, driver.
|
||||||
# For freertos, it can be made a weak dependency conditional on FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER
|
# For freertos, it can be made a weak dependency conditional on FREERTOS_RUN_TIME_STATS_USING_ESP_TIMER
|
||||||
esp_timer
|
esp_timer
|
||||||
# esp_wifi is a dependency of lwip.
|
|
||||||
# [refactor-todo]: investigate making esp_wifi a conditional dependency.
|
|
||||||
esp_wifi
|
|
||||||
# esptool_py is a dependency of bootloader, esp_wifi, app_update, partition_table, all of which
|
# esptool_py is a dependency of bootloader, esp_wifi, app_update, partition_table, all of which
|
||||||
# should be removed from G1-only build.
|
# should be removed from G1-only build.
|
||||||
esptool_py
|
esptool_py
|
||||||
# lwip is a common component due to "sys/socket.h" header.
|
|
||||||
# [refactor-todo] consider adding a system-level sys/socket.h in newlib instead
|
|
||||||
lwip
|
|
||||||
# mbedtls is a dependency of bootloader_support (plus other easier-to-remove ones)
|
# mbedtls is a dependency of bootloader_support (plus other easier-to-remove ones)
|
||||||
# it is hard to make it conditional, need to remove bootloader_support.
|
# it is hard to make it conditional, need to remove bootloader_support.
|
||||||
mbedtls
|
mbedtls
|
||||||
# nvs_flash is required by:
|
|
||||||
# esp_wifi, esp_phy — both should be removed
|
|
||||||
nvs_flash
|
|
||||||
# partition_table is pulled in by app_update, esptool_py, bootloader; all to be removed
|
# partition_table is pulled in by app_update, esptool_py, bootloader; all to be removed
|
||||||
partition_table
|
partition_table
|
||||||
# pthread is required by esp_system (for initialization only, can be made a weak dependency)
|
# pthread is required by esp_system (for initialization only, can be made a weak dependency)
|
||||||
# and cxx. See also [refactor-todo] about cxx, can it work without pthread?
|
# and cxx. See also [refactor-todo] about cxx, can it work without pthread?
|
||||||
pthread
|
pthread
|
||||||
# vfs is a dependency of lwip. It can be made conditional, while lwip is still a common component.
|
|
||||||
vfs
|
|
||||||
# wpa_supplicant is a dependency of esp_wifi, which is to be removed from G1-only build
|
|
||||||
wpa_supplicant
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(expected_components
|
set(expected_components
|
||||||
|
Reference in New Issue
Block a user