idf_build_get_property(idf_target IDF_TARGET) if(${idf_target} STREQUAL "linux") idf_component_register() # Register empty component for first CMake pass for potential *Remote* functionality add_subdirectory(remote) # wifi-remote on linux host return() # *Local* esp-wifi component is not supported by the POSIX/Linux simulator endif() if( NOT CONFIG_ESP_WIFI_ENABLED AND NOT CONFIG_ESP_HOST_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") # Public headers (notably esp_wifi_default.h) include esp_event.h, # esp_netif.h and esp_phy.h. Declare these in REQUIRES so the headers # are visible to consumers — same interface as the WiFi-enabled # registration at the bottom of this file. set(reqs "esp_event" "esp_netif" "esp_phy") set(priv_reqs "wpa_supplicant") # This component provides "esp_wifi" "wifi_apps/nan_app" 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/nan_app/include" REQUIRES ${reqs} PRIV_REQUIRES ${priv_reqs}) add_subdirectory(remote) # wifi-remote on esp32p4/h2 (no wifi) return() endif() if(CONFIG_ESP_WIFI_ENABLED OR CONFIG_ESP_HOST_WIFI_ENABLED) if(CONFIG_APP_NO_BLOBS) set(link_binary_libs 0) set(ldfragments) else() set(link_binary_libs 1) set(ldfragments "linker.lf") endif() set(srcs "src/lib_printf.c" "src/mesh_event.c" "src/smartconfig.c" "src/wifi_init.c" "src/wifi_default.c" "src/wifi_netif.c" "src/wifi_default_ap.c" "src/ftm_load_calibration.c" "${idf_target}/esp_adapter.c") list(APPEND srcs "regulatory/esp_wifi_regulatory.c") if(CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API AND CONFIG_LWIP_IPV4) list(APPEND srcs "src/smartconfig_ack.c") endif() if(CONFIG_ESP_WIFI_NAN_SYNC_ENABLE OR CONFIG_ESP_WIFI_NAN_USD_ENABLE) list(APPEND srcs "wifi_apps/nan_app/src/nan_app.c") if(CONFIG_ESP_WIFI_NAN_SECURITY) list(APPEND srcs "wifi_apps/nan_app/src/nan_security.c") endif() if(CONFIG_ESP_WIFI_NAN_PAIRING) list(APPEND srcs "wifi_apps/nan_app/src/nan_pairing.c") endif() endif() if(CONFIG_ESP_WIFI_ENABLE_ROAMING_APP) list(APPEND srcs "wifi_apps/roaming_app/src/roaming_app.c") endif() endif() idf_component_register(SRCS "${srcs}" INCLUDE_DIRS "include" "include/local" "wifi_apps/include" "wifi_apps/nan_app/include" REQUIRES esp_event esp_phy esp_netif PRIV_REQUIRES esp_pm esp_timer nvs_flash efuse wpa_supplicant hal lwip esp_coex PRIV_INCLUDE_DIRS ../wpa_supplicant/src/ ../wpa_supplicant/esp_supplicant/src/ wifi_apps/roaming_app/include wifi_apps/roaming_app/src LDFRAGMENTS "${ldfragments}") idf_define_esp_err_codes(HEADERS include/esp_wifi.h include/esp_now.h include/esp_mesh.h) if(CONFIG_ESP_WIFI_ENABLED OR CONFIG_ESP_HOST_WIFI_ENABLED) idf_build_get_property(build_dir BUILD_DIR) if(CONFIG_ESP_HOST_WIFI_ENABLED) set(target_name "${CONFIG_ESP_WIFI_CONTROLLER_TARGET}_host") else() set(target_name "${idf_target}") endif() target_link_directories(${COMPONENT_LIB} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/lib/${target_name}") if(link_binary_libs) if(CONFIG_ESP_HOST_WIFI_ENABLED) set(blobs core espnow net80211 target smartconfig wapi) else() if(CONFIG_IDF_TARGET_ESP32C2) set(blobs core espnow net80211 pp smartconfig) else() set(blobs core espnow mesh net80211 pp smartconfig wapi) endif() endif() # Since some blob names are very generic, add an "esp_wifi_" prefix when creating target names, # to avoid conflicts with other libraries. set(blob_targets ${blobs}) list(TRANSFORM blob_targets PREPEND "esp_wifi_") foreach(blob ${blobs}) set(blob_target "esp_wifi_${blob}") add_prebuilt_library(${blob_target} "${CMAKE_CURRENT_SOURCE_DIR}/lib/${target_name}/lib${blob}.a" REQUIRES ${COMPONENT_NAME}) set(blob_reqs ${blob_targets}) list(REMOVE_ITEM blob_reqs ${blob_target}) # remove itself from requirements set_property(TARGET ${blob_target} APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${blob_reqs}) target_link_libraries(${COMPONENT_LIB} PUBLIC ${blob_target}) endforeach() endif() # TODO IDF-13365: remove the following lines set_source_files_properties(regulatory/esp_wifi_regulatory.c PROPERTIES COMPILE_FLAGS -Wno-unterminated-string-initialization) endif() if(CONFIG_SPIRAM) idf_component_optional_requires(PRIVATE esp_psram) endif() add_subdirectory(remote) # wifi-remote as a secondary wifi interface (on wifi targets)