fix(esp_coex): move coex init from esp_system to esp_coex component

CMakev2's DEFERRED mode for idf_component_optional_requires only links
optional components already present in the dependency graph. This caused
esp_coex headers to be unavailable when building minimal examples on
targets with both WiFi and IEEE802154 (e.g. esp32c5, esp32c6).

Moving init_coexist to esp_coex removes the cross-component dependency
and ensures the init function is only compiled when esp_coex itself is
part of the build. A linker hook is added to guarantee the object file
is not silently discarded by the linker.

Made-with: Cursor
This commit is contained in:
Marius Vikhammer
2026-03-10 10:31:19 +08:00
parent c2768cf849
commit e4bc0e9554
5 changed files with 19 additions and 20 deletions
+16 -1
View File
@@ -1,11 +1,12 @@
/*
* SPDX-FileCopyrightText: 2018-2025 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2018-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "esp_coexist.h"
#include "private/esp_coexist_internal.h"
#include "esp_private/startup_internal.h"
#include "soc/soc_caps.h"
#if CONFIG_EXTERNAL_COEX_ENABLE
@@ -295,3 +296,17 @@ esp_err_t esp_coex_wifi_i154_enable(void)
return ESP_OK;
}
#endif
#if CONFIG_ESP_COEX_SW_COEXIST_ENABLE || CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE
void esp_coex_init_include_func(void)
{
// Hook to force the linker to include this file
}
ESP_SYSTEM_INIT_FN(init_coexist, SECONDARY, BIT(0), 204)
{
esp_coex_adapter_register(&g_coex_adapter_funcs);
coex_pre_init();
return ESP_OK;
}
#endif // CONFIG_ESP_COEX_SW_COEXIST_ENABLE || CONFIG_ESP_COEX_EXTERNAL_COEXIST_ENABLE