#
# Copyright (c) 2017 Intel Corporation
# Copyright (c) 2016 Cadence Design Systems, Inc.
# SPDX-License-Identifier: Apache-2.0
#

# Abstraction of 'run' goal with xt-run
ifneq (${QEMU_PTY},)
# By default xt-sim uses pty, do nothing
endif

run: zephyr
	@echo "**** Running simulation for Xtensa core \"${CONFIG_SOC}\" ****"
	$(if ${QEMU_PIPE},,@echo "To exit from XT-RUN enter: 'CTRL+c'")
	@echo '[XT-RUN] CPU: ${CONFIG_SOC}'
	# Run the emulator in the background and leave a PID file for
	# sanitycheck
ifneq ($(QEMU_PIPE),)
	# Use the existing interface that we set up for QEMU:
	# 1) A pair of pipe for console input and output, named
	#    $(QEMU_PIPE).in and $(QEMU_PIPE).out. The extensions are implicit
	#    in QEMU's -seral pipe:.... argument.
	# 2) A PID file so that sanitycheck can kill the emulator
	${Q} ${XTRUN} ${XTRUN_FLAGS} ${XTRUN_EXTRA_FLAGS} ${O}/${KERNEL_ELF_NAME} \
		< ${QEMU_PIPE}.in > ${QEMU_PIPE}.out & echo $$! > qemu.pid
	# Wait until the emulator terminates (for any reason)
	$(Q) cat qemu.pid | xargs $(srctree)/scripts/waitpid
else
	${Q} ${XTRUN} ${XTRUN_FLAGS} ${XTRUN_EXTRA_FLAGS} ${O}/${KERNEL_ELF_NAME}
endif

.PHONY: run
