assert_not(FLASH_SCRIPT "FLASH_SCRIPT has been removed; use BOARD_FLASH_RUNNER") assert_not(DEBUG_SCRIPT "DEBUG_SCRIPT has been removed; use BOARD_DEBUG_RUNNER") set(RUNNER_ARGS_COMMON # Required: "--board-dir=${BOARD_DIR}" "--kernel-elf=${PROJECT_BINARY_DIR}/${KERNEL_ELF_NAME}" "--kernel-hex=${PROJECT_BINARY_DIR}/${KERNEL_HEX_NAME}" "--kernel-bin=${PROJECT_BINARY_DIR}/${KERNEL_BIN_NAME}" # Optional, but so often needed that they're provided by default: # (TODO: revisit whether we really want these here) "--gdb=${CMAKE_GDB}" "--openocd=${OPENOCD}" "--openocd-search=${OPENOCD_DEFAULT_PATH}" ) # Enable verbose output, if requested. if(CMAKE_VERBOSE_MAKEFILE) set(RUNNER_VERBOSE "--verbose") else() set(RUNNER_VERBOSE) endif() foreach(target flash debug debugserver) string(TOUPPER "${target}" target_upper) if(target STREQUAL flash) set(comment "Flashing ${BOARD}") set(runner "${BOARD_FLASH_RUNNER}") elseif(target STREQUAL debug) set(comment "Debugging ${BOARD}") set(runner "${BOARD_DEBUG_RUNNER}") elseif(target STREQUAL debugserver) set(comment "Debugging ${BOARD}") set(runner "${BOARD_DEBUG_RUNNER}") if(EMU_PLATFORM) # cmake/qemu/CMakeLists.txt will add a debugserver target for # emulation platforms, so we don't add one here continue() endif() endif() if(runner) # E.g. runner_ident = dfu_util (note the underscore), etc. string(MAKE_C_IDENTIFIER "${runner}" runner_ident) # E.g. args = BOARD_RUNNER_ARGS_openocd, BOARD_RUNNER_ARGS_dfu_util, etc. get_property(args GLOBAL PROPERTY "BOARD_RUNNER_ARGS_${runner_ident}") set(cmd ${CMAKE_COMMAND} -E env ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/support/zephyr_flash_debug.py ${RUNNER_VERBOSE} ${runner} ${target} ${RUNNER_ARGS_COMMON} ${args} DEPENDS ${logical_target_for_zephyr_elf} WORKING_DIRECTORY ${APPLICATION_BINARY_DIR} ) else() set(cmd ${CMAKE_COMMAND} -E echo "'${target}' is not supported with this board." "Please check the documentation for alternate instructions." ) endif() add_custom_target(${target} COMMAND ${cmd} COMMENT ${comment} USES_TERMINAL ) endforeach()