# -*- Mode: makefile -*-
#
# TCG tests (per-target rules)
#
# This Makefile fragment is included from the per-target
# Makefile.target so will be invoked for each linux-user program 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 per ARCH makefile, if it exists, holds extra information about
# useful docker images or alternative compiler flags.

-include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include
-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include

GUEST_BUILD=
TCG_MAKE=$(SRC_PATH)/tests/tcg/Makefile
# Support installed Cross Compilers

ifdef CROSS_CC_GUEST

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

GUEST_BUILD=cross-build-guest-tests

endif

# Support building with Docker

ifeq ($(HAVE_USER_DOCKER)$(GUEST_BUILD),y)
ifneq ($(DOCKER_IMAGE),)

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

DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc --user $(shell id -u) \
		--cc $(DOCKER_CROSS_COMPILER) \
		-i qemu:$(DOCKER_IMAGE) \
		-s $(SRC_PATH) -- "
DOCKER_PREREQ=docker-image-$(DOCKER_IMAGE)

.PHONY: docker-build-guest-tests
docker-build-guest-tests: $(DOCKER_PREREQ)
	$(call quiet-command, \
	  (mkdir -p tests && cd tests && \
	   $(MAKE) -f $(TCG_MAKE) CC=$(DOCKER_COMPILE_CMD) \
			BUILD_STATIC=y \
			EXTRA_CFLAGS=$(DOCKER_CROSS_COMPILER_CFLAGS)), \
	"BUILD","$(TARGET_NAME) guest-tests with docker qemu:$(DOCKER_IMAGE)")

GUEST_BUILD=docker-build-guest-tests

endif
endif

# Final targets
.PHONY: guest-tests

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

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

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

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

# It doesn't matter if these don't exits
.PHONY: clean-guest-tests
clean-guest-tests:
	rm -rf tests || echo "no $(TARGET_NAME) tests to remove"
