From patchwork Tue Apr 24 15:24:02 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: 134132 Delivered-To: patch@linaro.org Received: by 10.46.151.6 with SMTP id r6csp2422078lji; Tue, 24 Apr 2018 09:09:26 -0700 (PDT) X-Google-Smtp-Source: AIpwx490Ae/Eplkzc9VopKXhPB4OUIfpYpDViVaJpmTr5Mfdfo+YL+CqZ//rx1yHg6rPopf2d7RC X-Received: by 2002:ac8:415e:: with SMTP id e30-v6mr29124575qtm.178.1524586166425; Tue, 24 Apr 2018 09:09:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524586166; cv=none; d=google.com; s=arc-20160816; b=LvzZWLoQPr2cQRkm+az/d8HNYjtN1mmdFKJ63leLxWkiTjB4UV3WIZGIjOQfm5nYJk C/tP9k/MxzkPaqwoMufiWxl+SQzE4pZ2rW1t/+gHggjBEvgWoDgduOSXFijVCmBT8/Ue +rWtSQ/aqlEk3OQqeQRl7xAMRge7M15ym0yZQz+FVRxZDaiROnZdFVq1UJU6IpqRdR4W p25j+pliCJeNjrH86U2YxMm8RnIhMqtLHgsqhY7mhqH6XSte0HT1eyAT9JDBRmAXpMYS VI3MjMhjeg8IMCbGccvlq+erLyIQWoqXt1hVrEHf1L1L0fv8bAmSpFvc6IKoi5M/MrDB 1prA== 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=dbx/faZ49xEAzRN2NdeQ3TygqJgGoIoe2honmKQce6E=; b=mUvc3ZszVvMrNse+gy4sGFUxrgqVzcO6uFvnxUI8iGnv98yuT9i7pYtSo6Va3tdKxn Ahf0z/hnEQR4Y+W+uu6DDgVwYbmgmmZvgMy3eq0QqAP8ItYxR3BmyuvtCJD3vYpIeAQK cxjuaJ6kdM16ljMFdxPCW5Xztoht/Jv2ISX/oSuHdH3wRAN948aG45iWzvoecchBmW1j 4XJxCY4vaC2FQHhIxB8qxeQwLY7zyiTnuHP+BYLOWkvHVyRLatNsFrUBIp3wbXLBWNJo 07KNdJIgzT+K2p+aOv1bz9Z9oJOKRZ8YhfpMYWyu3KkNZXc+PgPSR0XMmsHnSIkupWEp KEkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=i9M8dIl0; 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 p13si2635250qki.371.2018.04.24.09.09.26 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 24 Apr 2018 09:09:26 -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=i9M8dIl0; 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]:59370 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fB0VR-0000uX-Ni for patch@linaro.org; Tue, 24 Apr 2018 12:09:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53702) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fB06A-0005FZ-G2 for qemu-devel@nongnu.org; Tue, 24 Apr 2018 11:43:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fB068-0000fY-SQ for qemu-devel@nongnu.org; Tue, 24 Apr 2018 11:43:18 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:34522) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fB068-0000eq-Iy for qemu-devel@nongnu.org; Tue, 24 Apr 2018 11:43:16 -0400 Received: by mail-wr0-x241.google.com with SMTP id p18-v6so31244385wrm.1 for ; Tue, 24 Apr 2018 08:43:16 -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=dbx/faZ49xEAzRN2NdeQ3TygqJgGoIoe2honmKQce6E=; b=i9M8dIl0h3xCLz6XDlEnhfpQW368FCSbm9MSXhd9YcSGXanBp2UJUDELrf1pzkzvPW CQHxjvS18qaTMZBj0SFZjO4Vt96VYQBbWrBaP+GQIR3Mz7wuDL4SMOshU2zt8GCE/40G h1eWssu1TjP/BhArkptwghMx+W2IROyL7JZC0= 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=dbx/faZ49xEAzRN2NdeQ3TygqJgGoIoe2honmKQce6E=; b=hEn+aUOgld0hkWSWfI8n5ikMhdJcTHLBlBQsOKBiMh4TQRnY0Q3bnpPIz60KinrvLF Rdxv1Pjdkn9j5C44I/fTohqhlNXaMk9+7iMqg77zL3WmLqzO5cbYH5J0oIuQA8PAg4Rr 366mULSNKieVTqPbHw4icQTFXJRoQcu4ag7oJxIvNvLvsagDaPT5B4juoD8JIlXfloj7 cSzQad6fbuGawWH5bScD8EGskDUsEC/BvVJHZAIzXNX1HPm5TxphnG4uuvg7sPxW8j6+ iBIMdM7popua9G7d8xIh/yOWCzu2Fo0FuwGKarzmLXOji28jF8Mxf2uX749mFPHlXEUF iB0Q== X-Gm-Message-State: ALQs6tDIZQGpqsTWgtfGrBaGLf9sH7PgUE9LzPfjRujJe2BQ1XIkJo9U E5x3oOOVqbbAkqUA39pwRNokjw== X-Received: by 2002:adf:9787:: with SMTP id s7-v6mr21308533wrb.61.1524584595379; Tue, 24 Apr 2018 08:43:15 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id v75-v6sm30043312wrc.65.2018.04.24.08.43.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 24 Apr 2018 08:43:11 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id D1F0C3E1714; Tue, 24 Apr 2018 16:24:08 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: peter.maydell@linaro.org, cota@braap.org, famz@redhat.com, berrange@redhat.com, f4bug@amsat.org, richard.henderson@linaro.org, balrogg@gmail.com, aurelien@aurel32.net, agraf@suse.de Date: Tue, 24 Apr 2018 16:24:02 +0100 Message-Id: <20180424152405.10304-44-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180424152405.10304-1-alex.bennee@linaro.org> References: <20180424152405.10304-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] [PATCH v3 43/46] 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: =?utf-8?q?Alex_Benn=C3=A9e?= , qemu-devel@nongnu.org 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 it's 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 --- v2 - cleaner approach to include sub makefiles - move TESTS/VPATH manipulation into sub-makefile - avoid double inclusion when TARGET_BASE_ARCH==TARGET_NAME --- tests/tcg/Makefile | 162 +++++++++++++++------------------------------ 1 file changed, 53 insertions(+), 109 deletions(-) -- 2.17.0 diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile index e12395117a..2116fea915 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile @@ -1,125 +1,69 @@ +# -*- 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/LD to have been set for +# us from the parent make as well as being passed EXTRA_CFLAGS. +# +# 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 +# The QEMU for this TARGET +QEMU=../qemu-$(TARGET_NAME) -I386_TESTS=hello-i386 \ - sha1-i386 \ - test-i386 \ - test-i386-fprem \ - # runcom - -# native i386 compilers sometimes are not biarch. assume cross-compilers are -ifneq ($(ARCH),i386) -I386_TESTS+=run-test-x86_64 +# The order we include is important. We include multiarch, base arch and finally 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 -TESTS = test_path -ifneq ($(call find-in-path, $(CC_I386)),) -TESTS += $(I386_TESTS) -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 +# Add the common build options +CFLAGS+=-Wall -O0 -g -fno-strict-aliasing +LDFLAGS+=-static +%: %.c + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) -run-runcom: runcom - -$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com +all: $(TESTS) -run-test_path: test_path - ./test_path +# +# Test Runners +# +# By default we just run the test with the appropriate QEMU for the +# target. More advanced tests may want to override the runner in their +# specific make rules. +# -# rules to compile tests +RUN_TESTS=$(patsubst %,run-%, $(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