qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v1 22/24] tests/tcg/Makefile: update to be calle


From: Alex Bennée
Subject: Re: [Qemu-devel] [PATCH v1 22/24] tests/tcg/Makefile: update to be called from Makefile.target
Date: Thu, 12 Apr 2018 09:47:51 +0100
User-agent: mu4e 1.1.0; emacs 26.1

Fam Zheng <address@hidden> writes:

> On Tue, 04/10 20:39, Alex Bennée wrote:
>> This make is now invoked from each individual target make with the
>> appropriate CC and ARCH set for each guest. It includes all the
>> multiarch tests by default as well as any tests from
>> tests/tcg/$(ARCH).
>>
>> As there may be subtle additional requirements for building some of
>> the tests it also includes tests/tcg/$(ARCH)/Makefile.target if it is
>> available. This is distinct from tests/tcg/$(ARCH)/Makefile.include
>> which is used by the parent make machinery to determine potential
>> docker targets.
>>
>> Signed-off-by: Alex Bennée <address@hidden>
>> ---
>>  tests/tcg/Makefile | 185 
>> ++++++++++++-----------------------------------------
>>  1 file changed, 42 insertions(+), 143 deletions(-)
>>
>> diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile
>> index 89e3342f3d..2bba0d2a32 100644
>> --- a/tests/tcg/Makefile
>> +++ b/tests/tcg/Makefile
>> @@ -1,156 +1,55 @@
>> --include ../../config-host.mak
>> --include $(SRC_PATH)/rules.mak
>> +# -*- Mode: makefile -*-
>> +#
>> +# TCG tests
>> +#
>> +# These are complicated by the fact we want to build them for guest
>> +# systems. This requires knowing what guests we are building and which
>> +# ones we have cross-compilers for or docker images with
>> +# cross-compilers.
>> +#
>> +# The tests themselves should be as minimal as possible as
>> +# cross-compilers don't always have a large amount of libraries
>> +# available.
>> +#
>> +# We only include the host build system for SRC_PATH and we don't
>> +# bother with the common rules.mk. We expect CC to have been set for
>> +# us from the parent make. We also expect to be in the tests build dir
>> +# for the FOO-linux-user.
>> +#
>>
>> -$(call set-vpath, $(SRC_PATH)/tests/tcg)
>> +-include ../../config-host.mak
>> +-include ../config-target.mak
>>
>> -QEMU=../../i386-linux-user/qemu-i386
>> -QEMU_X86_64=../../x86_64-linux-user/qemu-x86_64
>> -CC_X86_64=$(CC_I386) -m64
>> +# Set search path for all sources
>> +VPATH = $(SRC_PATH)/tests/tcg/multiarch
>> +TEST_SRCS = $(wildcard $(SRC_PATH)/tests/tcg/multiarch/*.c)
>>
>> -QEMU_INCLUDES += -I../..
>> -CFLAGS=-Wall -O2 -g -fno-strict-aliasing
>> -#CFLAGS+=-msse2
>> -LDFLAGS=
>> +VPATH     += $(SRC_PATH)/tests/tcg/$(ARCH)
>> +TEST_SRCS += $(wildcard $(SRC_PATH)/tests/tcg/$(ARCH)/*.c)
>>
>> -# TODO: automatically detect ARM and MIPS compilers, and run those too
>> +SRCS=$(notdir ${TEST_SRCS})
>> +TESTS=$(SRCS:.c=)
>>
>> -# runcom maps page 0, so it requires root privileges
>> -# also, pi_10.com runs indefinitely
>> +# We use what ever CC we have
>> +CFLAGS=-Wall -O0 -g -fno-strict-aliasing -static
>> +QEMU_CFLAGS=
>> +LDFLAGS=
>>
>> -I386_TESTS=hello-i386 \
>> -       linux-test \
>> -       testthread \
>> -       sha1-i386 \
>> -       test-i386 \
>> -       test-i386-fprem \
>> -       test-mmap \
>> -       # runcom
>> +# The per ARCH target makefile which might add specific compiler flags
>> +# for some compilation targets.
>>
>> -# native i386 compilers sometimes are not biarch.  assume cross-compilers 
>> are
>> -ifneq ($(ARCH),i386)
>> -I386_TESTS+=run-test-x86_64
>> -endif
>> +EXTRA_MAKEFILE=$(SRC_PATH)/tests/tcg/$(ARCH)/Makefile.target
>> +CHECK_INCLUDE=$(wildcard $(EXTRA_MAKEFILE))
>>
>> -TESTS = test_path
>> -ifneq ($(call find-in-path, $(CC_I386)),)
>> -TESTS += $(I386_TESTS)
>> +ifeq ($(EXTRA_MAKEFILE),$(CHECK_INCLUDE))
>> +include $(EXTRA_MAKEFILE)
>>  endif
>>
>> -all: $(patsubst %,run-%,$(TESTS))
>> -test: all
>> -
>> -# rules to run tests
>> -
>> -.PHONY: $(patsubst %,run-%,$(TESTS))
>> -
>> -run-%: %
>> -    -$(QEMU) ./$*
>> -
>> -run-hello-i386: hello-i386
>> -run-linux-test: linux-test
>> -run-testthread: testthread
>> -run-sha1-i386: sha1-i386
>> -
>> -run-test-i386: test-i386
>> -    ./test-i386 > test-i386.ref
>> -    -$(QEMU) test-i386 > test-i386.out
>> -    @if diff -u test-i386.ref test-i386.out ; then echo "Auto Test OK"; fi
>> -
>> -run-test-i386-fprem: test-i386-fprem
>> -    ./test-i386-fprem > test-i386-fprem.ref
>> -    -$(QEMU) test-i386-fprem > test-i386-fprem.out
>> -    @if diff -u test-i386-fprem.ref test-i386-fprem.out ; then echo "Auto 
>> Test OK"; fi
>> -
>> -run-test-x86_64: test-x86_64
>> -    ./test-x86_64 > test-x86_64.ref
>> -    -$(QEMU_X86_64) test-x86_64 > test-x86_64.out
>> -    @if diff -u test-x86_64.ref test-x86_64.out ; then echo "Auto Test OK"; 
>> fi
>> -
>> -run-test-mmap: test-mmap
>> -    -$(QEMU) ./test-mmap
>> -    -$(QEMU) -p 8192 ./test-mmap 8192
>> -    -$(QEMU) -p 16384 ./test-mmap 16384
>> -    -$(QEMU) -p 32768 ./test-mmap 32768
>> -
>> -run-runcom: runcom
>> -    -$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com
>> -
>> -run-test_path: test_path
>> -    ./test_path
>> -
>> -# rules to compile tests
>> -
>> -test_path: test_path.o
>> -
>> -test_path.o: test_path.c
>> -
>> -hello-i386: hello-i386.c
>> -    $(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
>> -    strip $@
>> -
>> -testthread: testthread.c
>> -    $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lpthread
>> -
>> -# i386/x86_64 emulation test (test various opcodes) */
>> -test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S \
>> -           test-i386.h test-i386-shift.h test-i386-muldiv.h
>> -    $(CC_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ \
>> -              $(<D)/test-i386.c $(<D)/test-i386-code16.S 
>> $(<D)/test-i386-vm86.S -lm
>> -
>> -test-i386-fprem: test-i386-fprem.c
>> -    $(CC_I386) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ $^
>> -
>> -test-x86_64: test-i386.c \
>> -           test-i386.h test-i386-shift.h test-i386-muldiv.h
>> -    $(CC_X86_64) $(QEMU_INCLUDES) $(CFLAGS) $(LDFLAGS) -o $@ 
>> $(<D)/test-i386.c -lm
>> -
>> -# generic Linux and CPU test
>> -linux-test: linux-test.c
>> -    $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lm
>> -
>> -# vm86 test
>> -runcom: runcom.c
>> -    $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
>> -
>> -test-mmap: test-mmap.c
>> -    $(CC_I386) -m32 $(CFLAGS) -Wall -O2 $(LDFLAGS) -o $@ $<
>> -
>> -# speed test
>> -sha1-i386: sha1.c
>> -    $(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
>> -
>> -sha1: sha1.c
>> -    $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
>> -
>> -speed: sha1 sha1-i386
>> -    time ./sha1
>> -    time $(QEMU) ./sha1-i386
>> -
>> -# arm test
>> -hello-arm: hello-arm.o
>> -    arm-linux-ld -o $@ $<
>> -
>> -hello-arm.o: hello-arm.c
>> -    arm-linux-gcc -Wall -g -O2 -c -o $@ $<
>> -
>> -test-arm-iwmmxt: test-arm-iwmmxt.s
>> -    cpp < $< | arm-linux-gnu-gcc -Wall -static -march=iwmmxt -mabi=aapcs -x 
>> assembler - -o $@
>> -
>> -# MIPS test
>> -hello-mips: hello-mips.c
>> -    mips-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC -mabi=32 
>> -Wall -Wextra -g -O2 -o $@ $<
>> -
>> -hello-mipsel: hello-mips.c
>> -    mipsel-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC -mabi=32 
>> -Wall -Wextra -g -O2 -o $@ $<
>> +testthread: LDFLAGS=-lpthread
>
> I'm a bit curious why only testthread is left in this file but others
> are gone.

testthread is the only one that needs additional flags. However I could
put those rules in a multiarch/Makefile.target if you want?

>
> Fam
>
>>
>> -# testsuite for the CRIS port.
>> -test-cris:
>> -    $(MAKE) -C cris check
>> +%: %.c
>> +    $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
>>
>> -# testsuite for the LM32 port.
>> -test-lm32:
>> -    $(MAKE) -C lm32 check
>> +all: $(TESTS)
>>
>> -clean:
>> -    rm -f *~ *.o test-i386.out test-i386.ref \
>> -           test-x86_64.log test-x86_64.ref qruncom $(TESTS)
>> +# There is no clean target, the calling make just rm's the tests build dir
>> --
>> 2.16.2
>>


--
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]