From 44fd1e0d3aa16ce274171bf85f901f797521a68f Mon Sep 17 00:00:00 2001 From: yinqingzhao Date: Wed, 8 Jan 2025 15:40:42 +0800 Subject: [PATCH] feat(wifi): avoid compiling components related to wifi when wifi is not supported --- components/esp_wifi/CMakeLists.txt | 14 ++++++++++++++ components/esp_wifi/Kconfig | 4 ++-- components/wifi_provisioning/CMakeLists.txt | 7 +++++++ components/wifi_provisioning/Kconfig | 2 ++ components/wpa_supplicant/CMakeLists.txt | 9 +++++++++ .../advanced/components/cmd_wifi/CMakeLists.txt | 8 +++++++- .../console/advanced/main/console_example_main.c | 2 +- .../console/basic/main/console_example_main.c | 2 +- 8 files changed, 43 insertions(+), 5 deletions(-) diff --git a/components/esp_wifi/CMakeLists.txt b/components/esp_wifi/CMakeLists.txt index 8605bed5df..bedbeca5d9 100644 --- a/components/esp_wifi/CMakeLists.txt +++ b/components/esp_wifi/CMakeLists.txt @@ -4,6 +4,20 @@ if(${idf_target} STREQUAL "linux") return() # This component is not supported by the POSIX/Linux simulator endif() +if( NOT CONFIG_ESP_WIFI_ENABLED AND NOT CMAKE_BUILD_EARLY_EXPANSION ) + # No local wifi: provide only netif bindings + set(srcs + "src/wifi_default.c" + "src/wifi_netif.c" + "src/wifi_default_ap.c") + + # This component provides "esp_wifi" "wifi_apps" headers if WiFi not enabled + # (implementation supported optionally in a managed component esp_wifi_remote) + idf_component_register(SRCS "${srcs}" + INCLUDE_DIRS "include" "wifi_apps/include") + return() +endif() + if(CONFIG_ESP_WIFI_ENABLED) if(CONFIG_APP_NO_BLOBS) diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index d77ae6aa9c..7d315d5205 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -1,7 +1,7 @@ menu "Wi-Fi" - # TODO: Disable WIFI support on ESP32-H2 (WIFI-5796) - # visible if SOC_WIFI_SUPPORTED + + visible if SOC_WIFI_SUPPORTED config ESP_WIFI_ENABLED bool diff --git a/components/wifi_provisioning/CMakeLists.txt b/components/wifi_provisioning/CMakeLists.txt index 96cfdd5665..7b9348644a 100644 --- a/components/wifi_provisioning/CMakeLists.txt +++ b/components/wifi_provisioning/CMakeLists.txt @@ -4,6 +4,13 @@ if(${target} STREQUAL "linux") return() # This component is not supported by the POSIX/Linux simulator endif() +if( NOT CONFIG_ESP_WIFI_ENABLED AND NOT CMAKE_BUILD_EARLY_EXPANSION ) + # This component provides only "esp_provisioning" headers if WiFi not enabled + # (implementation supported optionally in a managed component esp_wifi_remote) + idf_component_register(INCLUDE_DIRS include) + return() +endif() + set(srcs "src/wifi_config.c" "src/wifi_scan.c" "src/wifi_ctrl.c" diff --git a/components/wifi_provisioning/Kconfig b/components/wifi_provisioning/Kconfig index d5a7d7aa36..61954e3129 100644 --- a/components/wifi_provisioning/Kconfig +++ b/components/wifi_provisioning/Kconfig @@ -1,5 +1,7 @@ menu "Wi-Fi Provisioning Manager" + visible if SOC_WIFI_SUPPORTED + config WIFI_PROV_SCAN_MAX_ENTRIES int "Max Wi-Fi Scan Result Entries" default 16 diff --git a/components/wpa_supplicant/CMakeLists.txt b/components/wpa_supplicant/CMakeLists.txt index ea6e78ef9f..2627c8cb3d 100644 --- a/components/wpa_supplicant/CMakeLists.txt +++ b/components/wpa_supplicant/CMakeLists.txt @@ -6,6 +6,15 @@ else() set(linker_fragments linker.lf) endif() +if( NOT CONFIG_ESP_WIFI_ENABLED + AND NOT CONFIG_ESP_HOST_WIFI_ENABLED + AND NOT CMAKE_BUILD_EARLY_EXPANSION ) + # This component provides only "esp_supplicant" headers if WiFi not enabled + # (implementation supported optionally in a managed component esp_wifi_remote) + idf_component_register(INCLUDE_DIRS include port/include esp_supplicant/include) + return() +endif() + set(srcs "port/os_xtensa.c" "port/eloop.c" "src/ap/ap_config.c" diff --git a/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt b/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt index ca51905567..b529d0328a 100644 --- a/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt +++ b/examples/system/console/advanced/components/cmd_wifi/CMakeLists.txt @@ -1,3 +1,9 @@ -idf_component_register(SRCS "cmd_wifi.c" +if(CONFIG_ESP_WIFI_ENABLED) + set(srcs "cmd_wifi.c") +else() + set(srcs) +endif() + +idf_component_register(SRCS "${srcs}" INCLUDE_DIRS . REQUIRES console esp_wifi) diff --git a/examples/system/console/advanced/main/console_example_main.c b/examples/system/console/advanced/main/console_example_main.c index dba157f544..989fc945d9 100644 --- a/examples/system/console/advanced/main/console_example_main.c +++ b/examples/system/console/advanced/main/console_example_main.c @@ -168,7 +168,7 @@ void app_main(void) esp_console_register_help_command(); register_system_common(); register_system_sleep(); -#if SOC_WIFI_SUPPORTED +#if CONFIG_ESP_WIFI_ENABLED register_wifi(); #endif register_nvs(); diff --git a/examples/system/console/basic/main/console_example_main.c b/examples/system/console/basic/main/console_example_main.c index 5ff13f33a2..3e544d70f0 100644 --- a/examples/system/console/basic/main/console_example_main.c +++ b/examples/system/console/basic/main/console_example_main.c @@ -92,7 +92,7 @@ void app_main(void) esp_console_register_help_command(); register_system_common(); register_system_sleep(); -#if SOC_WIFI_SUPPORTED +#if CONFIG_ESP_WIFI_ENABLED register_wifi(); #endif register_nvs();