| 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() |