mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
38dec0be48
It is required to define a mandatory dependency on lwip, so we introduced esp_netif_stack component and made it require lwip, instead of directly depending on lwip. This enables building w-out lwip and support other TCP/IP stacks.
83 lines
3.5 KiB
CMake
83 lines
3.5 KiB
CMake
# For more information about build system see
|
|
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
|
|
# The following five lines of boilerplate have to be in your project's
|
|
# CMakeLists in this exact order for cmake to work correctly
|
|
cmake_minimum_required(VERSION 3.16)
|
|
|
|
set(driver_components esp_eth esp_wifi openthread)
|
|
|
|
# General rules for all these tests
|
|
# * No optional dependencies
|
|
# * Forbidden dependencies are only driver components
|
|
set(forbidden_deps ${driver_components})
|
|
set(optional_deps)
|
|
# Check manually if the ESP_NETIF is configured in sdkconfig
|
|
# Note that we cannot use Kconfig values at this stage, and therefore we have to parse
|
|
# the sdkconfig manually for the relevant "config" (CONFIG_TESTAPP_COMPONENT_...),
|
|
# in case the sdkconfig doesn't exist (clean build), we choose the default.
|
|
message(STATUS "Checking if sdkconfig contains CONFIG_TESTAPP_COMPONENT related config:")
|
|
set(config_file "${CMAKE_CURRENT_SOURCE_DIR}/sdkconfig")
|
|
if(EXISTS ${config_file})
|
|
# If the config file exists, check for the non-default settings - LWIP or ESP-NETIF-without-LWIP
|
|
# otherwise (file missing or defalut settings) go with ESP_NETIF
|
|
file(READ ${config_file} config_file_content)
|
|
string(FIND "${config_file_content}" "CONFIG_TESTAPP_COMPONENT_LWIP=y" match_lwip)
|
|
string(FIND "${config_file_content}" "CONFIG_TESTAPP_COMPONENT_ESP_NETIF_WITHOUT_LWIP=y" match_netif_no_lwip)
|
|
if(NOT ${match_lwip} EQUAL -1)
|
|
set(CHECK_DEPS_FOR_LWIP 1)
|
|
elseif(NOT ${match_netif_no_lwip} EQUAL -1)
|
|
set(CHECK_DEPS_FOR_ESP_NETIF_WITHOUT_LWIP 1)
|
|
endif()
|
|
endif()
|
|
|
|
if(CHECK_DEPS_FOR)
|
|
message(STATUS "CONFIG_TESTAPP_COMPONENT_LWIP")
|
|
set(component_under_test lwip)
|
|
set(expected_build_components lwip)
|
|
elseif(CHECK_DEPS_FOR_ESP_NETIF_WITHOUT_LWIP)
|
|
message(STATUS "CONFIG_TESTAPP_COMPONENT_ESP_NETIF_WITHOUT_LWIP")
|
|
set(component_under_test esp_netif)
|
|
set(expected_build_components esp_netif)
|
|
list(APPEND optional_deps mbedtls)
|
|
list(APPEND forbidden_deps lwip) # lwip mustn't be pulled in, in "esp-netif without lwip" setup
|
|
list(APPEND EXTRA_COMPONENT_DIRS "esp_netif_stack")
|
|
else()
|
|
message(STATUS "CONFIG_TESTAPP_COMPONENT_ESP_NETIF")
|
|
set(component_under_test esp_netif)
|
|
set(expected_build_components esp_netif lwip)
|
|
endif()
|
|
|
|
set(COMPONENTS ${component_under_test} main ${optional_deps})
|
|
|
|
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
|
|
|
|
idf_build_set_property(__BUILD_COMPONENT_DEPGRAPH_ENABLED 1)
|
|
|
|
project(network_components)
|
|
|
|
# Get the actual build commponents included in the build
|
|
idf_build_get_property(build_components BUILD_COMPONENTS)
|
|
|
|
message(STATUS "Build components needed my main and ${component_under_test}:")
|
|
foreach(comp ${build_components})
|
|
message(STATUS "${comp}")
|
|
endforeach()
|
|
|
|
# Check for all the components, these shall not be included
|
|
foreach(comp ${forbidden_deps})
|
|
if(${comp} IN_LIST build_components)
|
|
message(FATAL_ERROR "Component ${comp} shall not be included when building only ${component_under_test}")
|
|
else()
|
|
message(STATUS "-> OK: ${comp} is not included when building only ${component_under_test}")
|
|
endif()
|
|
endforeach()
|
|
|
|
# Check for all needed components, these must be included
|
|
foreach(comp ${expected_build_components})
|
|
if(${comp} IN_LIST build_components)
|
|
message(STATUS "-> OK: ${comp} is pulled by ${component_under_test}")
|
|
else()
|
|
message(FATAL_ERROR "${comp} is expected by adding ${component_under_test}")
|
|
endif()
|
|
endforeach()
|