All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: berrange@redhat.com, famz@redhat.com, cota@braap.org,
	"Alex Bennée" <alex.bennee@linaro.org>
Subject: [Qemu-devel] [PATCH v1 22/24] tests/tcg/Makefile: update to be called from Makefile.target
Date: Tue, 10 Apr 2018 20:39:17 +0100	[thread overview]
Message-ID: <20180410193919.28026-23-alex.bennee@linaro.org> (raw)
In-Reply-To: <20180410193919.28026-1-alex.bennee@linaro.org>

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 <alex.bennee@linaro.org>
---
 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
 
-# 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

  parent reply	other threads:[~2018-04-10 19:44 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-10 19:38 [Qemu-devel] [PATCH v1 00/24] fix building of tests/tcg Alex Bennée
2018-04-10 19:38 ` [Qemu-devel] [PATCH v1 01/24] configure: add test for docker availability Alex Bennée
2018-04-11  8:50   ` Fam Zheng
2018-04-11 10:58     ` Alex Bennée
2018-04-11 12:59       ` Fam Zheng
2018-04-10 19:38 ` [Qemu-devel] [PATCH v1 02/24] configure: add support for --cross-cc-FOO Alex Bennée
2018-04-16  2:04   ` Philippe Mathieu-Daudé
2018-04-16  8:49     ` Alex Bennée
2018-04-10 19:38 ` [Qemu-devel] [PATCH v1 03/24] configure: move i386_cc to cross_cc_i386 Alex Bennée
2018-04-16  0:01   ` Philippe Mathieu-Daudé
2018-04-16  9:02     ` Alex Bennée
2018-04-16 10:30       ` Philippe Mathieu-Daudé
2018-04-10 19:38 ` [Qemu-devel] [PATCH v1 04/24] Makefile: Rename TARGET_DIRS to TARGET_LIST Alex Bennée
2018-04-12 14:33   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 05/24] docker: Add "cc" subcommand Alex Bennée
2018-04-16  1:48   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 06/24] docker: extend "cc" command to accept compiler Alex Bennée
2018-04-12  8:07   ` Fam Zheng
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 07/24] docker: allow "cc" command to run in user context Alex Bennée
2018-04-12  8:08   ` Fam Zheng
2018-04-16  0:02   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 08/24] docker: Makefile.include introduce DOCKER_SCRIPT Alex Bennée
2018-04-11 15:10   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 09/24] tests/tcg: move architecture independent tests into subdir Alex Bennée
2018-04-11 10:22   ` Thomas Huth
2018-04-16  0:05   ` Philippe Mathieu-Daudé
2018-04-16  9:01     ` Alex Bennée
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 10/24] tests/tcg/multiarch: Build fix for linux-test Alex Bennée
2018-04-11 10:25   ` Thomas Huth
     [not found]   ` <4bc22552-25b4-2a04-dc73-dc17201a2251@amsat.org>
     [not found]     ` <3b680ef4-3304-99d5-75ef-c4d5d570bb3a@amsat.org>
2018-04-16  8:51       ` Alex Bennée
2018-05-25 10:21       ` Alex Bennée
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 11/24] tests/tcg: move i386 specific tests into subdir Alex Bennée
2018-04-11 10:30   ` Thomas Huth
2018-04-16  0:08   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 12/24] tests/tcg/i386: Build fix for hello-i386 Alex Bennée
2018-04-11 10:30   ` Thomas Huth
2018-04-16  0:11   ` Philippe Mathieu-Daudé
2018-04-16  8:57     ` Alex Bennée
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 13/24] tests/tcg/i386: move test-i386-sse.c to tests/tcg/x86_64/test-sse.c Alex Bennée
2018-04-11 15:33   ` Thomas Huth
2018-04-11 16:19     ` Alex Bennée
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 14/24] tests/tcg/i386: fix test-i386 Alex Bennée
2018-04-11 15:36   ` Thomas Huth
2018-04-16  0:13   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 15/24] tests/tcg/i368: fix hello-i386 Alex Bennée
2018-04-11 15:38   ` Thomas Huth
2018-04-16  0:14   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 16/24] tests/tcg/i386: fix test-i386-fprem Alex Bennée
2018-04-11 15:14   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 17/24] tests/tcg: move ARM specific tests into subdir Alex Bennée
2018-04-11 15:40   ` Thomas Huth
2018-04-16  0:14   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 18/24] tests/tcg/arm: fix hello-arm Alex Bennée
2018-04-11 15:42   ` Thomas Huth
2018-04-16  1:28   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 19/24] tests/tcg: move MIPS specific tests into subdir Alex Bennée
2018-04-16  1:02   ` Philippe Mathieu-Daudé
2018-04-16  1:33     ` Philippe Mathieu-Daudé
2018-04-16  8:56     ` Alex Bennée
2018-04-16 10:21       ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 20/24] tests/tcg: enable building for s390x Alex Bennée
2018-04-11  8:36   ` Cornelia Huck
2018-04-16  1:33   ` Philippe Mathieu-Daudé
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 21/24] tests/tcg: enable building for ppc64 Alex Bennée
2018-04-16  1:36   ` Philippe Mathieu-Daudé
2018-04-16  8:54     ` Alex Bennée
2018-04-10 19:39 ` Alex Bennée [this message]
2018-04-12  8:13   ` [Qemu-devel] [PATCH v1 22/24] tests/tcg/Makefile: update to be called from Makefile.target Fam Zheng
2018-04-12  8:47     ` Alex Bennée
2018-04-12  9:14       ` Fam Zheng
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 23/24] Makefile.target: add (clean-)guest-tests targets Alex Bennée
2018-04-16  1:12   ` Philippe Mathieu-Daudé
2018-04-16  1:52   ` Philippe Mathieu-Daudé
2018-04-16  8:53     ` Alex Bennée
2018-04-16 10:24       ` Philippe Mathieu-Daudé
2018-04-16 17:14       ` Philippe Mathieu-Daudé
2018-04-16 20:08         ` Alex Bennée
2018-04-17 14:41           ` Philippe Mathieu-Daudé
2018-04-17 15:09             ` Alex Bennée
2018-04-10 19:39 ` [Qemu-devel] [PATCH v1 24/24] tests/Makefile.include: add (clean-)check-tcg targets Alex Bennée
2018-04-16  1:53   ` Philippe Mathieu-Daudé
2018-04-10 20:07 ` [Qemu-devel] [PATCH v1 00/24] fix building of tests/tcg no-reply
2018-04-16 10:37 ` Philippe Mathieu-Daudé

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180410193919.28026-23-alex.bennee@linaro.org \
    --to=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=cota@braap.org \
    --cc=famz@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.