#
# 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
else

# 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
ifneq (${QEMU_PIPE},)
    XTRUN_FLAGS += < ${QEMU_PIPE}.in > ${QEMU_PIPE}.out
endif
endif

run: zephyr
	@echo "**** Running simulation for Xtensa core \"${XTENSA_CORE}\" ****"
	$(if ${QEMU_PIPE},,@echo "To exit from XT-RUN enter: 'CTRL+c'")
	@echo '[XT-RUN] CPU: ${XTENSA_CORE}'
	# Run the emulator in the background and leave a PID file for
	# sanitycheck
	${Q} ${XTRUN} ${XTRUN_FLAGS} ${XTRUN_EXTRA_FLAGS} ${KERNEL_ELF_NAME} \
		& echo $$! > qemu.pid
	# Wait until the emulator terminates (for any reason)
	$(Q) cat qemu.pid | xargs $(srctree)/scripts/waitpid

.PHONY: run
