mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/remove_lwip_from_common_requirements' into 'master'
build system: remove lwip from common component requirements Closes IDF-1258 See merge request espressif/esp-idf!17785
This commit is contained in:
commit
2f7935666d
@ -12,8 +12,10 @@ endif()
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
INCLUDE_DIRS . esp-tls-crypto
|
||||
PRIV_INCLUDE_DIRS "private_include"
|
||||
REQUIRES mbedtls
|
||||
PRIV_REQUIRES lwip http_parser)
|
||||
# lwip and mbedtls are public requirements becasue esp_tls.h
|
||||
# includes sys/socket.h and mbedtls header files.
|
||||
REQUIRES mbedtls lwip
|
||||
PRIV_REQUIRES http_parser)
|
||||
|
||||
if(CONFIG_ESP_TLS_USING_WOLFSSL)
|
||||
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"
|
||||
INCLUDE_DIRS "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)
|
||||
|
@ -95,3 +95,11 @@ idf_component_optional_requires(PRIVATE app_update)
|
||||
if(CONFIG_PM_ENABLE)
|
||||
idf_component_optional_requires(PRIVATE pm)
|
||||
endif()
|
||||
|
||||
if(CONFIG_VFS_SUPPORT_IO)
|
||||
idf_component_optional_requires(PRIVATE vfs)
|
||||
endif()
|
||||
|
||||
if(CONFIG_SW_COEXIST_ENABLE OR CONFIG_EXTERNAL_COEX_ENABLE)
|
||||
idf_component_optional_requires(PRIVATE esp_wifi)
|
||||
endif()
|
||||
|
@ -26,7 +26,6 @@
|
||||
#include "esp_spi_flash.h"
|
||||
#include "esp_flash_internal.h"
|
||||
#include "esp_newlib.h"
|
||||
#include "esp_vfs_dev.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_efuse.h"
|
||||
#include "esp_flash_encrypt.h"
|
||||
@ -41,7 +40,9 @@
|
||||
|
||||
/***********************************************/
|
||||
// Headers for other components init functions
|
||||
#if CONFIG_SW_COEXIST_ENABLE || CONFIG_EXTERNAL_COEX_ENABLE
|
||||
#include "esp_coexist_internal.h"
|
||||
#endif
|
||||
|
||||
#if CONFIG_ESP_COREDUMP_ENABLE
|
||||
#include "esp_core_dump.h"
|
||||
@ -58,8 +59,12 @@
|
||||
#include "esp_private/pm_impl.h"
|
||||
#endif
|
||||
|
||||
#include "esp_pthread.h"
|
||||
#if CONFIG_VFS_SUPPORT_IO
|
||||
#include "esp_vfs_dev.h"
|
||||
#include "esp_vfs_console.h"
|
||||
#endif
|
||||
|
||||
#include "esp_pthread.h"
|
||||
#include "esp_private/esp_clk.h"
|
||||
|
||||
#include "esp_private/brownout.h"
|
||||
|
@ -31,7 +31,7 @@ idf_component_register(SRCS "${srcs}"
|
||||
INCLUDE_DIRS "include"
|
||||
REQUIRES esp_event esp_phy
|
||||
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}")
|
||||
|
||||
if(CONFIG_ESP32_WIFI_ENABLED)
|
||||
|
@ -17,10 +17,17 @@ endif()
|
||||
|
||||
idf_component_register(SRCS "${mbedtls_srcs}"
|
||||
INCLUDE_DIRS "${mbedtls_include_dirs}"
|
||||
REQUIRES lwip
|
||||
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)
|
||||
set(bundle_name "x509_crt_bundle")
|
||||
@ -103,8 +110,7 @@ endif()
|
||||
|
||||
set(mbedtls_targets mbedtls mbedcrypto mbedx509)
|
||||
|
||||
set(mbedtls_target_sources "${COMPONENT_DIR}/port/mbedtls_debug.c"
|
||||
"${COMPONENT_DIR}/port/net_sockets.c")
|
||||
set(mbedtls_target_sources "${COMPONENT_DIR}/port/mbedtls_debug.c")
|
||||
|
||||
if(CONFIG_MBEDTLS_DYNAMIC_BUFFER)
|
||||
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")
|
||||
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
|
||||
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 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})
|
||||
|
||||
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"
|
||||
INCLUDE_DIRS esp-mqtt/include
|
||||
PRIV_INCLUDE_DIRS "esp-mqtt/lib/include"
|
||||
PRIV_REQUIRES lwip
|
||||
)
|
||||
|
||||
if(TEST_BUILD)
|
||||
|
@ -53,3 +53,7 @@ if(CONFIG_NEWLIB_NANO_FORMAT)
|
||||
endif()
|
||||
|
||||
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)
|
||||
|
@ -1,16 +1,8 @@
|
||||
// Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
@ -59,6 +51,10 @@ ssize_t _read_r_console(struct _reent *r, int fd, void * data, size_t size)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (received == 0) {
|
||||
errno = EWOULDBLOCK;
|
||||
return -1;
|
||||
}
|
||||
return received;
|
||||
}
|
||||
__errno_r(r) = EBADF;
|
||||
|
@ -11,4 +11,4 @@ endif()
|
||||
idf_component_register(SRCS "${srcs}"
|
||||
INCLUDE_DIRS "include"
|
||||
PRIV_INCLUDE_DIRS "private_include"
|
||||
REQUIRES esp-tls)
|
||||
REQUIRES esp-tls lwip)
|
||||
|
@ -548,7 +548,7 @@ Common component requirements
|
||||
|
||||
To avoid duplication, every component automatically requires some "common" IDF components even if they are not mentioned explicitly. Headers from these components can always be included.
|
||||
|
||||
The list of common components is: cxx, newlib, freertos, esp_hw_support, heap, log, lwip, soc, hal, esp_rom, esp_common, esp_system.
|
||||
The list of common components is: cxx, newlib, freertos, esp_hw_support, heap, log, soc, hal, esp_rom, esp_common, esp_system.
|
||||
|
||||
Including components in the build
|
||||
----------------------------------
|
||||
|
@ -19,6 +19,13 @@ In previous versions of ESP-IDF, some components were always added as public req
|
||||
* ``driver``
|
||||
* ``efuse``
|
||||
* ``esp_timer``
|
||||
* ``lwip``
|
||||
* ``vfs``
|
||||
* ``esp_wifi``
|
||||
* ``esp_event``
|
||||
* ``esp_netif``
|
||||
* ``esp_eth``
|
||||
* ``esp_phy``
|
||||
|
||||
This means that it was possible to include header files of those components without specifying them as requirements in ``idf_component_register``.
|
||||
|
||||
|
@ -634,7 +634,7 @@ Spark Plug 组件
|
||||
|
||||
为避免重复性工作,各组件都用自动依赖一些“通用” IDF 组件,即使它们没有被明确提及。这些组件的头文件会一直包含在构建系统中。
|
||||
|
||||
通用组件包括:cxx、newlib、freertos、esp_hw_support、heap、log、lwip、soc、hal、esp_rom、esp_common、esp_system。
|
||||
通用组件包括:cxx、newlib、freertos、esp_hw_support、heap、log、soc、hal、esp_rom、esp_common、esp_system。
|
||||
|
||||
在构建中导入组件
|
||||
-----------------
|
||||
|
@ -1090,7 +1090,6 @@ components/newlib/poll.c
|
||||
components/newlib/priv_include/esp_time_impl.h
|
||||
components/newlib/pthread.c
|
||||
components/newlib/reent_init.c
|
||||
components/newlib/syscalls.c
|
||||
components/newlib/termios.c
|
||||
components/newlib/test/test_atomic.c
|
||||
components/newlib/test/test_locks.c
|
||||
|
@ -162,9 +162,8 @@ function(__build_init idf_path)
|
||||
else()
|
||||
# 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
|
||||
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}")
|
||||
endif()
|
||||
|
||||
|
@ -41,15 +41,6 @@ set(extra_components_which_shouldnt_be_included
|
||||
# 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.
|
||||
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
|
||||
# conditional on related Kconfig option. It is also used by esp_wifi, driver, mbedtls,
|
||||
# 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.
|
||||
# For freertos, it can be made a weak dependency conditional on FREERTOS_RUN_TIME_STATS_USING_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
|
||||
# should be removed from G1-only build.
|
||||
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)
|
||||
# it is hard to make it conditional, need to remove bootloader_support.
|
||||
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
|
||||
# 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?
|
||||
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
|
||||
|
@ -194,12 +194,17 @@ static const char* get_test_name(void)
|
||||
c = getchar();
|
||||
if (c == EOF) {
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
} else if (c == '\r') {
|
||||
continue;
|
||||
} else if (c == '\n') {
|
||||
} else if ((c == '\r' || c == '\n') && p != test_name_str) {
|
||||
/* terminate the line */
|
||||
puts("\n\r");
|
||||
fflush(stdout);
|
||||
*p = '\0';
|
||||
break;
|
||||
} else {
|
||||
/* echo the received character */
|
||||
putchar(c);
|
||||
fflush(stdout);
|
||||
/* and save it */
|
||||
*p = c;
|
||||
++p;
|
||||
}
|
||||
|
@ -26,4 +26,4 @@ idf_component_register(SRCS ${srcs}
|
||||
INCLUDE_DIRS include
|
||||
PRIV_INCLUDE_DIRS private_include
|
||||
REQUIRES spi_flash idf_test cmock
|
||||
PRIV_REQUIRES perfmon driver)
|
||||
PRIV_REQUIRES perfmon driver esp_netif)
|
||||
|
Loading…
Reference in New Issue
Block a user