if(TARGET zephyr_interface)
# 1. Создаем кастомный таргет, который выполнится СРАЗУ после генерации prebuilt-версии
add_custom_target(backup_debug_symbols ALL)
add_dependencies(backup_debug_symbols zephyr_prebuilt)
# 2. Копируем prebuilt-ELF со всеми дебаг-символами в файл zephyr_debug.elf.
# Этот файл будет содержать абсолютно всю отладку и правильные адреса вашей SDRAM.
add_custom_command(
TARGET backup_debug_symbols
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_BINARY_DIR}/zephyr/zephyr_prebuilt.elf
${CMAKE_BINARY_DIR}/zephyr/zephyr_debug.elf
COMMENT "--> Отладочные символы успешно сохранены в zephyr_debug.elf для GDB/west debug"
)
# 3. Говорим компилятору GCC не пихать тяжелую отладку в финальный zephyr.elf,
# чтобы встроенный objcopy со звездочкой (*+3758096384) перестал падать.
# Оригинальный флаг -gdwarf-4 останется для сборки библиотек, но на финальном этапе линковки debug отсечется.
target_link_options(zephyr_final_interface INTERFACE "-Wl,--strip-debug")
endif()