From patchwork Fri May 25 14:19:12 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: 136921 Delivered-To: patch@linaro.org Received: by 2002:a2e:9706:0:0:0:0:0 with SMTP id r6-v6csp3671975lji; Fri, 25 May 2018 07:35:36 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJajHEG++dovmix+9l255BWrJjxo/oRV7jymzq4nTbcH7OdRyDnVB+Fr+zP4vQaFKfvclwD X-Received: by 2002:ac8:903:: with SMTP id t3-v6mr2431972qth.13.1527258935984; Fri, 25 May 2018 07:35:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527258935; cv=none; d=google.com; s=arc-20160816; b=DbCXjjTwQlA9/k3VUmpuxego1qLM4dOUTeAryHVgHln/lsZjtuchdNCKP36LoUu/Ou dkIPMxyWrqOX3mgkBOd1561IV2BFHLFIrVVpF7xZa10e7pxYmSxxkStyvYka64BX5Dn3 5TsK2fSX1yfh1z3+Cg2fIMp2XrYGlhOXLVFy/RdnrfBTG1RFQUNBYnItC7YGxCljodAA IqVCLw4L+/juCr8t6a8qbkd4FCVnSEplI3RXzM0QlNSpdDjeAQBIIFrTrE/E3E6oVIqD GxdEQ0e9nXLbGDBNl068894pEBR79FlPFhgYqcEhPKqu4vhiHnHbBMBC42Ilb5KsnNsF fXUQ== 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=2i4kdHRWX4vaes+RofRwESoEH/j3mZSphzGKeHkEYPM=; b=N/UYZ/uJIO5FLVSeFG+1Ov2nWjJQhYuZydlU3Kndvh0y9/b6+vSZmM08xNSqkhKjKZ LLRrOYB/NdXd1+z5dromuuPVGPBqj/SpEjlP4tLQxVMocaOYjq7po10pXu09xwfbmCMP 8dwfG6q9Tmw3bwEVRsM4TXv9qhaCSau7feo6DVmMm8mw7yhE2z5o/lFXiAEru/SnaK7q 3ottks1JNw+PXlMZnHLZkQimUhbpjNTd5sSPruOW4KAmjN5iaQQChO3CJpdLfJFwBaj/ TyOrcyYL8WdTX6AUzPdfkjy6ZL6DOveuP0U52fuxk/KwRV7Qt0XJatigigg17tD6TL5P x3KA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=XIxnbgA/; 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 q23-v6si1501707qta.249.2018.05.25.07.35.35 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 25 May 2018 07:35:35 -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=XIxnbgA/; 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]:44382 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fMDoc-0005w4-Pg for patch@linaro.org; Fri, 25 May 2018 10:35:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45484) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fMDeK-0005kL-0l for qemu-devel@nongnu.org; Fri, 25 May 2018 10:24:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fMDeI-0003tt-BL for qemu-devel@nongnu.org; Fri, 25 May 2018 10:24:56 -0400 Received: from mail-wr0-x241.google.com ([2a00:1450:400c:c0c::241]:46278) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fMDeI-0003tW-1N for qemu-devel@nongnu.org; Fri, 25 May 2018 10:24:54 -0400 Received: by mail-wr0-x241.google.com with SMTP id x9-v6so9571023wrl.13 for ; Fri, 25 May 2018 07:24:53 -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=2i4kdHRWX4vaes+RofRwESoEH/j3mZSphzGKeHkEYPM=; b=XIxnbgA/gwYzL1kEJ8Do9qtrXWQmXLoE75iQROHICc+P3cIi0VsHxKjGMVACHVCjpj VDYnzqcuc1wxoZMt9EgsO5VJ5gpzbzSLyzekSdKGFjVwiONVjkukD2QV2m9sXGuHw/n+ ysmK+wjoZNeZJvshx0HzHUsU6wgOox0p6PE0E= 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=2i4kdHRWX4vaes+RofRwESoEH/j3mZSphzGKeHkEYPM=; b=c8uMG4TEVatG/AL8MSLkR2jK8Dx9kt5aUaOeCIrw3PD7oegIgmexV7F4Ocg8WMw7Yc 9GRUZDk7KGhuH4J47g7I07713Jcv0TSdlKcrl8bymxf6tWaZeTWgdU6cjDOZL9Qr+Hub 8TaGdXuC+ahdxTkm2r3D08yCHYE/mMYfeSG/bzu06nl1Qw/ClS4VaFKwUhzvj3N2h4jb BYvEGVfnwmfQQ+blug9jJ1lsYavoli5nRBAah7SqIKyvYd2LN33yf4EMgKFHYz8hbkB6 MN/POjO/xeNFCqjjZvabWIcSWfYM/1mHFzuNJdGi4ulIvDkgvx5VvR7i6e6JUkVgRx1I mQdg== X-Gm-Message-State: ALKqPwfmU16s+JgtL65Qcr2YhMdlGQv9jgZR2DgNGCtyD11lYmfp2V0w WCniqX0j+hU6HEvvqK8QD+2v1Q== X-Received: by 2002:adf:9f4a:: with SMTP id f10-v6mr2252175wrg.216.1527258292926; Fri, 25 May 2018 07:24:52 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id i26-v6sm5986652wmb.19.2018.05.25.07.24.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 25 May 2018 07:24:49 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id BB02B3E08E4; Fri, 25 May 2018 15:19:15 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: 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: Fri, 25 May 2018 15:19:12 +0100 Message-Id: <20180525141915.6497-7-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180525141915.6497-1-alex.bennee@linaro.org> References: <20180525133851.27161-1-alex.bennee@linaro.org> <20180525141915.6497-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 v5 46/49] Makefile.target: add (clean-/build-)guest-tests targets 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" 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 --- v4 - pulled Makefile.include bits from next patch - added qemu-$(TARGET_NAME) dependency for running tests - accept SPEED parameter to run slow tests - pass BUILD_STATIC - update MAINTAINERS --- MAINTAINERS | 1 + Makefile.target | 5 +++ tests/tcg/Makefile.include | 88 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 tests/tcg/Makefile.include -- 2.17.0 diff --git a/MAINTAINERS b/MAINTAINERS index bfa8d0fb9c..e575bad174 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2141,6 +2141,7 @@ W: http://patchew.org/QEMU/ Guest Test Compilation Support M: Alex Bennée F: tests/tcg/Makefile +F: tests/tcg/Makefile.include L: qemu-devel@nongnu.org Documentation 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..fbefc8b23b --- /dev/null +++ b/tests/tcg/Makefile.include @@ -0,0 +1,88 @@ +# -*- 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 $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include +-include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include + +GUEST_BUILD= +TCG_MAKE=$(SRC_PATH)/tests/tcg/Makefile +# 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 $(TCG_MAKE) CC=$(CROSS_CC_GUEST) \ + BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \ + EXTRA_CFLAGS=$(CROSS_CC_GUEST_CFLAGS)), \ + "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 + +DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc --user $(shell id -u) \ + --cc $(DOCKER_CROSS_COMPILER) \ + -i qemu:$(DOCKER_IMAGE) \ + -s $(SRC_PATH) -- " +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 $(TCG_MAKE) CC=$(DOCKER_COMPILE_CMD) \ + BUILD_STATIC=y \ + EXTRA_CFLAGS=$(DOCKER_CROSS_COMPILER_CFLAGS)), \ + "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) + +run-guest-tests: guest-tests qemu-$(TARGET_NAME) + $(call quiet-command, \ + (cd tests && make -f $(TCG_MAKE) SPEED=$(SPEED) run), \ + "RUN-TESTS", "for $(TARGET_NAME)") + +else +guest-tests: + $(call quiet-command, /bin/true, "CROSS-BUILD", \ + "$(TARGET_NAME) guest-tests SKIPPED") + +run-guest-tests: + $(call quiet-command, /bin/true, "RUN-TESTS", \ + "for $(TARGET_NAME) 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"