fix(linux): Fixed linux target build failure in esp_app_format for MacOS

This commit fixes a build failure in the esp_app_format component
for the linux target when built on a MacOS machine.
This commit is contained in:
Sudeep Mohanty 2024-05-24 07:45:31 +02:00
parent 61559dc3e4
commit e5fb198adc
2 changed files with 11 additions and 1 deletions

View File

@ -11,7 +11,13 @@ idf_component_register(SRCS ${src}
if(NOT BOOTLOADER_BUILD)
# esp_app_desc structure is added as an undefined symbol because otherwise the
# linker will ignore this structure as it has no other files depending on it.
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u esp_app_desc")
if(CONFIG_IDF_TARGET_LINUX AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
# On MacOS, the linker expects the exact mangled symbol name (with leading underscore)
# to be present in the object file.
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u _esp_app_desc")
else()
target_link_libraries(${COMPONENT_LIB} INTERFACE "-u esp_app_desc")
endif()
if(CONFIG_APP_PROJECT_VER_FROM_CONFIG)
# Ignore current PROJECT_VER (which was set in project.cmake)

View File

@ -20,7 +20,11 @@ static const char *TAG = "app_init";
#endif
// Application version info
#if defined(__APPLE__) && CONFIG_IDF_TARGET_LINUX
const __attribute__((weak)) __attribute__((section("__RODATA_DESC,.rodata_desc"))) esp_app_desc_t esp_app_desc = {
#else
const __attribute__((weak)) __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = {
#endif /* #if defined(__APPLE__) && CONFIG_IDF_TARGET_LINUX */
.magic_word = ESP_APP_DESC_MAGIC_WORD,
#ifdef CONFIG_APP_EXCLUDE_PROJECT_VER_VAR
.version = "",