[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)gu
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)guest-tests targets |
Date: |
Sun, 10 Jun 2018 23:15:02 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
On 06/08/2018 09:33 AM, Alex Bennée wrote:
> Now all the build infrastructure is in place we can build tests for
> each guest that we support. That support mainly depends on having
> cross compilers installed or docker setup. To keep all the logic for
> that together we put the rules in tests/tcg/Makefile.include and
> include it from the main Makefile.target.
>
> Signed-off-by: Alex Bennée <address@hidden>
>
> ---
> v4
> - pulled Makefile.include bits from next patch
> - added qemu-$(TARGET_NAME) dependency for running tests
> - accept SPEED parameter to run slow tests
> - pass BUILD_STATIC
> - update MAINTAINERS
> v6
> - bare make -> $(MAKE) for sub-makes
> ---
> MAINTAINERS | 1 +
> Makefile.target | 5 +++
> tests/tcg/Makefile.include | 88 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 94 insertions(+)
> create mode 100644 tests/tcg/Makefile.include
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 4761f8cab4..6c1eca3a1c 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -2147,6 +2147,7 @@ W: http://patchew.org/QEMU/
> Guest Test Compilation Support
> M: Alex Bennée <address@hidden>
> F: tests/tcg/Makefile
> +F: tests/tcg/Makefile.include
> L: address@hidden
>
> Documentation
> diff --git a/Makefile.target b/Makefile.target
> index dad2cf8778..a9d8928f96 100644
> --- a/Makefile.target
> +++ b/Makefile.target
> @@ -36,6 +36,11 @@ endif
> PROGS=$(QEMU_PROG) $(QEMU_PROGW)
> STPFILES=
>
> +# Makefile Tests
> +ifdef CONFIG_USER_ONLY
> +include $(SRC_PATH)/tests/tcg/Makefile.include
> +endif
> +
> config-target.h: config-target.h-timestamp
> config-target.h-timestamp: config-target.mak
>
> diff --git a/tests/tcg/Makefile.include b/tests/tcg/Makefile.include
> new file mode 100644
> index 0000000000..4851df0951
> --- /dev/null
> +++ b/tests/tcg/Makefile.include
> @@ -0,0 +1,88 @@
> +# -*- Mode: makefile -*-
> +#
> +# TCG tests (per-target rules)
> +#
> +# This Makefile fragement 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)), \
> + "CROSS-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)), \
> + "CROSS-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, "CROSS-BUILD", \
> + "$(TARGET_NAME) guest-tests SKIPPED")
> +
> +run-guest-tests:
> + $(call quiet-command, /bin/true, "RUN-TESTS", \
> + "for $(TARGET_NAME) SKIPPED")
> +endif
> +
> +# It doesn't mater if these don't exits
"matter"?
> +.PHONY: clean-guest-tests
> +clean-guest-tests:
> + rm -rf tests || echo "no $(TARGET_NAME) tests to remove"
>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>
- [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds, (continued)
- [Qemu-devel] [PATCH v6 47/49] tests: add top-level make dependency for docker builds, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 43/49] tests/Makefile.include: add [build|clean|check]-tcg targets, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 18/49] tests/tcg/x86_64: add Makefile.target, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 31/49] tests/tcg: enable building for Alpha, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 25/49] tests/tcg/arm: add fcvt test cases for AArch32/64, Alex Bennée, 2018/06/08
- [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)guest-tests targets, Alex Bennée, 2018/06/08
- Re: [Qemu-devel] [PATCH v6 42/49] Makefile.target: add (clean-/build-)guest-tests targets,
Philippe Mathieu-Daudé <=
- Re: [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg, no-reply, 2018/06/08
- Re: [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg, Philippe Mathieu-Daudé, 2018/06/10
- Re: [Qemu-devel] [PATCH v6 00/49] fix building of tests/tcg, Philippe Mathieu-Daudé, 2018/06/10