From patchwork Thu Jun 21 06:25:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 139476 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp1689984lji; Wed, 20 Jun 2018 23:50:45 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLUshlHQLmaL4dQHtqt5fo0ralFcdMR2Xzs9XBhe/Q6+8+aYys//QD4A8J5VeevRnFWQUDv X-Received: by 2002:ac8:298a:: with SMTP id 10-v6mr21968050qts.383.1529563845193; Wed, 20 Jun 2018 23:50:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529563845; cv=none; d=google.com; s=arc-20160816; b=JbG2T6SDGS4+O6w/rQCrhnLvVrU0A4z5ISoSOyY+ko0HvQwDIoTMC5w1QMEmLUPBgP kkcRURk2uyL7w6l4twCP+Ak3+wssWH7g85H6DLrW5n9JUVO55XfkPGpQ+3kkwlaMbFSy OC37/XumyBvtw0j9l/yLrRD88ShluiZqBvsg4/lZHAuifn4cdMB0MzpIQgocXtTfoSk/ rVv8Zr3DnfGSkMIoTC05hYcy9iKXD+fIH8gtGeVWshox5uef+31IIdzADIn3WDy27mCw s1sF+Idvnl/0QclhZhXIDaQYBAOcDmMgpZa+hBCctP+U27qk9a1s1zdKhsyxkJI/esj1 KggA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:arc-authentication-results; bh=eLI94YKIawZV3njpmxF7vvO57hdlIlaMUKbnIauz/qY=; b=ubeB1SeRYGql43tmYcTdTlpxV5SNwb0n5cGEjkqE1YGreVUapFt62njOcVNXEA6vvH qMhIv5Bxj7e1PiwHHxpssCtoEwPWWwLGmo80hpnwU1rGDFihTMUfwoaqBb27/QvHkb0x 6wAy00yGWVyyZDID1S0MgivZtMViSRjZHPziXIzgOwlM8NhRQqaWMtfzWMqdVRGWt7yf cZz/jhw0jBtpG2k5zDR4f5AHc/IA9Pj0P+NcvroIKw/rNfi2ayhXNmMlnqdDc0owmo50 BdEILmUoi2N9MRV/B9zZPMhLeKCrYgGGnDe1P0k9gtwnsRd5llyarPSlZdi4FIw2c9RH OIrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Jh9h5YtU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id h14-v6si3772980qvo.159.2018.06.20.23.50.44 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 20 Jun 2018 23:50:45 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=Jh9h5YtU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:53369 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVtQa-0003LV-JZ for patch@linaro.org; Thu, 21 Jun 2018 02:50:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54553) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fVt8a-0005oj-1N for qemu-devel@nongnu.org; Thu, 21 Jun 2018 02:32:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fVt8Y-0003w9-CS for qemu-devel@nongnu.org; Thu, 21 Jun 2018 02:32:08 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:38337) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fVt8Y-0003uh-32 for qemu-devel@nongnu.org; Thu, 21 Jun 2018 02:32:06 -0400 Received: by mail-wr0-x241.google.com with SMTP id e18-v6so1837024wrs.5 for ; Wed, 20 Jun 2018 23:32:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eLI94YKIawZV3njpmxF7vvO57hdlIlaMUKbnIauz/qY=; b=Jh9h5YtU2vHVdBTW05m82Wjbtgvp6V0MMImKTotRK5zvKqnqMQyhsUhWdpD4B7lYKa GlaqyQQwAx8dzPg9igd69wSCprF7KigeCtEyKcJR2n1trFSuoYU6L1+vWVocMBQVO+s8 5HKwowLeof21TQtfzpz5QmkcU2AljFa+EgUPA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eLI94YKIawZV3njpmxF7vvO57hdlIlaMUKbnIauz/qY=; b=Le0RMt+9kd7IrruS5dUD2jGTiXqkGGycbSM0YR5o5bFqUcJ0hUq0e8Ea16oq+EXmkp qzFBwxOs21SMyeLw46zgrXNDQpyQsa91etsLdAMBMmqNiNJ9q7Go6Ta0PHdWZM0BcHQM A+r+CIYscBeLao5dUQ786SQZwhZ1N/oRg0MoKaA9XMyjTyr34JDVMr+LF9ZizNetz+aG vn9rEAlWqr5qLve5h42mFhScHUZVOZ3ZWjT//+5FIxpyQBRIJuwS1JsBeHd+lxJPOdBZ v/Ncx1hx3Xm+gl6KcwsGiwUlJNnEBWjHrCUARcp1Eh84Bqwn1HOcKW0cWuP2H4J2lnfT D/qg== X-Gm-Message-State: APt69E2tO3k+otajCMsUtRcEG0Oil+HLrivwt0DVhxuyGiKdG2m6AjmK F8UWylbb4hqjUbc6cgtenvij9g== X-Received: by 2002:adf:e20b:: with SMTP id j11-v6mr20644163wri.205.1529562725036; Wed, 20 Jun 2018 23:32:05 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id g205-v6sm5345383wmg.43.2018.06.20.23.31.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 20 Jun 2018 23:32:02 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 1DDF53E14F3; Thu, 21 Jun 2018 07:26:09 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org Date: Thu, 21 Jun 2018 07:25:52 +0100 Message-Id: <20180621062605.941-45-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180621062605.941-1-alex.bennee@linaro.org> References: <20180621062605.941-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::241 Subject: [Qemu-devel] [PULL v2 44/57] tests/tcg/Makefile: update to be called from Makefile.target X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: agraf@suse.de, =?utf-8?q?Alex_Benn=C3=A9e?= , richard.henderson@linaro.org, qemu-devel@nongnu.org, f4bug@amsat.org, cota@braap.org, famz@redhat.com, aurelien@aurel32.net Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" This make is now invoked from each individual target make with the appropriate CC and EXTRA_CFLAGS set for each guest. It then includes additional Makefile.targets from: - tests/tcg/multiarch (always) - tests/tcg/$(TARGET_BASE_ARCH) (if available) - tests/tcg/$(TARGET_NAME) The order is important as the later Makefile's may want to suppress TESTS from its base arch profile. Each included Makefile.target is responsible for adding TESTS as well as defining any special build instructions for individual tests. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé -- 2.17.1 diff --git a/MAINTAINERS b/MAINTAINERS index de1ae8423e..4c955425b9 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2156,6 +2156,12 @@ W: https://travis-ci.org/qemu/qemu W: https://app.shippable.com/github/qemu/qemu W: http://patchew.org/QEMU/ +Guest Test Compilation Support +M: Alex Bennée +R: Philippe Mathieu-Daudé +F: tests/tcg/Makefile +L: qemu-devel@nongnu.org + Documentation ------------- Build system architecture diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index e12395117a..e7dbcdb5bf 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -1,125 +1,94 @@ +# -*- 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 the following: +# +# CC - the C compiler command +# EXTRA_CFLAGS - any extra CFLAGS +# BUILD_STATIC - are we building static binaries +# +# By default all tests are statically compiled but some host systems +# may not package static libraries by default. If an external +# cross-compiler can only build dynamic libraries the user might need +# to make extra efforts to ensure ld.so can link at runtime when the +# tests are run. +# +# We also accept SPEED=slow to enable slower running tests +# +# We also expect to be in the tests build dir for the FOO-linux-user. +# + -include ../../config-host.mak --include $(SRC_PATH)/rules.mak +-include ../config-target.mak -$(call set-vpath, $(SRC_PATH)/tests/tcg) +quiet-command = $(if $(V),$1,$(if $(2),@printf " %-7s %s\n" $2 $3 && $1, @$1)) -QEMU=../../i386-linux-user/qemu-i386 -QEMU_X86_64=../../x86_64-linux-user/qemu-x86_64 -CC_X86_64=$(CC_I386) -m64 +# Tests we are building +TESTS= -QEMU_INCLUDES += -I../.. -CFLAGS=-Wall -O2 -g -fno-strict-aliasing -#CFLAGS+=-msse2 +# Start with a blank slate, the build targets get to add stuff first +CFLAGS= +QEMU_CFLAGS= LDFLAGS= -# TODO: automatically detect ARM and MIPS compilers, and run those too - -# runcom maps page 0, so it requires root privileges -# also, pi_10.com runs indefinitely - -I386_TESTS=hello-i386 \ - sha1-i386 \ - test-i386 \ - test-i386-fprem \ - # runcom +# The QEMU for this TARGET +QEMU=../qemu-$(TARGET_NAME) -# native i386 compilers sometimes are not biarch. assume cross-compilers are -ifneq ($(ARCH),i386) -I386_TESTS+=run-test-x86_64 +# If TCG debugging is enabled things are a lot slower +ifeq ($(CONFIG_DEBUG_TCG),y) +TIMEOUT=45 +else +TIMEOUT=15 endif -TESTS = test_path -ifneq ($(call find-in-path, $(CC_I386)),) -TESTS += $(I386_TESTS) +# The order we include is important. We include multiarch, base arch +# and finally arch if it's not the same as base arch. +-include $(SRC_PATH)/tests/tcg/multiarch/Makefile.target +-include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.target +ifneq ($(TARGET_BASE_ARCH),$(TARGET_NAME)) +-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.target endif -all: $(patsubst %,run-%,$(TESTS)) -test: all - -# rules to run tests - -.PHONY: $(patsubst %,run-%,$(TESTS)) - -run-%: % - -$(QEMU) ./$* - -run-hello-i386: hello-i386 -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-runcom: runcom - -$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com - -run-test_path: test_path - ./test_path - -# rules to compile tests - -hello-i386: hello-i386.c - $(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $< - strip $@ - -# 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 $@ \ - $( $<.out, \ + "TEST", "$< on $(TARGET_NAME)") -# testsuite for the LM32 port. -test-lm32: - $(MAKE) -C lm32 check +.PHONY: run +run: $(RUN_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