[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tes
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets |
Date: |
Mon, 16 Apr 2018 14:14:23 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 04/16/2018 05:53 AM, Alex Bennée wrote:
>
> Philippe Mathieu-Daudé <address@hidden> writes:
>
>> On 04/10/2018 04:39 PM, 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>
>>> ---
>>> Makefile.target | 5 +++
>>> tests/tcg/Makefile.include | 79
>>> ++++++++++++++++++++++++++++++++++++++++++++++
>>> 2 files changed, 84 insertions(+)
>>> create mode 100644 tests/tcg/Makefile.include
>>>
>>> diff --git a/Makefile.target b/Makefile.target
>>> index d0ec77a307..a30fd40257 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..cb8bb36026
>>> --- /dev/null
>>> +++ b/tests/tcg/Makefile.include
>>> @@ -0,0 +1,79 @@
>>> +# -*- 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 it if it
>>> +# exists
>>> +
>>> +ARCH_MAKEFILE=$(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include
>>> +CHECK_INCLUDE=$(wildcard $(ARCH_MAKEFILE))
>>> +
>>> +ifeq ($(ARCH_MAKEFILE),$(CHECK_INCLUDE))
>>> +include $(ARCH_MAKEFILE)
>>> +endif
>>> +
>>> +GUEST_BUILD=
>>> +
>>> +# 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 $(SRC_PATH)/tests/tcg/Makefile ARCH=$(TARGET_NAME)
>>> CC=$(CROSS_CC_GUEST)), \
>>> + "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
>>> +
>>
>> Eventually:
>>
>> DOCKER_CROSS_COMPILER ?= $(DOCKER_CROSS_COMPILER_PREFIX)-gcc
>>
>>> +DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc --user $(shell id -u) \
>>> + --cc $(DOCKER_CROSS_COMPILER) \
>>> + -i qemu:$(DOCKER_IMAGE) \
>>> + -s $(SRC_PATH) -- "
>>
>> Should we check $(DOCKER_CROSS_COMPILER) is set?
>
> Currently it's implied. It would be nice if there was an easy way just
> to fish it out of the env of the docker image as they already have it
> set there.
>
> I've been trying quite hard to ensure all the tests can just use LD (see
> the hoops I jump in i386 for this). Maybe a prefix config makes more
> sense though....
We might also need some CROSS_CFLAGS, i.e. for armeb we need to use
-mbig-endian. This would go in tests/tcg/$(TARGET_NAME)/Makefile.target
>
>>
>>> +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 $(SRC_PATH)/tests/tcg/Makefile ARCH=$(TARGET_NAME)
>>> CC=$(DOCKER_COMPILE_CMD)), \
>>> + "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)
>>> +else
>>> +guest-tests:
>>> + $(call quiet-command, /bin/true, "CROSS-BUILD", "$(TARGET_NAME)
>>> guest-tests SKIPPED")
>>> +endif
>>> +
>>> +# It doesn't mater if these don't exits
>>> +.PHONY: clean-guest-tests
>>> +clean-guest-tests:
>>> + rm -rf tests || echo "no $(TARGET_NAME) tests to remove"
>>>
- [Qemu-devel] [PATCH v1 18/24] tests/tcg/arm: fix hello-arm, (continued)
- [Qemu-devel] [PATCH v1 18/24] tests/tcg/arm: fix hello-arm, Alex Bennée, 2018/04/10
- [Qemu-devel] [PATCH v1 24/24] tests/Makefile.include: add (clean-)check-tcg targets, Alex Bennée, 2018/04/10
- [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Alex Bennée, 2018/04/10
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Philippe Mathieu-Daudé, 2018/04/15
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Philippe Mathieu-Daudé, 2018/04/15
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Alex Bennée, 2018/04/16
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Philippe Mathieu-Daudé, 2018/04/16
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets,
Philippe Mathieu-Daudé <=
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Alex Bennée, 2018/04/16
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Philippe Mathieu-Daudé, 2018/04/17
- Re: [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets, Alex Bennée, 2018/04/17
[Qemu-devel] [PATCH v1 20/24] tests/tcg: enable building for s390x, Alex Bennée, 2018/04/10
[Qemu-devel] [PATCH v1 21/24] tests/tcg: enable building for ppc64, Alex Bennée, 2018/04/10
[Qemu-devel] [PATCH v1 11/24] tests/tcg: move i386 specific tests into subdir, Alex Bennée, 2018/04/10