# Проверяем, что мы находимся внутри экосистемы сборки Zephyr
if(TARGET zephyr_interface)
# Создаем задачу, которая выполнится строго ПОСЛЕ линковки,
# но ДО того, как Zephyr запустит свой деструктивный скрипт пост-обработки.
add_custom_target(save_debug_elf ALL)
# Говорим CMake, что нужно дождаться создания файла zephyr_final.elf
add_dependencies(save_debug_elf zephyr_final)
# Выполняем подмену:
add_custom_command(
TARGET save_debug_elf
POST_BUILD
# 1. Копируем оригинальный zephyr.elf (со всей отладкой!) в безопасное место zephyr_debug.elf
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/zephyr/zephyr.elf ${CMAKE_BINARY_DIR}/zephyr/zephyr_debug.elf
# 2. Из оригинального файла zephyr.elf, который будет мучить Zephyr, вырезаем debug-секции.
# Теперь внутренний скрипт Zephyr выполнит свою команду со звездочкой (*+-536870912),
# но так как дебага там больше нет, objcopy отработает БЕЗ ошибки и соберет bin/hex!
COMMAND ${CMAKE_STRIP} --strip-debug ${CMAKE_BINARY_DIR}/zephyr/zephyr.elf
COMMENT "--> Сохранение отладочного ELF в zephyr_debug.elf и очистка основного файла для objcopy..."
)
endif()