#
# 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} ${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} ${KERNEL_ELF_NAME}
endif

.PHONY: run
