aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/Makefile.qemu
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2019-08-07 16:35:22 +0200
committerAlex Bennée <alex.bennee@linaro.org>2019-09-10 09:38:33 +0100
commitfc76c56d3f47e7b09eb0fd447f1b4dcc5d3ee717 (patch)
treeea653b614203699a364e04b763f48f794b10a114 /tests/tcg/Makefile.qemu
parent6a9e0ef32a6b519a0c96d3dee5edc1321792c65a (diff)
tests/tcg: cleanup Makefile inclusions
Rename Makefile.probe to Makefile.prereqs and make it actually define rules for the tests. Rename Makefile to Makefile.target, since it is not a toplevel makefile. Rename Makefile.include to Makefile.qemu and disentangle it from the QEMU Makefile.target, so that it is invoked recursively by tests/Makefile.include. Tests are now placed in tests/tcg/$(TARGET). Drop the usage of TARGET_BASE_ARCH, which is ignored by everything except x86_64 and aarch64. Fix x86 tests by using -cpu max and, while at it, standardize on QEMU_OPTS for aarch64 tests too. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20190807143523.15917-3-pbonzini@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Diffstat (limited to 'tests/tcg/Makefile.qemu')
-rw-r--r--tests/tcg/Makefile.qemu96
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu
new file mode 100644
index 0000000000..7eff11d434
--- /dev/null
+++ b/tests/tcg/Makefile.qemu
@@ -0,0 +1,96 @@
+# -*- 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 per ARCH makefile, if it exists, holds extra information about
+# useful docker images or alternative compiler flags.
+
+include $(TARGET_DIR)config-target.mak
+include $(SRC_PATH)/rules.mak
+include $(wildcard \
+ $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include \
+ $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include)
+
+GUEST_BUILD=
+TCG_MAKE=../Makefile.target
+# 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_DIR) && cd tests/tcg/$(TARGET_DIR) && \
+ $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC="$(CROSS_CC_GUEST)" \
+ SRC_PATH="$(SRC_PATH)" 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
+SKIP_DOCKER_BUILD=1
+include $(SRC_PATH)/tests/docker/Makefile.include
+
+DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc \
+ --cc $(DOCKER_CROSS_COMPILER) \
+ -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_DIR) && cd tests/tcg/$(TARGET_DIR) && \
+ $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC=$(DOCKER_COMPILE_CMD) \
+ SRC_PATH="$(SRC_PATH)" 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
+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_DIR) && \
+ $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" \
+ SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \
+ "RUN", "tests for $(TARGET_NAME)")
+
+else
+guest-tests:
+ $(call quiet-command, /bin/true, "BUILD", \
+ "$(TARGET_DIR) guest-tests SKIPPED")
+
+run-guest-tests:
+ $(call quiet-command, /bin/true, "RUN", \
+ "tests for $(TARGET_DIR) SKIPPED")
+endif
+
+# It doesn't matter if these don't exits
+.PHONY: clean-guest-tests
+clean-guest-tests:
+ rm -rf tests/tcg/$(TARGET_DIR)