# -*- Mode: makefile -*-
#
# TCG tests (per-target rules)
#
# This Makefile fragment is included from the build-tcg target, once
# for each target we build. We have two options for compiling, either
# using a configured guest compiler or calling one of our docker images
# to do it for us.
#

# The configure script fills in extra information about
# useful docker images or alternative compiler flags.

# Usage: $(call quiet-command,command and args,"NAME","args to print")
# This will run "command and args", and either:
#  if V=1 just print the whole command and args
#  otherwise print the 'quiet' output in the format "  NAME     args to print"
# NAME should be a short name of the command, 7 letters or fewer.
# If called with only a single argument, will print nothing in quiet mode.
quiet-command-run = $(if $(V),,$(if $2,printf "  %-7s %s\n" $2 $3 && ))$1
quiet-@ = $(if $(V),,@)
quiet-command = $(quiet-@)$(call quiet-command-run,$1,$2,$3)

CROSS_CC_GUEST:=
DOCKER_IMAGE:=

-include tests/tcg/config-$(TARGET).mak

GUEST_BUILD=
TCG_MAKE=../Makefile.target

# We also need the Docker make rules to depend on
SKIP_DOCKER_BUILD=1
include $(SRC_PATH)/tests/docker/Makefile.include

# Support installed Cross Compilers

ifdef CROSS_CC_GUEST

.PHONY: cross-build-guest-tests
cross-build-guest-tests:
	$(call quiet-command, \
	   (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
	    $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \
			SRC_PATH="$(SRC_PATH)" BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \
			EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
	"BUILD","$(TARGET) guest-tests with $(CROSS_CC_GUEST)")

GUEST_BUILD=cross-build-guest-tests

endif

# Support building with Docker

ifneq ($(DOCKER_IMAGE),)

DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc \
		--cc $(DOCKER_CROSS_CC_GUEST) \
		-i qemu/$(DOCKER_IMAGE) \
		-s $(SRC_PATH) -- "

.PHONY: docker-build-guest-tests
docker-build-guest-tests: docker-image-$(DOCKER_IMAGE)
	$(call quiet-command, \
	  (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \
	   $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC=$(DOCKER_COMPILE_CMD) \
			SRC_PATH="$(SRC_PATH)" BUILD_STATIC=y \
			EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \
	"BUILD","$(TARGET) guest-tests with docker qemu/$(DOCKER_IMAGE)")

GUEST_BUILD=docker-build-guest-tests

endif

# Final targets
all:
	@echo "Do not invoke this Makefile directly"; exit 1

.PHONY: guest-tests

ifneq ($(GUEST_BUILD),)
guest-tests: $(GUEST_BUILD)

run-guest-tests: guest-tests
	$(call quiet-command, \
	(cd tests/tcg/$(TARGET) && \
	 $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" \
	 		SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \
	"RUN", "tests for $(TARGET_NAME)")

else
guest-tests:
	$(call quiet-command, true, "BUILD", \
		"$(TARGET) guest-tests SKIPPED")

run-guest-tests:
	$(call quiet-command, true, "RUN", \
		"tests for $(TARGET) SKIPPED")
endif

# It doesn't matter if these don't exits
.PHONY: clean-guest-tests
clean-guest-tests:
	rm -rf tests/tcg/$(TARGET)
