From patchwork Wed Aug 7 14:35:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 11082297 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 27DF714E5 for ; Wed, 7 Aug 2019 14:36:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1928928644 for ; Wed, 7 Aug 2019 14:36:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0D137286D3; Wed, 7 Aug 2019 14:36:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id F133B28644 for ; Wed, 7 Aug 2019 14:36:00 +0000 (UTC) Received: from localhost ([::1]:41918 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN2l-0004eR-Va for patchwork-qemu-devel@patchwork.kernel.org; Wed, 07 Aug 2019 10:35:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41740) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN2H-0003Wl-KS for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hvN2G-0006b2-Ho for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:29 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:51472) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hvN2G-0006aP-A2 for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:28 -0400 Received: by mail-wm1-x332.google.com with SMTP id 207so301521wma.1 for ; Wed, 07 Aug 2019 07:35:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=17S8+srOfxdrNTILDf4H97ECt1wzvAyOrkiP+8O9a4E=; b=uAMd6s8zvT8O9YKfO0CKczpOpo5SW8ErgsFw6sLovdNkx6b0uzfJ8vVKt+hJIowx0X 7ff5MuTW2MyeOOGnas5STSIKgzv565qTUhpRsqDKHOhVM5M6WHFFxofxWyUJuaFPxgCz ZFlRFAitu8PdhugYNkfIQV8YbQ2MHC2nhnDeDR9x4i+EcsP19i9O7hIc9TFpY5uKp8/I 09hjxTjWCYS2I48f9PFJ0LGIiBeT/EdmDGWy1q17ufbZty8G5vjfQqwQSvYubXPr0ZqO dPv+6LU6o/qklpqyHWNPqUH7jaB+XFK18PDaBq3XGBD0rMVsGu/ZnEKJ8gWHa4UEDliR JQwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=17S8+srOfxdrNTILDf4H97ECt1wzvAyOrkiP+8O9a4E=; b=qhLvZR8iX6wxyxtRbL50Jfrp9EVBwKDihzzDe2NEIXgOX8TCQPmFOdCL7vSMQIbyxU CkOOmaOWW19rFach5CZbu22zzJGioVCoARmMu8TCBxql7QqdUpIhTxHe26Vw6iJuwG4/ nSA3E4mWXOnJ0JGPIVxh3lQWxZ4dnTHlYyXELd8senBwQkwJMgtmrVmqucLQKohzDZ1X htaaN2RrG9gCO/b6hTu7jMIPciGLut15fgADQ0OdAe9ZY2Ozc6MP20Ol8HqfmcUQ9Sse 0lbDB2Og9P5KhHoym+QwhJaBNMqy74QMoGUgyp/zUbzZ07jyn6dQyFPa2S+44poYnAHc Ilng== X-Gm-Message-State: APjAAAUfeVRgqeomq9LDcxRaZYfhVJ4L69zqVb+H7IkSsj+O8qU5cDQ3 jJoP4IhVfqe7hu2a+GMN1dAXWZIS X-Google-Smtp-Source: APXvYqx4vw73+kgqNmdsYuZ6EtxyiELi5Wz5jc4HF2mlCixm1EWg+CBbwZm1HWifG/8TOeL94eWkXQ== X-Received: by 2002:a05:600c:230c:: with SMTP id 12mr245534wmo.151.1565188526825; Wed, 07 Aug 2019 07:35:26 -0700 (PDT) Received: from donizetti.lan ([2001:b07:6468:f312:dc26:ed70:9e4c:3810]) by smtp.gmail.com with ESMTPSA id o4sm86004wmh.35.2019.08.07.07.35.25 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 07 Aug 2019 07:35:26 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 7 Aug 2019 16:35:21 +0200 Message-Id: <20190807143523.15917-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190807143523.15917-1-pbonzini@redhat.com> References: <20190807143523.15917-1-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::332 Subject: [Qemu-devel] [PATCH v2 1/3] tests/tcg: use EXTRA_CFLAGS everywhere X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP For i386 specifically, this allows using the host GCC to compile the i386 tests. But, it should really be done for all targets, unless we want to pass $(EXTRA_CFLAGS) directly as part of $(CC). Signed-off-by: Paolo Bonzini Reviewed-by: Alex Bennée --- tests/tcg/aarch64/Makefile.softmmu-target | 4 ++-- tests/tcg/alpha/Makefile.softmmu-target | 4 ++-- tests/tcg/arm/Makefile.softmmu-target | 2 +- tests/tcg/i386/Makefile.softmmu-target | 4 ++-- tests/tcg/minilib/Makefile.target | 2 +- tests/tcg/xtensa/Makefile.softmmu-target | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target index 2e560e4d08..4c4aaf61dd 100644 --- a/tests/tcg/aarch64/Makefile.softmmu-target +++ b/tests/tcg/aarch64/Makefile.softmmu-target @@ -22,11 +22,11 @@ LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc .PRECIOUS: $(CRT_OBJS) %.o: $(CRT_PATH)/%.S - $(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@ + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -c $< -o $@ # Build and link the tests %: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) - $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) memory: CFLAGS+=-DCHECK_UNALIGNED=1 diff --git a/tests/tcg/alpha/Makefile.softmmu-target b/tests/tcg/alpha/Makefile.softmmu-target index 3c0f34cc69..09193a62d6 100644 --- a/tests/tcg/alpha/Makefile.softmmu-target +++ b/tests/tcg/alpha/Makefile.softmmu-target @@ -22,11 +22,11 @@ LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc .PRECIOUS: $(CRT_OBJS) %.o: $(CRT_PATH)/%.S - $(CC) $(CFLAGS) -x assembler-with-cpp -c $< -o $@ + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -x assembler-with-cpp -c $< -o $@ # Build and link the tests %: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) - $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) memory: CFLAGS+=-DCHECK_UNALIGNED=0 diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target index 49d48d8a1c..2deb06e6e4 100644 --- a/tests/tcg/arm/Makefile.softmmu-target +++ b/tests/tcg/arm/Makefile.softmmu-target @@ -18,7 +18,7 @@ CFLAGS+=-Wl,--build-id=none -x assembler-with-cpp LDFLAGS+=-nostdlib -N -static %: %.S %.ld - $(CC) $(CFLAGS) $(ASFLAGS) $< -o $@ $(LDFLAGS) -T $(ARM_SRC)/$@.ld + $(CC) $(CFLAGS) $(ASFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) -T $(ARM_SRC)/$@.ld # Specific Test Rules diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target index 0a4364868c..cee342017e 100644 --- a/tests/tcg/i386/Makefile.softmmu-target +++ b/tests/tcg/i386/Makefile.softmmu-target @@ -32,11 +32,11 @@ TESTS+=$(MULTIARCH_TESTS) .PRECIOUS: $(CRT_OBJS) %.o: $(CRT_PATH)/%.S - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ # Build and link the tests %: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS) - $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS) + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) memory: CFLAGS+=-DCHECK_UNALIGNED=1 diff --git a/tests/tcg/minilib/Makefile.target b/tests/tcg/minilib/Makefile.target index 3ed8077d0f..c821d2806a 100644 --- a/tests/tcg/minilib/Makefile.target +++ b/tests/tcg/minilib/Makefile.target @@ -18,4 +18,4 @@ MINILIB_INC=-isystem $(SYSTEM_MINILIB_SRC) .PRECIOUS: $(MINILIB_OBJS) %.o: $(SYSTEM_MINILIB_SRC)/%.c - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ diff --git a/tests/tcg/xtensa/Makefile.softmmu-target b/tests/tcg/xtensa/Makefile.softmmu-target index 8212d96b81..9530cac2ad 100644 --- a/tests/tcg/xtensa/Makefile.softmmu-target +++ b/tests/tcg/xtensa/Makefile.softmmu-target @@ -34,9 +34,9 @@ $(XTENSA_USABLE_TESTS): linker.ld macros.inc $(CRT) Makefile.softmmu-target # special rule for common blobs %.o: %.S - $(CC) $(XTENSA_INC) $($*_ASFLAGS) $(ASFLAGS) -c $< -o $@ + $(CC) $(XTENSA_INC) $($*_ASFLAGS) $(ASFLAGS) $(EXTRA_CFLAGS) -c $< -o $@ %: %.S - $(CC) $(XTENSA_INC) $(ASFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT) + $(CC) $(XTENSA_INC) $(ASFLAGS) $(EXTRA_CFLAGS) $< -o $@ $(LDFLAGS) $(NOSTDFLAGS) $(CRT) endif From patchwork Wed Aug 7 14:35:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Bonzini X-Patchwork-Id: 11082299 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 6E422912 for ; Wed, 7 Aug 2019 14:36:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5B9D9285CE for ; Wed, 7 Aug 2019 14:36:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4FBF528715; Wed, 7 Aug 2019 14:36:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 376B128A5D for ; Wed, 7 Aug 2019 14:36:08 +0000 (UTC) Received: from localhost ([::1]:41922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN2t-0004wJ-Cx for patchwork-qemu-devel@patchwork.kernel.org; Wed, 07 Aug 2019 10:36:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41764) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN2K-0003Yu-Kj for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hvN2H-0006bi-Ky for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:32 -0400 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:40097) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hvN2H-0006b8-Cq for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:29 -0400 Received: by mail-wr1-x441.google.com with SMTP id r1so91590333wrl.7 for ; Wed, 07 Aug 2019 07:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L17nmp4EtB/bX6EdCmG6uVDw61DjK5O/rGkvV267caI=; b=batk8qBJkgSx9TpiC/I+ojP7pBL5bjfqkdoQnEkgcHYhPxhAXdvCC24JFHmbiSfOWi BsIGRy3OlfpnXmJEAymCj+GWf9uq+O4W1PbLJe1HwjKsFS6PE9vdYZUpCDxwUIGbyThU cdppr80uRUQx33NZn5h0hmcwK3UTKulELZlxeQUnWsSj9GoIq4/na3ysQfKW9SxnPwYZ 1jDd0w6QdalvQSOjMja9upMJVz72nEPLTh9MZA0g3WmUeSOGac4VhecxdSw5lvZwBLlx 08i6N5cmRcK0L6PkB83IjC38sKx93De4yKD7SoI7i49GbIZaanWtK57lD3rx+wOtM/fu 4jYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=L17nmp4EtB/bX6EdCmG6uVDw61DjK5O/rGkvV267caI=; b=T3o7suqJsuiRTMLwhUiEtG0Q4xADZZxD7U9Rh1BpXlELOlRlHpBTJwisr3RWokOrV9 62ADZi4l5m82+uUeuFzn7obt7GSTGIE7Xw8kC9w0oJ8oWyO2HGi7/xLEFjR3INNCpQ9N 5G/lSpHI57i2014UegjDgo45fYeQSFbgZ+vqnZfe8wsf2LHC3lr9I9svcPOmH8SbHrvX W81PzGgseaNRN/13csGqvJ5DzR51b9aIqJ6GEuNMZmyTZEk181sXl3xneg+wkUCGKCkv 15NbEm3aTmXEm7JgynJtoiwRWsfo94Qp2tgBcIuYD2mLqpb6gWY629xylgWIopbnDa26 XYNg== X-Gm-Message-State: APjAAAVfZBJ7DdgpUh/6rY+MZR+ie5J8J8A9UoOVO5HTcD+QPIy4YFWH Y8Dbyhbcg0RTHKkorXUN3aSdCyHn X-Google-Smtp-Source: APXvYqyJYKei4bqZtO6DKUjs6sEqHRdDF21Fs0qQSa1jLrjOAq57v7IziBh6dop4fxAqY60rcmWsJA== X-Received: by 2002:a5d:438e:: with SMTP id i14mr11283698wrq.122.1565188527954; Wed, 07 Aug 2019 07:35:27 -0700 (PDT) Received: from donizetti.lan ([2001:b07:6468:f312:dc26:ed70:9e4c:3810]) by smtp.gmail.com with ESMTPSA id o4sm86004wmh.35.2019.08.07.07.35.26 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 07 Aug 2019 07:35:27 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 7 Aug 2019 16:35:22 +0200 Message-Id: <20190807143523.15917-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190807143523.15917-1-pbonzini@redhat.com> References: <20190807143523.15917-1-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::441 Subject: [Qemu-devel] [PATCH v2 2/3] tests/tcg: cleanup Makefile inclusions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Rename Makefile.probe to Makefile.prereqs and make it actually define rules for the tests. Rename Makefile to Makefile.target, since it is not a toplevel makefile. Rename Makefile.include to Makefile.qemu and disentangle it from the QEMU Makefile.target, so that it is invoked recursively by tests/Makefile.include. Tests are now placed in tests/tcg/$(TARGET). Drop the usage of TARGET_BASE_ARCH, which is ignored by everything except x86_64 and aarch64. Fix x86 tests by using -cpu max and, while at it, standardize on QEMU_OPTS for aarch64 tests too. Signed-off-by: Paolo Bonzini --- Makefile.target | 3 -- tests/Makefile.include | 23 +++++---- .../tcg/{Makefile.probe => Makefile.prereqs} | 5 +- tests/tcg/{Makefile.include => Makefile.qemu} | 48 +++++++++++-------- tests/tcg/{Makefile => Makefile.target} | 13 ++--- tests/tcg/aarch64/Makefile.target | 12 +++-- tests/tcg/arm/Makefile.softmmu-target | 4 -- tests/tcg/i386/Makefile.softmmu-target | 8 ---- tests/tcg/i386/Makefile.target | 13 ++--- tests/tcg/x86_64/Makefile.softmmu-target | 36 ++++++++++++++ tests/tcg/x86_64/Makefile.target | 7 +-- 11 files changed, 100 insertions(+), 72 deletions(-) rename tests/tcg/{Makefile.probe => Makefile.prereqs} (92%) rename tests/tcg/{Makefile.include => Makefile.qemu} (52%) rename tests/tcg/{Makefile => Makefile.target} (92%) create mode 100644 tests/tcg/x86_64/Makefile.softmmu-target diff --git a/Makefile.target b/Makefile.target index 933b27453a..5e916230c4 100644 --- a/Makefile.target +++ b/Makefile.target @@ -39,9 +39,6 @@ endif PROGS=$(QEMU_PROG) $(QEMU_PROGW) STPFILES= -# Makefile Tests -include $(SRC_PATH)/tests/tcg/Makefile.include - config-target.h: config-target.h-timestamp config-target.h-timestamp: config-target.mak diff --git a/tests/Makefile.include b/tests/Makefile.include index fd7fdb8658..8bb5c97b7a 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -1061,23 +1061,28 @@ RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS)) ifeq ($(HAVE_USER_DOCKER),y) # Probe for the Docker Builds needed for each build $(foreach PROBE_TARGET,$(TARGET_DIRS), \ - $(eval -include $(SRC_PATH)/tests/tcg/Makefile.probe) \ - $(if $(DOCKER_PREREQ), \ - $(eval build-tcg-tests-$(PROBE_TARGET): $(DOCKER_PREREQ)))) + $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs)) endif build-tcg-tests-%: - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \ - SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" guest-tests, \ + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ + -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ + SRC_PATH=$(SRC_PATH) \ + V="$(V)" TARGET_DIR="$*/" guest-tests, \ "BUILD", "TCG tests for $*") -run-tcg-tests-%: % build-tcg-tests-% - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" \ - SKIP_DOCKER_BUILD=1 TARGET_DIR="$*/" run-guest-tests, \ +run-tcg-tests-%: build-tcg-tests-% %/all + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ + -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ + SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \ + V="$(V)" TARGET_DIR="$*/" run-guest-tests, \ "RUN", "TCG tests for $*") clean-tcg-tests-%: - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" clean-guest-tests,) + $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ + -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ + SRC_PATH=$(SRC_PATH) TARGET_DIR="$*/" clean-guest-tests, \ + "RUN", "TCG tests for $*") .PHONY: build-tcg build-tcg: $(BUILD_TCG_TARGET_RULES) diff --git a/tests/tcg/Makefile.probe b/tests/tcg/Makefile.prereqs similarity index 92% rename from tests/tcg/Makefile.probe rename to tests/tcg/Makefile.prereqs index 9dc654663d..53b01962e1 100644 --- a/tests/tcg/Makefile.probe +++ b/tests/tcg/Makefile.prereqs @@ -8,20 +8,19 @@ # each target. # First we need the target makefile which tells us the target architecture +CROSS_CC_GUEST:= -include $(BUILD_DIR)/$(PROBE_TARGET)/config-target.mak # Then we load up the target architecture makefiles which tell us # about the compilers -CROSS_CC_GUEST:= DOCKER_IMAGE:= -DOCKER_PREREQ:= -include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include ifndef CROSS_CC_GUEST ifneq ($(DOCKER_IMAGE),) -DOCKER_PREREQ:=docker-image-$(DOCKER_IMAGE) +build-tcg-tests-$(PROBE_TARGET): docker-image-$(DOCKER_IMAGE) endif endif diff --git a/tests/tcg/Makefile.include b/tests/tcg/Makefile.qemu similarity index 52% rename from tests/tcg/Makefile.include rename to tests/tcg/Makefile.qemu index 73b5626fc5..d3f34372de 100644 --- a/tests/tcg/Makefile.include +++ b/tests/tcg/Makefile.qemu @@ -2,20 +2,23 @@ # # TCG tests (per-target rules) # -# This Makefile fragment 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. +# This Makefile fragment is included from the build-tcg target, once +# for each target 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 +include $(TARGET_DIR)config-target.mak +include $(SRC_PATH)/rules.mak +include $(wildcard \ + $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include \ + $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include) GUEST_BUILD= -TCG_MAKE=$(SRC_PATH)/tests/tcg/Makefile +TCG_MAKE=../Makefile.target # Support installed Cross Compilers ifdef CROSS_CC_GUEST @@ -23,9 +26,9 @@ 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) \ + (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \ + $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC="$(CROSS_CC_GUEST)" \ + SRC_PATH="$(SRC_PATH)" BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \ EXTRA_CFLAGS=$(CROSS_CC_GUEST_CFLAGS)), \ "BUILD","$(TARGET_NAME) guest-tests with $(CROSS_CC_GUEST)") @@ -39,20 +42,20 @@ ifeq ($(HAVE_USER_DOCKER)$(GUEST_BUILD),y) ifneq ($(DOCKER_IMAGE),) # We also need the Docker make rules to depend on +SKIP_DOCKER_BUILD=1 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) +docker-build-guest-tests: docker-image-$(DOCKER_IMAGE) $(call quiet-command, \ - (mkdir -p tests && cd tests && \ - $(MAKE) -f $(TCG_MAKE) CC=$(DOCKER_COMPILE_CMD) \ - BUILD_STATIC=y \ + (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \ + $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC=$(DOCKER_COMPILE_CMD) \ + SRC_PATH="$(SRC_PATH)" BUILD_STATIC=y \ EXTRA_CFLAGS=$(DOCKER_CROSS_COMPILER_CFLAGS)), \ "BUILD","$(TARGET_NAME) guest-tests with docker qemu:$(DOCKER_IMAGE)") @@ -62,27 +65,32 @@ endif endif # Final targets +all: + @echo "Do not invoke this Makefile directly"; exit 1 + .PHONY: guest-tests ifneq ($(GUEST_BUILD),) guest-tests: $(GUEST_BUILD) -run-guest-tests: guest-tests qemu-$(subst y,system-,$(CONFIG_SOFTMMU))$(TARGET_NAME) +run-guest-tests: guest-tests $(call quiet-command, \ - (cd tests && $(MAKE) -f $(TCG_MAKE) SPEED=$(SPEED) run), \ + (cd tests/tcg/$(TARGET_DIR) && \ + $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" \ + SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \ "RUN", "tests for $(TARGET_NAME)") else guest-tests: $(call quiet-command, /bin/true, "BUILD", \ - "$(TARGET_NAME) guest-tests SKIPPED") + "$(TARGET_DIR) guest-tests SKIPPED") run-guest-tests: $(call quiet-command, /bin/true, "RUN", \ - "tests for $(TARGET_NAME) SKIPPED") + "tests for $(TARGET_DIR) SKIPPED") endif # It doesn't matter if these don't exits .PHONY: clean-guest-tests clean-guest-tests: - rm -rf tests || echo "no $(TARGET_NAME) tests to remove" + rm -rf tests/tcg/$(TARGET_DIR) diff --git a/tests/tcg/Makefile b/tests/tcg/Makefile.target similarity index 92% rename from tests/tcg/Makefile rename to tests/tcg/Makefile.target index 9f56768624..8dbcba4474 100644 --- a/tests/tcg/Makefile +++ b/tests/tcg/Makefile.target @@ -29,8 +29,9 @@ # We also expect to be in the tests build dir for the FOO-(linux-user|softmmu). # +all: -include ../../config-host.mak --include ../config-target.mak +-include ../../../$(TARGET_DIR)/config-target.mak # for including , in command strings COMMA := , @@ -64,9 +65,9 @@ LDFLAGS= # The QEMU for this TARGET ifdef CONFIG_USER_ONLY -QEMU=../qemu-$(TARGET_NAME) +QEMU=../../../$(TARGET_DIR)/qemu-$(TARGET_NAME) else -QEMU=../qemu-system-$(TARGET_NAME) +QEMU=../../../$(TARGET_DIR)/qemu-system-$(TARGET_NAME) endif QEMU_OPTS= @@ -82,10 +83,7 @@ ifdef CONFIG_USER_ONLY # 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 # Add the common build options CFLAGS+=-Wall -O0 -g -fno-strict-aliasing @@ -101,10 +99,7 @@ else # are expected to provide their own build recipes. -include $(SRC_PATH)/tests/tcg/minilib/Makefile.target -include $(SRC_PATH)/tests/tcg/multiarch/system/Makefile.softmmu-target --include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.softmmu-target -ifneq ($(TARGET_BASE_ARCH),$(TARGET_NAME)) -include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.softmmu-target -endif endif diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile.target index 31ba9cfcaa..e763dd9da3 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -2,12 +2,14 @@ # # AArch64 specific tweaks +ARM_SRC=$(SRC_PATH)/tests/tcg/arm +VPATH += $(ARM_SRC) + AARCH64_SRC=$(SRC_PATH)/tests/tcg/aarch64 VPATH += $(AARCH64_SRC) -# we don't build any of the ARM tests -AARCH64_TESTS=$(filter-out $(ARM_TESTS), $(TESTS)) -AARCH64_TESTS+=fcvt +# we don't build any other ARM test +AARCH64_TESTS=fcvt fcvt: LDFLAGS+=-lm @@ -16,6 +18,6 @@ run-fcvt: fcvt $(call diff-out,$<,$(AARCH64_SRC)/fcvt.ref) AARCH64_TESTS += pauth-1 pauth-2 -run-pauth-%: QEMU += -cpu max +run-pauth-%: QEMU_OPTS += -cpu max -TESTS:=$(AARCH64_TESTS) +TESTS += $(AARCH64_TESTS) diff --git a/tests/tcg/arm/Makefile.softmmu-target b/tests/tcg/arm/Makefile.softmmu-target index 2deb06e6e4..231e9a57b4 100644 --- a/tests/tcg/arm/Makefile.softmmu-target +++ b/tests/tcg/arm/Makefile.softmmu-target @@ -3,8 +3,6 @@ # ARM SoftMMU tests - included from tests/tcg/Makefile # -ifeq ($(TARGET_ABI_DIR),arm) - ARM_SRC=$(SRC_PATH)/tests/tcg/arm # Set search path for all sources @@ -25,5 +23,3 @@ LDFLAGS+=-nostdlib -N -static test-armv6m-undef: EXTRA_CFLAGS+=-mcpu=cortex-m0 run-test-armv6m-undef: QEMU_OPTS+=-semihosting -M microbit -kernel - -endif diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target index cee342017e..1c8790eecd 100644 --- a/tests/tcg/i386/Makefile.softmmu-target +++ b/tests/tcg/i386/Makefile.softmmu-target @@ -12,17 +12,9 @@ X64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system # These objects provide the basic boot code and helper functions for all tests CRT_OBJS=boot.o -ifeq ($(TARGET_X86_64), y) -CRT_PATH=$(X64_SYSTEM_SRC) -CFLAGS=-march=x86-64 -LINK_SCRIPT=$(X64_SYSTEM_SRC)/kernel.ld -LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_x86_64 -else CRT_PATH=$(I386_SYSTEM_SRC) -CFLAGS+=-m32 LINK_SCRIPT=$(I386_SYSTEM_SRC)/kernel.ld LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_i386 -endif CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC) LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc diff --git a/tests/tcg/i386/Makefile.target b/tests/tcg/i386/Makefile.target index d0eb7023e5..08c5736a4d 100644 --- a/tests/tcg/i386/Makefile.target +++ b/tests/tcg/i386/Makefile.target @@ -6,14 +6,11 @@ I386_SRC=$(SRC_PATH)/tests/tcg/i386 VPATH += $(I386_SRC) I386_SRCS=$(notdir $(wildcard $(I386_SRC)/*.c)) -I386_TESTS=$(I386_SRCS:.c=) -I386_ONLY_TESTS=$(filter-out test-i386-ssse3, $(I386_TESTS)) +ALL_X86_TESTS=$(I386_SRCS:.c=) +I386_TESTS:=$(filter-out test-i386-ssse3, $(ALL_X86_TESTS)) +X86_64_TESTS:=$(filter test-i386-ssse3, $(ALL_X86_TESTS)) # Update TESTS -TESTS+=$(I386_ONLY_TESTS) - -ifneq ($(TARGET_NAME),x86_64) -CFLAGS+=-m32 -endif +TESTS=$(MULTIARCH_TESTS) $(I386_TESTS) # # hello-i386 is a barebones app @@ -26,7 +23,7 @@ hello-i386: LDFLAGS+=-nostdlib # 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) $(CFLAGS) $(LDFLAGS) -o $@ \ + $(CC) $(CFLAGS) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ \ $( X-Patchwork-Id: 11082301 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B653C912 for ; Wed, 7 Aug 2019 14:37:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A1D8728609 for ; Wed, 7 Aug 2019 14:37:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 963B4287B4; Wed, 7 Aug 2019 14:37:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=2.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8C7F92853C for ; Wed, 7 Aug 2019 14:36:58 +0000 (UTC) Received: from localhost ([::1]:41936 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN3h-0006nO-Sp for patchwork-qemu-devel@patchwork.kernel.org; Wed, 07 Aug 2019 10:36:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41781) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hvN2M-0003do-VA for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hvN2J-0006cy-D0 for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:34 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:54982) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hvN2J-0006cB-2F for qemu-devel@nongnu.org; Wed, 07 Aug 2019 10:35:31 -0400 Received: by mail-wm1-x342.google.com with SMTP id p74so283028wme.4 for ; Wed, 07 Aug 2019 07:35:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=i4qQ+OKMWkjO/Dlg5RQ6eEY8J7ODk6SOJVH9OQ7FjhE=; b=VDhx6EOK9um5vYS1Gpsa5iiTHLEJXgJmVmGUlh7HWQfs2VkO7ThCxr2X8cPTJ94vHS bguvxqtN2iBoeOE+fYZmYo4jRR1INiZANqfZq4gwFRP6wOAd/1Pl6IjDhvrAXcr3wSuI k8V0MWspQ8fncr6lAtCiqAj+3Q6OUoHnml6G8iXqBLsxTlQXwLSNlFJObxdz4QdXB3Gd cxygYFXR0I7mBJxYyIXSDNVCZAmFDa0odT1Njjr61lefuhAbFYDm+0c0fPpJwumhRGlo pagiDL7Bmr2YlceaiLiLuh9PiQLDpXZek+cEWEr4TObdSD/qbanrqlbuShT4mEDrETPz t8Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=i4qQ+OKMWkjO/Dlg5RQ6eEY8J7ODk6SOJVH9OQ7FjhE=; b=k7caNVmjiSk4OnFFUTClg0ltAx6DslCaAjS4OyvPlSkRvxJKb4uwjQB2DFYAuczpWR CU8KzJCN+km+TDt/ph1/42d/OKYLNlnax2EneMDyVO6E43xFlU/fJ6jH3SDEifApIiOB H4uC/eu50Fh9SWsVo0CkJ3Cvc5wi/ic5wNixO52DtlzSzGZy1Nh2fRosZ7VFsIGtIB5r pe7VswzpFXphUfcSHshHECQc9njnuZXSwGQzCkkPjdEAnyPDI/x5MePwqgOIuxJTGX4y t9dsozJ6IXa9wIBIwfwd8uJKSQ2qFN7ub4SFLrJbOrWzIPlY8vtdsYqFEvwZw/YxfYJc M8Dw== X-Gm-Message-State: APjAAAWlqfNB28rs7QUjZWqoFVd339BQCWukVgIf9HaVuv9//em8gu4U p3yeOJW5TWLlgNES/EDWTqmcWlnK X-Google-Smtp-Source: APXvYqz0MSGc0RGHWJEBegvoo3Ptdvu1KXkmTMlUx9DghdCpzPsnk00RIYTXfo0r5Xc/598wOBpf/Q== X-Received: by 2002:a1c:1bd7:: with SMTP id b206mr255411wmb.85.1565188528995; Wed, 07 Aug 2019 07:35:28 -0700 (PDT) Received: from donizetti.lan ([2001:b07:6468:f312:dc26:ed70:9e4c:3810]) by smtp.gmail.com with ESMTPSA id o4sm86004wmh.35.2019.08.07.07.35.27 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 07 Aug 2019 07:35:28 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 7 Aug 2019 16:35:23 +0200 Message-Id: <20190807143523.15917-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190807143523.15917-1-pbonzini@redhat.com> References: <20190807143523.15917-1-pbonzini@redhat.com> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH v2 3/3] tests/tcg: move configuration to a sub-shell script X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alex.bennee@linaro.org Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Avoid the repeated inclusions of config-target.mak, which have risks of namespace pollution, and instead build minimal configuration files in a configuration script. The same configuration files can also be included in Makefile and Makefile.qemu Signed-off-by: Paolo Bonzini --- Makefile | 1 + configure | 155 ++------------------ tests/Makefile.include | 8 +- tests/tcg/Makefile.prereqs | 18 +-- tests/tcg/Makefile.qemu | 51 ++++--- tests/tcg/Makefile.target | 8 +- tests/tcg/aarch64/Makefile.include | 8 - tests/tcg/alpha/Makefile.include | 2 - tests/tcg/arm/Makefile.include | 8 - tests/tcg/configure.sh | 228 +++++++++++++++++++++++++++++ tests/tcg/cris/Makefile.include | 6 - tests/tcg/hppa/Makefile.include | 2 - tests/tcg/i386/Makefile.include | 9 -- tests/tcg/m68k/Makefile.include | 2 - tests/tcg/mips/Makefile.include | 20 --- tests/tcg/ppc/Makefile.include | 10 -- tests/tcg/riscv/Makefile.include | 10 -- tests/tcg/s390x/Makefile.include | 2 - tests/tcg/sh4/Makefile.include | 4 - tests/tcg/sparc64/Makefile.include | 2 - tests/tcg/xtensa/Makefile.include | 11 -- 21 files changed, 276 insertions(+), 289 deletions(-) delete mode 100644 tests/tcg/aarch64/Makefile.include delete mode 100644 tests/tcg/alpha/Makefile.include delete mode 100644 tests/tcg/arm/Makefile.include create mode 100644 tests/tcg/configure.sh delete mode 100644 tests/tcg/cris/Makefile.include delete mode 100644 tests/tcg/hppa/Makefile.include delete mode 100644 tests/tcg/i386/Makefile.include delete mode 100644 tests/tcg/m68k/Makefile.include delete mode 100644 tests/tcg/mips/Makefile.include delete mode 100644 tests/tcg/ppc/Makefile.include delete mode 100644 tests/tcg/riscv/Makefile.include delete mode 100644 tests/tcg/s390x/Makefile.include delete mode 100644 tests/tcg/sh4/Makefile.include delete mode 100644 tests/tcg/sparc64/Makefile.include delete mode 100644 tests/tcg/xtensa/Makefile.include diff --git a/Makefile b/Makefile index ecb788b2ce..e76288abb9 100644 --- a/Makefile +++ b/Makefile @@ -718,6 +718,7 @@ endef distclean: clean rm -f config-host.mak config-host.h* config-host.ld $(DOCS) qemu-options.texi qemu-img-cmds.texi qemu-monitor.texi qemu-monitor-info.texi + rm -f tests/tcg/config-*.mak rm -f config-all-devices.mak config-all-disas.mak config.status rm -f $(SUBDIR_DEVICES_MAK) rm -f po/*.mo tests/qemu-iotests/common.env diff --git a/configure b/configure index 942a73b795..f216f3f9d9 100755 --- a/configure +++ b/configure @@ -500,22 +500,6 @@ debug_mutex="no" libpmem="" default_devices="yes" -# cross compilers defaults, can be overridden with --cross-cc-ARCH -cross_cc_aarch64="aarch64-linux-gnu-gcc" -cross_cc_aarch64_be="$cross_cc_aarch64" -cross_cc_cflags_aarch64_be="-mbig-endian" -cross_cc_arm="arm-linux-gnueabihf-gcc" -cross_cc_cflags_armeb="-mbig-endian" -cross_cc_i386="i386-pc-linux-gnu-gcc" -cross_cc_cflags_i386="" -cross_cc_ppc="powerpc-linux-gnu-gcc" -cross_cc_cflags_ppc="-m32" -cross_cc_ppc64="powerpc-linux-gnu-gcc" -cross_cc_cflags_ppc64="-m64" -cross_cc_ppc64le="powerpc64le-linux-gnu-gcc" - -enabled_cross_compilers="" - supported_cpu="no" supported_os="no" bogus_os="no" @@ -548,9 +532,12 @@ for opt do ;; --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-flags-}; cc_arch=${cc_arch%%=*} eval "cross_cc_cflags_${cc_arch}=\$optarg" + cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}" ;; --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*} + cc_archs="$cc_archs $cc_arch" eval "cross_cc_${cc_arch}=\$optarg" + cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}" ;; esac done @@ -745,42 +732,34 @@ ARCH= case "$cpu" in ppc|ppc64|s390|s390x|sparc64|x32|riscv32|riscv64) supported_cpu="yes" - eval "cross_cc_${cpu}=\$host_cc" ;; ppc64le) ARCH="ppc64" supported_cpu="yes" - cross_cc_ppc64le=$host_cc ;; i386|i486|i586|i686|i86pc|BePC) cpu="i386" supported_cpu="yes" - cross_cc_i386=$host_cc ;; x86_64|amd64) cpu="x86_64" supported_cpu="yes" - cross_cc_x86_64=$host_cc ;; armv*b|armv*l|arm) cpu="arm" supported_cpu="yes" - cross_cc_arm=$host_cc ;; aarch64) cpu="aarch64" supported_cpu="yes" - cross_cc_aarch64=$host_cc ;; mips*) cpu="mips" supported_cpu="yes" - cross_cc_mips=$host_cc ;; sparc|sun4[cdmuv]) cpu="sparc" supported_cpu="yes" - cross_cc_sparc=$host_cc ;; *) # This will result in either an error or falling back to TCI later @@ -1555,44 +1534,30 @@ case "$cpu" in ppc) CPU_CFLAGS="-m32" LDFLAGS="-m32 $LDFLAGS" - cross_cc_ppc=$cc - cross_cc_cflags_ppc="$CPU_CFLAGS" ;; ppc64) CPU_CFLAGS="-m64" LDFLAGS="-m64 $LDFLAGS" - cross_cc_ppc64=$cc - cross_cc_cflags_ppc64="$CPU_CFLAGS" ;; sparc) CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" LDFLAGS="-m32 -mv8plus $LDFLAGS" - cross_cc_sparc=$cc - cross_cc_cflags_sparc="$CPU_CFLAGS" ;; sparc64) CPU_CFLAGS="-m64 -mcpu=ultrasparc" LDFLAGS="-m64 $LDFLAGS" - cross_cc_sparc64=$cc - cross_cc_cflags_sparc64="$CPU_CFLAGS" ;; s390) CPU_CFLAGS="-m31" LDFLAGS="-m31 $LDFLAGS" - cross_cc_s390=$cc - cross_cc_cflags_s390="$CPU_CFLAGS" ;; s390x) CPU_CFLAGS="-m64" LDFLAGS="-m64 $LDFLAGS" - cross_cc_s390x=$cc - cross_cc_cflags_s390x="$CPU_CFLAGS" ;; i386) CPU_CFLAGS="-m32" LDFLAGS="-m32 $LDFLAGS" - cross_cc_i386=$cc - cross_cc_cflags_i386="$CPU_CFLAGS" ;; x86_64) # ??? Only extremely old AMD cpus do not have cmpxchg16b. @@ -1600,18 +1565,16 @@ case "$cpu" in # runtime and generate the fallback to serial emulation. CPU_CFLAGS="-m64 -mcx16" LDFLAGS="-m64 $LDFLAGS" - cross_cc_x86_64=$cc - cross_cc_cflags_x86_64="$CPU_CFLAGS" ;; x32) CPU_CFLAGS="-mx32" LDFLAGS="-mx32 $LDFLAGS" - cross_cc_i386=$cc - cross_cc_cflags_i386="$CPU_CFLAGS" ;; # No special flags required for other host CPUs esac +eval "cross_cc_${cpu}=\$host_cc" +cross_cc_vars="$cross_cc_vars cross_cc_${cpu}" QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" # For user-mode emulation the host arch has to be one we explicitly @@ -5893,17 +5856,6 @@ EOF fi fi -########################################## -# Docker and cross-compiler support -# -# This is specifically for building test -# cases for foreign architectures, not -# cross-compiling QEMU itself. - -if has "docker"; then - docker=$($python $source_path/tests/docker/docker.py probe) -fi - ########################################## # check for libpmem @@ -7388,10 +7340,6 @@ if test "$gcov" = "yes" ; then echo "GCOV=$gcov_tool" >> $config_host_mak fi -if test "$docker" != "no"; then - echo "HAVE_USER_DOCKER=y" >> $config_host_mak -fi - if test "$libudev" != "no"; then echo "CONFIG_LIBUDEV=y" >> $config_host_mak echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak @@ -7465,10 +7413,6 @@ case "$target" in ;; esac -target_compiler="" -target_compiler_static="" -target_compiler_cflags="" - mkdir -p $target_dir echo "# Automatically generated by configure - do not modify" > $config_target_mak @@ -7485,26 +7429,20 @@ case "$target_name" in i386) mttcg="yes" gdb_xml_files="i386-32bit.xml" - target_compiler=$cross_cc_i386 - target_compiler_cflags=$cross_cc_ccflags_i386 ;; x86_64) TARGET_BASE_ARCH=i386 mttcg="yes" gdb_xml_files="i386-64bit.xml" - target_compiler=$cross_cc_x86_64 ;; alpha) mttcg="yes" - target_compiler=$cross_cc_alpha ;; arm|armeb) TARGET_ARCH=arm bflt="yes" mttcg="yes" gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" - target_compiler=$cross_cc_arm - eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}" ;; aarch64|aarch64_be) TARGET_ARCH=aarch64 @@ -7512,41 +7450,32 @@ case "$target_name" in bflt="yes" mttcg="yes" gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" - target_compiler=$cross_cc_aarch64 - eval "target_compiler_cflags=\$cross_cc_cflags_${target_name}" ;; cris) - target_compiler=$cross_cc_cris ;; hppa) mttcg="yes" - target_compiler=$cross_cc_hppa ;; lm32) - target_compiler=$cross_cc_lm32 ;; m68k) bflt="yes" gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml" - target_compiler=$cross_cc_m68k ;; microblaze|microblazeel) TARGET_ARCH=microblaze bflt="yes" echo "TARGET_ABI32=y" >> $config_target_mak - target_compiler=$cross_cc_microblaze ;; mips|mipsel) mttcg="yes" TARGET_ARCH=mips - target_compiler=$cross_cc_mips echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak ;; mipsn32|mipsn32el) mttcg="yes" TARGET_ARCH=mips64 TARGET_BASE_ARCH=mips - target_compiler=$cross_cc_mipsn32 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak echo "TARGET_ABI32=y" >> $config_target_mak ;; @@ -7554,32 +7483,24 @@ case "$target_name" in mttcg="yes" TARGET_ARCH=mips64 TARGET_BASE_ARCH=mips - target_compiler=$cross_cc_mips64 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak ;; moxie) - target_compiler=$cross_cc_moxie ;; nios2) - target_compiler=$cross_cc_nios2 ;; or1k) - target_compiler=$cross_cc_or1k TARGET_ARCH=openrisc TARGET_BASE_ARCH=openrisc ;; ppc) gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" - target_compiler=$cross_cc_ppc - target_compiler_cflags="$cross_cc_cflags_ppc" ;; ppc64) TARGET_BASE_ARCH=ppc TARGET_ABI_DIR=ppc mttcg=yes gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" - target_compiler=$cross_cc_ppc64 - target_compiler_cflags="$cross_cc_cflags_ppc64" ;; ppc64le) TARGET_ARCH=ppc64 @@ -7587,7 +7508,6 @@ case "$target_name" in TARGET_ABI_DIR=ppc mttcg=yes gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" - target_compiler=$cross_cc_ppc64le ;; ppc64abi32) TARGET_ARCH=ppc64 @@ -7595,60 +7515,48 @@ case "$target_name" in TARGET_ABI_DIR=ppc echo "TARGET_ABI32=y" >> $config_target_mak gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" - target_compiler=$cross_cc_ppc64abi32 ;; riscv32) TARGET_BASE_ARCH=riscv TARGET_ABI_DIR=riscv mttcg=yes gdb_xml_files="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-32bit-csr.xml" - target_compiler=$cross_cc_riscv32 ;; riscv64) TARGET_BASE_ARCH=riscv TARGET_ABI_DIR=riscv mttcg=yes gdb_xml_files="riscv-64bit-cpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml" - target_compiler=$cross_cc_riscv64 ;; sh4|sh4eb) TARGET_ARCH=sh4 bflt="yes" - target_compiler=$cross_cc_sh4 ;; sparc) - target_compiler=$cross_cc_sparc ;; sparc64) TARGET_BASE_ARCH=sparc - target_compiler=$cross_cc_sparc64 ;; sparc32plus) TARGET_ARCH=sparc64 TARGET_BASE_ARCH=sparc TARGET_ABI_DIR=sparc - target_compiler=$cross_cc_sparc32plus echo "TARGET_ABI32=y" >> $config_target_mak ;; s390x) mttcg=yes gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml" - target_compiler=$cross_cc_s390x ;; tilegx) - target_compiler=$cross_cc_tilegx ;; tricore) - target_compiler=$cross_cc_tricore ;; unicore32) - target_compiler=$cross_cc_unicore32 ;; xtensa|xtensaeb) TARGET_ARCH=xtensa bflt="yes" mttcg="yes" - target_compiler=$cross_cc_xtensa ;; *) error_exit "Unsupported target CPU" @@ -7659,27 +7567,6 @@ if [ "$TARGET_BASE_ARCH" = "" ]; then TARGET_BASE_ARCH=$TARGET_ARCH fi -# Do we have a cross compiler for this target? -if has $target_compiler; then - - write_c_skeleton - - if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then - # For host systems we might get away with building without -static - if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then - target_compiler="" - else - enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'" - target_compiler_static="n" - fi - else - enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'" - target_compiler_static="y" - fi -else - target_compiler="" -fi - symlink "$source_path/Makefile.target" "$target_dir/Makefile" upper() { @@ -7756,18 +7643,6 @@ if test "$target_bsd_user" = "yes" ; then echo "CONFIG_BSD_USER=y" >> $config_target_mak fi -if test -n "$target_compiler"; then - echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak - - if test -n "$target_compiler_static"; then - echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak - fi - - if test -n "$target_compiler_cflags"; then - echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak - fi -fi - # generate QEMU_CFLAGS/LDFLAGS for targets @@ -7898,11 +7773,6 @@ done # for target in $targets echo "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak echo "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak -if test -n "$enabled_cross_compilers"; then - echo - echo "NOTE: cross-compilers enabled: $enabled_cross_compilers" -fi - if [ "$fdt" = "git" ]; then echo "config-host.h: dtc/all" >> $config_host_mak fi @@ -7931,15 +7801,14 @@ fi # so the build tree will be missing the link back to the new file, and # tests might fail. Prefer to keep the relevant files in their own # directory and symlink the directory instead. -DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" +DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema tests/qemu-iotests tests/vm" DIRS="$DIRS tests/fp tests/qgraph" DIRS="$DIRS docs docs/interop fsdev scsi" DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" DIRS="$DIRS roms/seabios roms/vgabios" -LINKS="Makefile tests/tcg/Makefile" -LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" -LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" -LINKS="$LINKS tests/fp/Makefile" +LINKS="Makefile" +LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile" +LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile" LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" LINKS="$LINKS pc-bios/spapr-rtas/Makefile" LINKS="$LINKS pc-bios/s390-ccw/Makefile" @@ -7969,6 +7838,12 @@ for f in $LINKS ; do fi done +(for i in $cross_cc_vars; do + export $i +done +export target_list source_path +$source_path/tests/tcg/configure.sh) + # temporary config to build submodules for rom in seabios vgabios ; do config_mak=roms/$rom/config.mak diff --git a/tests/Makefile.include b/tests/Makefile.include index 8bb5c97b7a..a3ee649854 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -1058,30 +1058,28 @@ BUILD_TCG_TARGET_RULES=$(patsubst %,build-tcg-tests-%, $(TARGET_DIRS)) CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGET_DIRS)) RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS)) -ifeq ($(HAVE_USER_DOCKER),y) # Probe for the Docker Builds needed for each build $(foreach PROBE_TARGET,$(TARGET_DIRS), \ $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs)) -endif build-tcg-tests-%: $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ SRC_PATH=$(SRC_PATH) \ - V="$(V)" TARGET_DIR="$*/" guest-tests, \ + V="$(V)" TARGET="$*" guest-tests, \ "BUILD", "TCG tests for $*") run-tcg-tests-%: build-tcg-tests-% %/all $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \ - V="$(V)" TARGET_DIR="$*/" run-guest-tests, \ + V="$(V)" TARGET="$*" run-guest-tests, \ "RUN", "TCG tests for $*") clean-tcg-tests-%: $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ - SRC_PATH=$(SRC_PATH) TARGET_DIR="$*/" clean-guest-tests, \ + SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \ "RUN", "TCG tests for $*") .PHONY: build-tcg diff --git a/tests/tcg/Makefile.prereqs b/tests/tcg/Makefile.prereqs index 53b01962e1..7494b31b95 100644 --- a/tests/tcg/Makefile.prereqs +++ b/tests/tcg/Makefile.prereqs @@ -7,24 +7,12 @@ # selection of required docker targets before we invoke a sub-make for # each target. -# First we need the target makefile which tells us the target architecture -CROSS_CC_GUEST:= --include $(BUILD_DIR)/$(PROBE_TARGET)/config-target.mak - -# Then we load up the target architecture makefiles which tell us -# about the compilers DOCKER_IMAGE:= --include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include --include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include +-include $(BUILD_DIR)/tests/tcg/config-$(PROBE_TARGET).mak -ifndef CROSS_CC_GUEST ifneq ($(DOCKER_IMAGE),) build-tcg-tests-$(PROBE_TARGET): docker-image-$(DOCKER_IMAGE) +$(BUILD_DIR)/tests/tcg/config_$(PROBE_TARGET).mak: config-host.mak +config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh endif -endif - -# Clean-up -# undefine TARGET_NAME -# undefine TARGET_BASE_ARCH -# undefine TARGET_ABI_DIR diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu index d3f34372de..c8bec7b6cc 100644 --- a/tests/tcg/Makefile.qemu +++ b/tests/tcg/Makefile.qemu @@ -8,17 +8,22 @@ # to do it for us. # -# The per ARCH makefile, if it exists, holds extra information about +include $(SRC_PATH)/rules.mak + +# The configure script fills in extra information about # useful docker images or alternative compiler flags. -include $(TARGET_DIR)config-target.mak -include $(SRC_PATH)/rules.mak -include $(wildcard \ - $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include \ - $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include) +CROSS_CC_GUEST:= +DOCKER_IMAGE:= +-include $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak GUEST_BUILD= TCG_MAKE=../Makefile.target + +# We also need the Docker make rules to depend on +SKIP_DOCKER_BUILD=1 +include $(SRC_PATH)/tests/docker/Makefile.include + # Support installed Cross Compilers ifdef CROSS_CC_GUEST @@ -26,11 +31,11 @@ ifdef CROSS_CC_GUEST .PHONY: cross-build-guest-tests cross-build-guest-tests: $(call quiet-command, \ - (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \ - $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC="$(CROSS_CC_GUEST)" \ + (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \ + $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \ SRC_PATH="$(SRC_PATH)" BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \ - EXTRA_CFLAGS=$(CROSS_CC_GUEST_CFLAGS)), \ - "BUILD","$(TARGET_NAME) guest-tests with $(CROSS_CC_GUEST)") + EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \ + "BUILD","$(TARGET) guest-tests with $(CROSS_CC_GUEST)") GUEST_BUILD=cross-build-guest-tests @@ -38,30 +43,24 @@ 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 -SKIP_DOCKER_BUILD=1 -include $(SRC_PATH)/tests/docker/Makefile.include - DOCKER_COMPILE_CMD="$(DOCKER_SCRIPT) cc --user $(shell id -u) \ - --cc $(DOCKER_CROSS_COMPILER) \ + --cc $(DOCKER_CROSS_CC_GUEST) \ -i qemu:$(DOCKER_IMAGE) \ -s $(SRC_PATH) -- " .PHONY: docker-build-guest-tests docker-build-guest-tests: docker-image-$(DOCKER_IMAGE) $(call quiet-command, \ - (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \ - $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" CC=$(DOCKER_COMPILE_CMD) \ + (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \ + $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC=$(DOCKER_COMPILE_CMD) \ SRC_PATH="$(SRC_PATH)" BUILD_STATIC=y \ - EXTRA_CFLAGS=$(DOCKER_CROSS_COMPILER_CFLAGS)), \ - "BUILD","$(TARGET_NAME) guest-tests with docker qemu:$(DOCKER_IMAGE)") + EXTRA_CFLAGS="$(CROSS_CC_GUEST_CFLAGS)"), \ + "BUILD","$(TARGET) guest-tests with docker qemu:$(DOCKER_IMAGE)") GUEST_BUILD=docker-build-guest-tests -endif endif # Final targets @@ -75,22 +74,22 @@ guest-tests: $(GUEST_BUILD) run-guest-tests: guest-tests $(call quiet-command, \ - (cd tests/tcg/$(TARGET_DIR) && \ - $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" \ + (cd tests/tcg/$(TARGET) && \ + $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" \ SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run), \ "RUN", "tests for $(TARGET_NAME)") else guest-tests: $(call quiet-command, /bin/true, "BUILD", \ - "$(TARGET_DIR) guest-tests SKIPPED") + "$(TARGET) guest-tests SKIPPED") run-guest-tests: $(call quiet-command, /bin/true, "RUN", \ - "tests for $(TARGET_DIR) SKIPPED") + "tests for $(TARGET) SKIPPED") endif # It doesn't matter if these don't exits .PHONY: clean-guest-tests clean-guest-tests: - rm -rf tests/tcg/$(TARGET_DIR) + rm -rf tests/tcg/$(TARGET) diff --git a/tests/tcg/Makefile.target b/tests/tcg/Makefile.target index 8dbcba4474..8808beaf74 100644 --- a/tests/tcg/Makefile.target +++ b/tests/tcg/Makefile.target @@ -31,7 +31,7 @@ all: -include ../../config-host.mak --include ../../../$(TARGET_DIR)/config-target.mak +-include ../config-$(TARGET).mak # for including , in command strings COMMA := , @@ -63,12 +63,6 @@ CFLAGS= QEMU_CFLAGS= LDFLAGS= -# The QEMU for this TARGET -ifdef CONFIG_USER_ONLY -QEMU=../../../$(TARGET_DIR)/qemu-$(TARGET_NAME) -else -QEMU=../../../$(TARGET_DIR)/qemu-system-$(TARGET_NAME) -endif QEMU_OPTS= diff --git a/tests/tcg/aarch64/Makefile.include b/tests/tcg/aarch64/Makefile.include deleted file mode 100644 index 5d4e4c6f99..0000000000 --- a/tests/tcg/aarch64/Makefile.include +++ /dev/null @@ -1,8 +0,0 @@ -# Makefile.include for AArch64 targets -# -# We don't have any bigendian build tools so we only use this for AArch64 - -ifeq ($(TARGET_NAME),aarch64) -DOCKER_IMAGE=debian-buster-arm64-cross -DOCKER_CROSS_COMPILER=aarch64-linux-gnu-gcc -endif diff --git a/tests/tcg/alpha/Makefile.include b/tests/tcg/alpha/Makefile.include deleted file mode 100644 index c7dc48eadb..0000000000 --- a/tests/tcg/alpha/Makefile.include +++ /dev/null @@ -1,2 +0,0 @@ -DOCKER_IMAGE=debian-alpha-cross -DOCKER_CROSS_COMPILER=alpha-linux-gnu-gcc diff --git a/tests/tcg/arm/Makefile.include b/tests/tcg/arm/Makefile.include deleted file mode 100644 index 8e7eac008f..0000000000 --- a/tests/tcg/arm/Makefile.include +++ /dev/null @@ -1,8 +0,0 @@ -# Makefile.include for all ARM targets -# -# We don't have any bigendian build tools so we only use this for armhf - -ifeq ($(TARGET_NAME),arm) -DOCKER_IMAGE=debian-armhf-cross -DOCKER_CROSS_COMPILER=arm-linux-gnueabihf-gcc -endif diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh new file mode 100755 index 0000000000..8e58320b13 --- /dev/null +++ b/tests/tcg/configure.sh @@ -0,0 +1,228 @@ +#! /bin/sh + +if test -z "$source_path"; then + echo Do not invoke this script directly. It is called + echo automatically by configure. + exit 1 +fi + +write_c_skeleton() { + cat > $TMPC </dev/null 2>&1 +} + +do_compiler() { + # Run the compiler, capturing its output to the log. First argument + # is compiler binary to execute. + local compiler="$1" + shift + if test -n "$BASH_VERSION"; then eval ' + echo >>config.log " +funcs: ${FUNCNAME[*]} +lines: ${BASH_LINENO[*]}" + '; fi + echo $compiler "$@" >> config.log + $compiler "$@" >> config.log 2>&1 || return $? +} + + +TMPDIR1="config-temp" +TMPC="${TMPDIR1}/qemu-conf.c" +TMPE="${TMPDIR1}/qemu-conf.exe" + +if has docker; then + docker=$($python $source_path/tests/docker/docker.py probe) +fi + +# cross compilers defaults, can be overridden with --cross-cc-ARCH +: ${cross_cc_aarch64="aarch64-linux-gnu-gcc"} +: ${cross_cc_aarch64_be="$cross_cc_aarch64"} +: ${cross_cc_cflags_aarch64_be="-mbig-endian"} +: ${cross_cc_arm="arm-linux-gnueabihf-gcc"} +: ${cross_cc_cflags_armeb="-mbig-endian"} +: ${cross_cc_i386="i386-pc-linux-gnu-gcc"} +: ${cross_cc_cflags_i386="-m32"} +: ${cross_cc_x86_64="x86_64-pc-linux-gnu-gcc"} +: ${cross_cc_cflags_x86_64="-m64"} +: ${cross_cc_ppc="powerpc-linux-gnu-gcc"} +: ${cross_cc_cflags_ppc="-m32"} +: ${cross_cc_ppc64="powerpc-linux-gnu-gcc"} +: ${cross_cc_cflags_ppc64="-m64"} +: ${cross_cc_ppc64le="powerpc64le-linux-gnu-gcc"} +: ${cross_cc_cflags_s390x="-m64"} +: ${cross_cc_cflags_sparc="-m32 -mv8plus -mcpu=ultrasparc"} +: ${cross_cc_cflags_sparc64="-m64 -mcpu=ultrasparc"} + +for target in $target_list; do + arch=${target%%-*} + case $arch in + arm|armeb) + arches=arm + ;; + aarch64|aarch64_be) + arches="aarch64 arm" + ;; + mips*) + arches=mips + ;; + ppc*) + arches=ppc + ;; + sh4|sh4eb) + arches=sh4 + ;; + x86_64) + arches="x86_64 i386" + ;; + xtensa|xtensaeb) + arches=xtensa + ;; + alpha|cris|hppa|i386|lm32|m68k|openrisc|riscv64|s390x|sh4|sparc64) + arches=$target + ;; + *) + continue + ;; + esac + + docker_image= + case $target in + aarch64-*) + # We don't have any bigendian build tools so we only use this for AArch64 + docker_image=debian-buster-arm64-cross + docker_cross_cc=aarch64-linux-gnu-gcc + ;; + alpha-*) + docker_image=debian-alpha-cross + docker_cross_cc=alpha-linux-gnu-gcc + ;; + arm-*) + # We don't have any bigendian build tools so we only use this for AArch64 + docker_image=debian-armhf-cross + docker_cross_cc=arm-linux-gnueabihf-gcc + ;; + cris-*) + docker_image=fedora-cris-cross + docker_cross_cc=cris-linux-gnu-gcc + ;; + hppa-*) + docker_image=debian-hppa-cross + docker_cross_cc=hppa-linux-gnu-gcc + ;; + i386-*) + docker_image=fedora-i386-cross + docker_cross_cc=gcc + ;; + m68k-*) + docker_image=debian-m68k-cross + docker_cross_cc=m68k-linux-gnu-gcc + ;; + mips64el-*) + docker_image=debian-mips64el-cross + docker_cross_cc=mips64el-linux-gnuabi64-gcc + ;; + mips64-*) + docker_image=debian-mips64-cross + docker_cross_cc=mips64-linux-gnuabi64-gcc + ;; + mipsel-*) + docker_image=debian-mipsel-cross + docker_cross_cc=mipsel-linux-gnu-gcc + ;; + mips-*) + docker_image=debian-mips-cross + docker_cross_cc=mips-linux-gnu-gcc + ;; + ppc-*) + docker_image=debian-powerpc-cross + docker_cross_cc=powerpc-linux-gnu-gcc + ;; + ppc64-*) + docker_image=debian-ppc64-cross + docker_cross_cc=powerpc64-linux-gnu-gcc + ;; + ppc64le-*) + docker_image=debian-ppc64el-cross + docker_cross_cc=powerpc64le-linux-gnu-gcc + ;; + riscv64-*) + docker_image=debian-riscv64-cross + docker_cross_cc=riscv64-linux-gnu-gcc + ;; + s390x-*) + docker_image=debian-s390x-cross + docker_cross_cc=s390x-linux-gnu-gcc + ;; + sh4-*) + docker_image=debian-sh4-cross + docker_cross_cc=sh4-linux-gnu-gcc + ;; + sparc64-*) + docker_image=debian-sparc64-cross + docker_cross_cc=sparc64-linux-gnu-gcc + ;; + xtensa*-softmmu) + docker_image=debian-xtensa-cross + + # default to the dc232b cpu + docker_cross_cc=/opt/2018.02/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-gcc + ;; + esac + + config_target_mak=tests/tcg/config-$target.mak + + echo "# Automatically generated by configure - do not modify" > $config_target_mak + echo "TARGET_NAME=$arch" >> $config_target_mak + case $target in + *-linux-user | *-bsd-user) + echo "CONFIG_USER_ONLY=y" >> $config_target_mak + echo "QEMU=\$(BUILD_DIR)/$target/qemu-$arch" >> $config_target_mak + ;; + *-softmmu) + echo "CONFIG_SOFTMMU=y" >> $config_target_mak + echo "QEMU=\$(BUILD_DIR)/$target/qemu-system-$arch" >> $config_target_mak + ;; + esac + + eval "target_compiler_cflags=\${cross_cc_cflags_$arch}" + echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak + + got_cross_cc=no + for i in $arch $arches; do + if eval test "x\${cross_cc_$i+yes}" != xyes; then + continue + fi + + eval "target_compiler=\${cross_cc_$i}" + if ! has $target_compiler; then + continue + fi + write_c_skeleton + if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then + # For host systems we might get away with building without -static + if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then + continue + fi + echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak + fi + echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak + enabled_cross_compilers="$enabled_cross_compilers $target_compiler" + got_cross_cc=yes + break + done + + if test $got_cross_cc = no && test "$docker" != no && test -n "$docker_image"; then + echo "DOCKER_IMAGE=$docker_image" >> $config_target_mak + echo "DOCKER_CROSS_CC_GUEST=$docker_cross_cc" >> $config_target_mak + fi +done + +if test -n "$enabled_cross_compilers"; then + echo + echo "NOTE: guest cross-compilers enabled:$enabled_cross_compilers" +fi diff --git a/tests/tcg/cris/Makefile.include b/tests/tcg/cris/Makefile.include deleted file mode 100644 index 1c037824bf..0000000000 --- a/tests/tcg/cris/Makefile.include +++ /dev/null @@ -1,6 +0,0 @@ -# -# Makefile.include for all CRIS targets -# - -DOCKER_IMAGE=fedora-cris-cross -DOCKER_CROSS_COMPILER=cris-linux-gnu-gcc diff --git a/tests/tcg/hppa/Makefile.include b/tests/tcg/hppa/Makefile.include deleted file mode 100644 index da2353430e..0000000000 --- a/tests/tcg/hppa/Makefile.include +++ /dev/null @@ -1,2 +0,0 @@ -DOCKER_IMAGE=debian-hppa-cross -DOCKER_CROSS_COMPILER=hppa-linux-gnu-gcc diff --git a/tests/tcg/i386/Makefile.include b/tests/tcg/i386/Makefile.include deleted file mode 100644 index be1c3008dd..0000000000 --- a/tests/tcg/i386/Makefile.include +++ /dev/null @@ -1,9 +0,0 @@ -# -# Makefile.include for all i386 -# -# There is enough brokeness in x86_64 compilers that we don't default -# to using the x86_64 system compiler for i386 binaries. -# - -DOCKER_IMAGE=fedora-i386-cross -DOCKER_CROSS_COMPILER=gcc diff --git a/tests/tcg/m68k/Makefile.include b/tests/tcg/m68k/Makefile.include deleted file mode 100644 index cd7c6bf50d..0000000000 --- a/tests/tcg/m68k/Makefile.include +++ /dev/null @@ -1,2 +0,0 @@ -DOCKER_IMAGE=debian-m68k-cross -DOCKER_CROSS_COMPILER=m68k-linux-gnu-gcc diff --git a/tests/tcg/mips/Makefile.include b/tests/tcg/mips/Makefile.include deleted file mode 100644 index 4a14fc078d..0000000000 --- a/tests/tcg/mips/Makefile.include +++ /dev/null @@ -1,20 +0,0 @@ -# -# Makefile.include for all MIPs targets -# -# As Debian doesn't support mip64 in big endian mode the only way to -# build BE is to pass a working cross compiler to ./configure -# - -ifeq ($(TARGET_NAME),mips64el) -DOCKER_IMAGE=debian-mips64el-cross -DOCKER_CROSS_COMPILER=mips64el-linux-gnuabi64-gcc -else ifeq ($(TARGET_NAME),mips64) -DOCKER_IMAGE=debian-mips64-cross -DOCKER_CROSS_COMPILER=mips64-linux-gnuabi64-gcc -else ifeq ($(TARGET_NAME),mipsel) -DOCKER_IMAGE=debian-mipsel-cross -DOCKER_CROSS_COMPILER=mipsel-linux-gnu-gcc -else ifeq ($(TARGET_NAME),mips) -DOCKER_IMAGE=debian-mips-cross -DOCKER_CROSS_COMPILER=mips-linux-gnu-gcc -endif diff --git a/tests/tcg/ppc/Makefile.include b/tests/tcg/ppc/Makefile.include deleted file mode 100644 index ae01fb8fad..0000000000 --- a/tests/tcg/ppc/Makefile.include +++ /dev/null @@ -1,10 +0,0 @@ -ifeq ($(TARGET_NAME),ppc) -DOCKER_IMAGE=debian-powerpc-cross -DOCKER_CROSS_COMPILER=powerpc-linux-gnu-gcc -else ifeq ($(TARGET_NAME),ppc64) -DOCKER_IMAGE=debian-ppc64-cross -DOCKER_CROSS_COMPILER=powerpc64-linux-gnu-gcc -else ifeq ($(TARGET_NAME),ppc64le) -DOCKER_IMAGE=debian-ppc64el-cross -DOCKER_CROSS_COMPILER=powerpc64le-linux-gnu-gcc -endif diff --git a/tests/tcg/riscv/Makefile.include b/tests/tcg/riscv/Makefile.include deleted file mode 100644 index d92ac6c89f..0000000000 --- a/tests/tcg/riscv/Makefile.include +++ /dev/null @@ -1,10 +0,0 @@ -# -# Makefile.include for all RISCV targets -# -# Debian only really cares about 64 bit going forward -# - -ifeq ($(TARGET_NAME),riscv64) -DOCKER_IMAGE=debian-riscv64-cross -DOCKER_CROSS_COMPILER=riscv64-linux-gnu-gcc -endif diff --git a/tests/tcg/s390x/Makefile.include b/tests/tcg/s390x/Makefile.include deleted file mode 100644 index 1f58115d96..0000000000 --- a/tests/tcg/s390x/Makefile.include +++ /dev/null @@ -1,2 +0,0 @@ -DOCKER_IMAGE=debian-s390x-cross -DOCKER_CROSS_COMPILER=s390x-linux-gnu-gcc diff --git a/tests/tcg/sh4/Makefile.include b/tests/tcg/sh4/Makefile.include deleted file mode 100644 index ad21594d9d..0000000000 --- a/tests/tcg/sh4/Makefile.include +++ /dev/null @@ -1,4 +0,0 @@ -ifneq ($(TARGET_NAME), sh4eb) -DOCKER_IMAGE=debian-sh4-cross -DOCKER_CROSS_COMPILER=sh4-linux-gnu-gcc -endif diff --git a/tests/tcg/sparc64/Makefile.include b/tests/tcg/sparc64/Makefile.include deleted file mode 100644 index 95fc8dee9f..0000000000 --- a/tests/tcg/sparc64/Makefile.include +++ /dev/null @@ -1,2 +0,0 @@ -DOCKER_IMAGE=debian-sparc64-cross -DOCKER_CROSS_COMPILER=sparc64-linux-gnu-gcc diff --git a/tests/tcg/xtensa/Makefile.include b/tests/tcg/xtensa/Makefile.include deleted file mode 100644 index 423c00a5d3..0000000000 --- a/tests/tcg/xtensa/Makefile.include +++ /dev/null @@ -1,11 +0,0 @@ -# Makefile.include for xtensa targets -# -# The compilers can only be used for building system tests - -ifeq ($(CONFIG_SOFTMMU),y) -DOCKER_IMAGE=debian-xtensa-cross - -# default to the dc232b cpu -DOCKER_CROSS_COMPILER=/opt/2018.02/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-gcc -DOCKER_CROSS_LINKER=/opt/2018.02/xtensa-dc232b-elf/bin/xtensa-dc232b-elf-ld -endif