|
@@ -2,20 +2,23 @@
|
|
|
#
|
|
|
# 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.
|
|
|
+# 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 $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include
|
|
|
--include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include
|
|
|
+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=$(SRC_PATH)/tests/tcg/Makefile
|
|
|
+TCG_MAKE=../Makefile.target
|
|
|
# Support installed Cross Compilers
|
|
|
|
|
|
ifdef CROSS_CC_GUEST
|
|
@@ -23,9 +26,9 @@ 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) \
|
|
|
+ (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)")
|
|
|
|
|
@@ -39,20 +42,20 @@ 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) -- "
|
|
|
-DOCKER_PREREQ=docker-image-$(DOCKER_IMAGE)
|
|
|
|
|
|
.PHONY: docker-build-guest-tests
|
|
|
-docker-build-guest-tests: $(DOCKER_PREREQ)
|
|
|
+docker-build-guest-tests: docker-image-$(DOCKER_IMAGE)
|
|
|
$(call quiet-command, \
|
|
|
- (mkdir -p tests && cd tests && \
|
|
|
- $(MAKE) -f $(TCG_MAKE) CC=$(DOCKER_COMPILE_CMD) \
|
|
|
- BUILD_STATIC=y \
|
|
|
+ (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)")
|
|
|
|
|
@@ -62,27 +65,32 @@ 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 qemu-$(subst y,system-,$(CONFIG_SOFTMMU))$(TARGET_NAME)
|
|
|
+run-guest-tests: guest-tests
|
|
|
$(call quiet-command, \
|
|
|
- (cd tests && $(MAKE) -f $(TCG_MAKE) SPEED=$(SPEED) run), \
|
|
|
+ (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_NAME) guest-tests SKIPPED")
|
|
|
+ "$(TARGET_DIR) guest-tests SKIPPED")
|
|
|
|
|
|
run-guest-tests:
|
|
|
$(call quiet-command, /bin/true, "RUN", \
|
|
|
- "tests for $(TARGET_NAME) SKIPPED")
|
|
|
+ "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 || echo "no $(TARGET_NAME) tests to remove"
|
|
|
+ rm -rf tests/tcg/$(TARGET_DIR)
|