From patchwork Fri Dec 17 01:39:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683371 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D26F8C433F5 for ; Fri, 17 Dec 2021 01:39:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230289AbhLQBjf (ORCPT ); Thu, 16 Dec 2021 20:39:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229598AbhLQBje (ORCPT ); Thu, 16 Dec 2021 20:39:34 -0500 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCC29C061574 for ; Thu, 16 Dec 2021 17:39:33 -0800 (PST) Received: by mail-wr1-x42e.google.com with SMTP id q16so1158038wrg.7 for ; Thu, 16 Dec 2021 17:39:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=O/BXGjKZy5ZjLY8AM79G8q1uwvjx5Tb58jnYtQtJnzc=; b=a1eh6GlO5UVmg3A+b5pkwaSrqpTbc0Lqc6LJnf59GOXY7nEY7larhOfj2rK5l7C/y/ OGboJawnzipGumAc9msqUDX9sW0mhWQXloj6TGL33BTUTlIXJh3HX0mgJf2Tpa7EZkSy OnLBC7VpDwxpDCxRKL9qAYwEX5NElcF5rp3ckK763+bnM/EZyYGmceEcUGjOglc51Xtk 3Pcfsq6QTbBw7IrDPrKDgnv+I9w6e28sBl1J0HzvmI44WurFFciKPCngx2Gmyy/9EO1f pdxFKia1nQJ0ZpZyw9Ji17F9Bh6eHTs7NiYKoVDpVRM3CVAkn2NQasTRmu7D+Wat4JjT cX5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=O/BXGjKZy5ZjLY8AM79G8q1uwvjx5Tb58jnYtQtJnzc=; b=wRi4r7txi58V6JKBKG4q8h0IQ5HkilmoEBVPO2gaUsf8E5o2AB+XyzQEfBI5Y/bUPk Fzz571UvB35io3cKn0EbIjc76cbM2SMtFm1cKU9fwixJoJQWnouhMNl/lyv+SE41egiO QiJR6K95vThi78bXh3yf1gkDn61NXFuI4aZnC6llTMo/0vSOChtOqfxlBmpaHEOL8Nwh JUhVy/XswzQ/53c/cJbJZraEeeS4bvn0FLYjh5vpMAdMS/cIk4yCWO9cbulCCw277xZU pVrPFCZ8gMOi9+Y8s+TEj0Z27krOnTwFaUzbuWqYApVxTcsnbeHN39lBbBvlv0w6eJF8 kYNQ== X-Gm-Message-State: AOAM530SmB2hRQHF3g3CNEZ+E5eZSOqcb84eqWaadXXZl02jgVouKoMj YbzWBR8Sp7wm0/jWK32Q7Q0MuafFPrxqUw== X-Google-Smtp-Source: ABdhPJwhkXU5ec9JXM8ByDx9+3cxrFVN3bTa/qP0GyUH6Tc4wQWRkvG/fRxNgBgX4kZ6Jw/e4kYgrw== X-Received: by 2002:a5d:66cd:: with SMTP id k13mr518927wrw.517.1639705172053; Thu, 16 Dec 2021 17:39:32 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:30 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 1/8] Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it Date: Fri, 17 Dec 2021 02:39:19 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org We have various behavior that's shared across our Makefiles, or that really should be (e.g. via defined templates). Let's create a top-level "shared.mak" to house those sorts of things, and start by adding the ".DELETE_ON_ERROR" flag to it. See my own 7b76d6bf221 (Makefile: add and use the ".DELETE_ON_ERROR" flag, 2021-06-29) and db10fc6c09f (doc: simplify Makefile using .DELETE_ON_ERROR, 2021-05-21) for the addition and use of the ".DELETE_ON_ERROR" flag. This does have the potential downside that if e.g. templates/Makefile would like to include this "shared.mak" in the future the semantics of such a Makefile will change, but as noted in the above commits (and GNU make's own documentation) any such change would be for the better, so it's safe to do this. This also doesn't introduce a bug by e.g. having this ".DELETE_ON_ERROR" flag only apply to this new shared.mak, Makefiles have no such scoping semantics. Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 6 +++--- Makefile | 13 +++---------- shared.mak | 9 +++++++++ t/Makefile | 3 +++ t/interop/Makefile | 3 +++ templates/Makefile | 3 +++ 6 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 shared.mak diff --git a/Documentation/Makefile b/Documentation/Makefile index ed656db2ae9..ba27456c86a 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # Guard against environment variables MAN1_TXT = MAN5_TXT = @@ -524,7 +527,4 @@ doc-l10n install-l10n:: $(MAKE) -C po $@ endif -# Delete the target file on error -.DELETE_ON_ERROR: - .PHONY: FORCE diff --git a/Makefile b/Makefile index 9c00a793e47..9842a234790 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include shared.mak + # The default target of this Makefile is... all:: @@ -2168,16 +2171,6 @@ shell_compatibility_test: please_set_SHELL_PATH_to_a_more_modern_shell strip: $(PROGRAMS) git$X $(STRIP) $(STRIP_OPTS) $^ -### Flags affecting all rules - -# A GNU make extension since gmake 3.72 (released in late 1994) to -# remove the target of rules if commands in those rules fail. The -# default is to only do that if make itself receives a signal. Affects -# all targets, see: -# -# info make --index-search=.DELETE_ON_ERROR -.DELETE_ON_ERROR: - ### Target-specific flags and dependencies # The generic compilation pattern rule and automatically diff --git a/shared.mak b/shared.mak new file mode 100644 index 00000000000..0170bb397ae --- /dev/null +++ b/shared.mak @@ -0,0 +1,9 @@ +### Flags affecting all rules + +# A GNU make extension since gmake 3.72 (released in late 1994) to +# remove the target of rules if commands in those rules fail. The +# default is to only do that if make itself receives a signal. Affects +# all targets, see: +# +# info make --index-search=.DELETE_ON_ERROR +.DELETE_ON_ERROR: diff --git a/t/Makefile b/t/Makefile index 882d26eee30..795b94b50ce 100644 --- a/t/Makefile +++ b/t/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # Run tests # # Copyright (c) 2005 Junio C Hamano diff --git a/t/interop/Makefile b/t/interop/Makefile index 31a4bbc716a..6911c2915a7 100644 --- a/t/interop/Makefile +++ b/t/interop/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../../shared.mak + -include ../../config.mak export GIT_TEST_OPTIONS diff --git a/templates/Makefile b/templates/Makefile index d22a71a3999..636cee52f51 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../shared.mak + # make and install sample templates ifndef V From patchwork Fri Dec 17 01:39:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683369 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9681C433FE for ; Fri, 17 Dec 2021 01:39:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230330AbhLQBjg (ORCPT ); Thu, 16 Dec 2021 20:39:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58918 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230161AbhLQBjf (ORCPT ); Thu, 16 Dec 2021 20:39:35 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B59ADC06173E for ; Thu, 16 Dec 2021 17:39:34 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id c4so1139924wrd.9 for ; Thu, 16 Dec 2021 17:39:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=hxh68uU7jF4zSQ3XWzHLm82LKkUP0o4wKc2GLAJ3vD0=; b=h4EFVjNvHEy5rCeT4uQMrenubGZNRwm3hukaQ+LgLjAYvYDlXaH0Vzxdy97iCJlS39 /q3FxCojA6qUks2lFLw0PB/i4lVf1GQQda2r2+8yTmpbVKP3lMRcp+4q8Iglvbf98kda jPppNIrybswLMhdvZFzId4guaHAxOrmoO5Z7W/1PIl/c2jozZurYihlGoXTOQxXujgWM W6VvCfVybcwsRVV2ZQsQdzmQ8CQ3g0GTHF5FoxBOCxEfpHGOPCy21dahPDw7iFgtADm4 VQ/XNPZspSHyDN+c+fzsSMiL84KYLu+Lhmqn/mbKpfxRQBO0Qb1QZ/zdRvIC5VvOttod OmJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=hxh68uU7jF4zSQ3XWzHLm82LKkUP0o4wKc2GLAJ3vD0=; b=6hpz6cjtaRE5Mjn1NW6jao5XHZtSW76nESJncO+Tj9OcFG4PVbljDX+MsIS/gBdZaY vGNxLhUYLShNAwt+NzKMGx69U3mnEk3RLU8TGWiTHwL69AgPmxwlXwgO9ST/oyeTUeIS HCgEB2D1Zf1NnpNvE5SIAdjak7busAfC4ZAGGTbGdvAi3vNdqpq+VNPWVKQ0/XA6qaUw T3yW3kBX5XcXUphyiwCDWjhDqlcN/jdHoYe9ggyNc34F1j+0s0ZRcjLwS4D4+fYjS6w9 dVmuNeLHdj/TSSlwqL2nRwc36POTx5oTOuz1QrQZTmyWuU6PHKn2iFQlUQiOhishOohx yulg== X-Gm-Message-State: AOAM533N1Tb3poDIoNJaMSOv62ohUZQoIsJUb1dj8U472p6Ib2jZG0N+ gIS2m0TLBJSGkA5K/MiSAJtq2iAARIxJJQ== X-Google-Smtp-Source: ABdhPJy/t9rHrMwwYN5NGsLimjL1w+//8UbCLqIEqTvGSW8e2PrHZ0dZ9fZ8jWvAD9hjy8gg8ZleqA== X-Received: by 2002:a5d:6d8a:: with SMTP id l10mr475306wrs.157.1639705173014; Thu, 16 Dec 2021 17:39:33 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:32 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 2/8] Makefile: disable GNU make built-in wildcard rules Date: Fri, 17 Dec 2021 02:39:20 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Override built-in rules of GNU make that use a wildcard target. This can speeds things up significantly as we don't need to stat() so many files. GNU make does that by default to see if it can retrieve their contents from RCS or SCCS. See [1] for an old mailing list discussion about how to disable these. The speed-up may wary. I've seen 1-10% depending on the speed of the local disk, caches, -jN etc. Running: strace -f -c -S calls make -j1 NO_TCLTK=Y Shows that we reduce the number of syscalls we make, mostly in "stat" calls. We could also invoke make with "-r" by setting "MAKEFLAGS = -r" early. Doing so might make us a bit faster still. But doing so is a much bigger hammer, since it will disable all built-in rules, some (all?) of which can be seen with: make -f/dev/null -p | grep -v -e ^# -e ^$ We may have something that relies on them, so let's go for the more isolated optimization here that gives us most or all of the wins. 1. https://lists.gnu.org/archive/html/help-make/2002-11/msg00063.html Signed-off-by: Ævar Arnfjörð Bjarmason --- shared.mak | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/shared.mak b/shared.mak index 0170bb397ae..29f0e69ecb9 100644 --- a/shared.mak +++ b/shared.mak @@ -1,3 +1,14 @@ +### Remove GNU make implicit rules + +## This speeds things up since we don't need to look for and stat() a +## "foo.c,v" every time a rule referring to "foo.c" is in play. See +## "make -p -f/dev/null | grep ^%::'". +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% + ### Flags affecting all rules # A GNU make extension since gmake 3.72 (released in late 1994) to From patchwork Fri Dec 17 01:39:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683373 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 99717C433EF for ; Fri, 17 Dec 2021 01:39:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230334AbhLQBji (ORCPT ); Thu, 16 Dec 2021 20:39:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230161AbhLQBjg (ORCPT ); Thu, 16 Dec 2021 20:39:36 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 57118C061574 for ; Thu, 16 Dec 2021 17:39:36 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id j9so1265793wrc.0 for ; Thu, 16 Dec 2021 17:39:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=W7h368rVPfWzXu3Kqbp6B08nnk4RgdyPdXIuJr0QQEc=; b=JYjqdl+iXs2t5yf+RcAuKOD8VVG24puOoFC/Dh+/ZOTWJ8KDkBnvCMMImcwmX73ZLE OFMHIvE9SZTV4bkuWqF6WB8VojPcOy0oyCx+XEhkBYTvfvqYwCqoiI67XJoH05PETbGX np4MexjFEGuAe9rcvRUxf39788b6y5pwPPU2DqMnxGtYt513MsDBJtxIGHgvxZ2lF3v5 frbZri1m8NFeffUvB5ROzRs7yiR/lj/VH4PnNPq4g/+sAvrAzpe4R4kpVKQjoyZN4AgX NwPYI3SOLRYfNw199ATAlJpq7Ke5EVV4CD1XK6ByOqJA/fd5O5Nvqr/ZEG/aEUOlOyf0 g+SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=W7h368rVPfWzXu3Kqbp6B08nnk4RgdyPdXIuJr0QQEc=; b=qjEhDmSSsMYr3jATYobKNXLX+sBhlQX/HMZj+QGeK8y6asx/Y+7DioJ7ulufLN/nfN nPXu/MK4ySv1ds0xAHUOp+a/nJnhIuXX79KGRtzi5kTBUDKsxU1XcdZKjjpsWcTYrOJM uvjwMjCXmw+E2ns2zFW5UOhoIkRD8cy4+Lh1ZtwlWNQ2rrf7piS1ywp8UPgoO5ktgdNT s0pa++N0aEclDHd0CLOmqvh5CSObyjzAGgBFwmfU/BZ7hFvex4rbX+/h94m/HDItsRfZ pqQ54i4IlSTN8yyZCDs9X/Zkd46nYQazMwELPidEFi7Wmcgg854luZ3D+lgRaTCjrGSC /lsw== X-Gm-Message-State: AOAM532e+x+7MzU4A/UWqbNa/ikmaDT8HR3z9DzE0LusncSF11DJszJ3 n1Y5aUXPmMSpd8U8FGDFn0+oB5eexPpqkA== X-Google-Smtp-Source: ABdhPJybr6vuj7XM4E2lHy3Ta/X+iR2Crq9U/O1m30RuzeczaTn9GhFpEHMHsH9mNOs8IAUh0mTxjw== X-Received: by 2002:a05:6000:12d2:: with SMTP id l18mr467628wrx.289.1639705174208; Thu, 16 Dec 2021 17:39:34 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:33 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 3/8] Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES) Date: Fri, 17 Dec 2021 02:39:21 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Combine the definitions of $(FIND_SOURCE_FILES) and $(LIB_H) to speed up the Makefile, as these are the two main expensive $(shell) commands that we execute unconditionally. When see what was in $(FOUND_SOURCE_FILES) that wasn't in $(LIB_H) via the ad-hoc test of: $(error $(filter-out $(LIB_H),$(filter %.h,$(ALL_SOURCE_FILES)))) $(error $(filter-out $(ALL_SOURCE_FILES),$(filter %.h,$(LIB_H)))) We'll get, respectively: Makefile:850: *** t/helper/test-tool.h. Stop. Makefile:850: *** . Stop. I.e. we only had a discrepancy when it came to t/helper/test-tool.h. In terms of correctness this was broken before, but now works: $ make t/helper/test-tool.hco HDR t/helper/test-tool.h This speeds things up a lot: $ git -c hyperfine.hook.setup= hyperfine -L rev HEAD~1,HEAD~0 -s 'make NO_TCLTK=Y' 'make -j1 NO_TCLTK=Y' --warmup 10 -M 10 Benchmark 1: make -j1 NO_TCLTK=Y' in 'HEAD~1 Time (mean ± σ): 159.9 ms ± 6.8 ms [User: 137.2 ms, System: 28.0 ms] Range (min … max): 154.6 ms … 175.9 ms 10 runs Benchmark 2: make -j1 NO_TCLTK=Y' in 'HEAD~0 Time (mean ± σ): 100.0 ms ± 1.3 ms [User: 84.2 ms, System: 20.2 ms] Range (min … max): 98.8 ms … 102.8 ms 10 runs Summary 'make -j1 NO_TCLTK=Y' in 'HEAD~0' ran 1.60 ± 0.07 times faster than 'make -j1 NO_TCLTK=Y' in 'HEAD~1' Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 54 ++++++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 28 deletions(-) diff --git a/Makefile b/Makefile index 9842a234790..d290a28671a 100644 --- a/Makefile +++ b/Makefile @@ -826,12 +826,33 @@ GENERATED_H += hook-list.h .PHONY: generated-hdrs generated-hdrs: $(GENERATED_H) -LIB_H := $(sort $(patsubst ./%,%,$(shell git ls-files '*.h' ':!t/' ':!Documentation/' 2>/dev/null || \ +## Exhaustive lists of our source files, either dynamically generated, +## or hardcoded. +SOURCES_CMD = ( \ + git ls-files \ + '*.[hcS]' \ + '*.sh' \ + ':!*[tp][0-9][0-9][0-9][0-9]*' \ + ':!contrib' \ + 2>/dev/null || \ $(FIND) . \ - -name .git -prune -o \ - -name t -prune -o \ - -name Documentation -prune -o \ - -name '*.h' -print))) + \( -name .git -type d -prune \) \ + -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ + -o \( -name contrib -type d -prune \) \ + -o \( -name build -type d -prune \) \ + -o \( -name 'trash*' -type d -prune \) \ + -o \( -name '*.[hcS]' -type f -print \) \ + -o \( -name '*.sh' -type f -print \) \ + | sed -e 's|^\./||' \ + ) +FOUND_SOURCE_FILES := $(shell $(SOURCES_CMD)) + +FOUND_C_SOURCES = $(filter %.c,$(FOUND_SOURCE_FILES)) +FOUND_H_SOURCES = $(filter %.h,$(FOUND_SOURCE_FILES)) + +COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES),$(FOUND_C_SOURCES)) + +LIB_H = $(FOUND_H_SOURCES) LIB_OBJS += abspath.o LIB_OBJS += add-interactive.o @@ -2748,26 +2769,6 @@ perl/build/man/man3/Git.3pm: perl/Git.pm $(QUIET_GEN)mkdir -p $(dir $@) && \ pod2man $< $@ -FIND_SOURCE_FILES = ( \ - git ls-files \ - '*.[hcS]' \ - '*.sh' \ - ':!*[tp][0-9][0-9][0-9][0-9]*' \ - ':!contrib' \ - 2>/dev/null || \ - $(FIND) . \ - \( -name .git -type d -prune \) \ - -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ - -o \( -name contrib -type d -prune \) \ - -o \( -name build -type d -prune \) \ - -o \( -name 'trash*' -type d -prune \) \ - -o \( -name '*.[hcS]' -type f -print \) \ - -o \( -name '*.sh' -type f -print \) \ - | sed -e 's|^\./||' \ - ) - -FOUND_SOURCE_FILES = $(shell $(FIND_SOURCE_FILES)) - $(ETAGS_TARGET): $(FOUND_SOURCE_FILES) $(QUIET_GEN)$(RM) $@+ && \ echo $(FOUND_SOURCE_FILES) | xargs etags -a -o $@+ && \ @@ -2977,9 +2978,6 @@ check: $(GENERATED_H) exit 1; \ fi -FOUND_C_SOURCES = $(filter %.c,$(FOUND_SOURCE_FILES)) -COCCI_SOURCES = $(filter-out $(THIRD_PARTY_SOURCES),$(FOUND_C_SOURCES)) - %.cocci.patch: %.cocci $(COCCI_SOURCES) $(QUIET_SPATCH) \ if test $(SPATCH_BATCH_SIZE) = 0; then \ From patchwork Fri Dec 17 01:39:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683377 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1260C433EF for ; Fri, 17 Dec 2021 01:39:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230421AbhLQBjj (ORCPT ); Thu, 16 Dec 2021 20:39:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58928 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230331AbhLQBjh (ORCPT ); Thu, 16 Dec 2021 20:39:37 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E13D1C06173E for ; Thu, 16 Dec 2021 17:39:36 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id d198-20020a1c1dcf000000b0034569cdd2a2so621134wmd.5 for ; Thu, 16 Dec 2021 17:39:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=R0OSJRQobVDPPh2nkhVhyctXBdpo95aFHvDe8JEvrlI=; b=HvAqKh8LmdrnULse3MTcgd5lnUA5huJtgV/NKNaobVk3OE3BV4a6kpmnlZ2+lgzPSX XJpWCXY2YCV5QrMXwcsPyGMzkhNsrbGTlLVrzGfI3fA/ecplf60BwnmK/O8ILK55y1Cv LGF489GxBb0i3fv717qqbDfMOBlvDZFTWHrIDVzjJGn+LRsKPhSfs8QZCTh1AI8p1vz5 5O/hEoNxenp2RxikZcAsPgHndGB06vAffe4hEQ84WYeBNE50gpWPKO6jFgp+KjL0BSJP TwiNh5nuY52uL/tR8FtYT/BhWebX229nUEJCxwHIw3jv9GrHhyKnx5VIlwmR8JAWTQiv LW1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=R0OSJRQobVDPPh2nkhVhyctXBdpo95aFHvDe8JEvrlI=; b=lndRsJA5UyV3gyrwOQq9B9M31BoIGMQ5n7+Q5X4P7tdi0uLW8NbUNgr+1x7EwNoacd Rj/e8omSayQ5Zs5osFS9G5lPAyszyZgZmat6V4Ptbtz/fExo/MYvmf7sEhF5ADeJqg0j Ad5ZtF6it0xp3hSUqb4FQrC6ZvR8iAedWKm2r+nTpw90sSs14jmO8vJV9MWyE42prSgr CnIz2aygBU8bkYggTPkSo1CXUx9Rk7GaX5Z0bkRvuwIpW8zWTrp06iXit3QLQJCK593L VtM7rF2w4NtoOyTM26QcB6WF4DkQSyvX2PNLbgwLdvwYRO/3I2luim2pEKnIT7AIww5I MvAQ== X-Gm-Message-State: AOAM532B/vLImhl0ZHYigDf5mhmr7lQkjakiam0RBwNR23mhDwLO31Ib E3OlX5DqUxpPSkr+BuG0NmCsUZnItIPbRA== X-Google-Smtp-Source: ABdhPJybV3euaHl+k0tZAk/t+wOp+guIWXrKu2m9AG16ALH3i0aquYM2uw6sUXvfhDhxUO/hKsIJ6w== X-Received: by 2002:a05:600c:4f14:: with SMTP id l20mr7333861wmq.164.1639705175256; Thu, 16 Dec 2021 17:39:35 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:34 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 4/8] Makefile: move ".SUFFIXES" rule to shared.mak Date: Fri, 17 Dec 2021 02:39:22 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org This was added in 30248886ce8 (Makefile: disable default implicit rules, 2010-01-26), let's move it to the top of "shared.mak" so it'll apply to all our Makefiles. This doesn't benefit the main Makefile at all, since it already had the rule, but since we're including shared.mak in other Makefiles starts to benefit them. E.g. running the 'man" target is now faster: $ git -c hyperfine.hook.setup= hyperfine -L rev HEAD~1,HEAD~0 -s 'make -C Documentation man' 'make -C Documentation -j1 man' Benchmark 1: make -C Documentation -j1 man' in 'HEAD~1 Time (mean ± σ): 121.7 ms ± 8.8 ms [User: 105.8 ms, System: 18.6 ms] Range (min … max): 112.8 ms … 148.4 ms 26 runs Benchmark 2: make -C Documentation -j1 man' in 'HEAD~0 Time (mean ± σ): 97.5 ms ± 8.0 ms [User: 80.1 ms, System: 20.1 ms] Range (min … max): 89.8 ms … 111.8 ms 32 runs Summary 'make -C Documentation -j1 man' in 'HEAD~0' ran 1.25 ± 0.14 times faster than 'make -C Documentation -j1 man' in 'HEAD~1' Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 2 -- shared.mak | 5 +++++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d290a28671a..50359603dbc 100644 --- a/Makefile +++ b/Makefile @@ -2543,8 +2543,6 @@ ASM_SRC := $(wildcard $(OBJECTS:o=S)) ASM_OBJ := $(ASM_SRC:S=o) C_OBJ := $(filter-out $(ASM_OBJ),$(OBJECTS)) -.SUFFIXES: - $(C_OBJ): %.o: %.c GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir) $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(compdb_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $< $(ASM_OBJ): %.o: %.S GIT-CFLAGS $(missing_dep_dirs) $(missing_compdb_dir) diff --git a/shared.mak b/shared.mak index 29f0e69ecb9..155ac84f867 100644 --- a/shared.mak +++ b/shared.mak @@ -9,6 +9,11 @@ %:: s.% %:: SCCS/s.% +## Likewise delete default $(SUFFIXES). See: +## +## info make --index-search=.DELETE_ON_ERROR +.SUFFIXES: + ### Flags affecting all rules # A GNU make extension since gmake 3.72 (released in late 1994) to From patchwork Fri Dec 17 01:39:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683375 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0EC6AC433FE for ; Fri, 17 Dec 2021 01:39:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231146AbhLQBjl (ORCPT ); Thu, 16 Dec 2021 20:39:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230380AbhLQBji (ORCPT ); Thu, 16 Dec 2021 20:39:38 -0500 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EFB56C061747 for ; Thu, 16 Dec 2021 17:39:37 -0800 (PST) Received: by mail-wr1-x436.google.com with SMTP id s1so1208811wrg.1 for ; Thu, 16 Dec 2021 17:39:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=q53gztIOIbajQ61p247fNqRZOJrPIF5t5cHz2vpHcZo=; b=SciW1ZrCqSrGxinfaz5dZr9GNQpzi24unQB4Z+hPOHRix2nZ/w5mplcu4OKh/l8ltD 22d1jYFzJzjWBvsbDYj7M34aO35f7bhwtqpqpuResMWbkPZ3j68cTZQznGubTPoq+OeJ Z6SPKQOAtlfETFrOdkydQhMn5rPD3hjqxBbOXV1Rt89ZugwsRN5Q8TEPI24NOQRFlOvX pmT9kfab3lTTuf4M5H7FVgQkr1EUoXI7Pxv+ih9vjxMne/B8PpEsp+za/Qb6O99hrtSL gBdkhOlNi41C6ItutxGSCNo79F7ieZSYMByffMhwmwGz4fkpmqnGe+wt4/Kr/Cgm7Sc/ nGeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=q53gztIOIbajQ61p247fNqRZOJrPIF5t5cHz2vpHcZo=; b=TIgPYTx8jC/+n8KJoyWkx7qFmMfAtv2KxB6W1c7/G+vbmVOXzErj3ppptCHhVb+D/Q 67NH1hq0hiQuKtmb5VSb++YkYrmdOm5XncoQikVWsz8GEWrgzdrr1U7ru9VmzM1ABFAH i+rwZocsCIX82ZBzPm8A3NZqr/Y4h2XVf4m90lrxQWYLaoWnItCTVtV76zx0omScodJk Do7fSIgMO8PFWSYiNtRXEzyA1MZ61EfR62NdPewP4jGo+CrA0AI4ThNH4ZxIyVKm6wn/ OQopIWFdjCc8eGeZG345SIQjJoiq2PrbENHRnNizl+vh0YruHGS6vRuOm+t8dQi2Mpfn vXAQ== X-Gm-Message-State: AOAM533WM92XuJbNgv2JKk+RVVhguXjlrU8Ubn0oWx8/L8UMRLviW/aF oMP3OMmg4nyTkbInbrTlMoLH3RRPkFHSdA== X-Google-Smtp-Source: ABdhPJx1ahHiZk0Pn3ipgAvcKqCdHQxgkRoG5KMCqFltjAtGBXTNXv3e2zL5oqZGk7H6BdSDSbla1w== X-Received: by 2002:a05:6000:188d:: with SMTP id a13mr485438wri.461.1639705176234; Thu, 16 Dec 2021 17:39:36 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:35 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 5/8] Makefile: move $(comma), $(empty) and $(space) to shared.mak Date: Fri, 17 Dec 2021 02:39:23 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Move these variables over to the shared.max, we'll make use of them in a subsequent commit. There was no reason for these to be "simply expanded variables", so let's use the normal lazy "=" assignment here. See 425ca6710b2 (Makefile: allow combining UBSan with other sanitizers, 2017-07-15) for the commit that introduced these. Signed-off-by: Ævar Arnfjörð Bjarmason --- Makefile | 4 ---- shared.mak | 8 ++++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 50359603dbc..4dfb88ccb3f 100644 --- a/Makefile +++ b/Makefile @@ -1278,10 +1278,6 @@ endif ALL_CFLAGS = $(DEVELOPER_CFLAGS) $(CPPFLAGS) $(CFLAGS) ALL_LDFLAGS = $(LDFLAGS) -comma := , -empty := -space := $(empty) $(empty) - ifdef SANITIZE SANITIZERS := $(foreach flag,$(subst $(comma),$(space),$(SANITIZE)),$(flag)) BASIC_CFLAGS += -fsanitize=$(SANITIZE) -fno-sanitize-recover=$(SANITIZE) diff --git a/shared.mak b/shared.mak index 155ac84f867..b34fb948c0f 100644 --- a/shared.mak +++ b/shared.mak @@ -23,3 +23,11 @@ # # info make --index-search=.DELETE_ON_ERROR .DELETE_ON_ERROR: + +### Global variables + +## comma, empty, space: handy variables as these tokens are either +## special or can be hard to spot among other Makefile syntax. +comma = , +empty = +space = $(empty) $(empty) From patchwork Fri Dec 17 01:39:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683379 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9B36C433FE for ; Fri, 17 Dec 2021 01:39:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231201AbhLQBjm (ORCPT ); Thu, 16 Dec 2021 20:39:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58952 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230341AbhLQBjj (ORCPT ); Thu, 16 Dec 2021 20:39:39 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D88BDC061574 for ; Thu, 16 Dec 2021 17:39:38 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id o29so616273wms.2 for ; Thu, 16 Dec 2021 17:39:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=vyVBH3sZQepEVI6dEFZrH40mf+gCCnzro3wu2dkszU8=; b=ig10vj0YZfWeF3Yow4ckKSN1idgsBieHdlUb5hyB0jd9808kpltc6TxNDn5Neg+WhV ON8zU5mUMC3GN96pUVcxDENn61jT3O8AziTpKt3K+uMtEVxv2JmE7QJxY+0oQjLyxg+Q ufheMYQ0bKY1UOd67vPkuOoG/D7SvnNkUx2wG4bFRZWIuWN9gG4MLxFPFoZ+SwMpl6Lm KR034UYUSIKrKnC5o+UIPgT+Hn89rnIezdwOA2VmPx/PQl4JjtjSbJuo/4e028+R3D9H CLnTSlXTa0v/dOP8BA3TypP/j+iKaxwsg7lQMFq1Ycw+0zj6WZxlhJZw8+yEdHZnG2nG dLlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=vyVBH3sZQepEVI6dEFZrH40mf+gCCnzro3wu2dkszU8=; b=yk7qZOAGpAUFHYdAZd/IrhKHKj2oHFl87EMY8VvsKWPrC+32XGnCSpjeZd02qkucrb w4agy6+dpn0nnxJ2WXfUSiukPreODzZkdbWeU7AcuxCOvhtfwS5b4vDmWdmP2xWQeVRc HDadR1bEHARGYMFQhwVaMztwdKsl3PzGHWawk9B7Xg0JBSALOXCbr3vIJ8D5NVv2erI5 xST4shj3O7IZbPDtNfsjakOrWDcWUuC/lEShb1URooOx2RxJCi/TzBXpzDQTotU0yXAM B3Stq0JT0Y+w7wmWnG3d60T5JzWd6AKSGsdkjoRjIY6+6vhGOv1JTdNWuPe1uTnh4wEu GQXA== X-Gm-Message-State: AOAM531azUzcgtiZeTRN9SaS3iVIFW2fYtHNmWoR27VXObWVDkNECfsE IuYt/S8q7HOK/wL1T67XcX5jCZSYSQhUeA== X-Google-Smtp-Source: ABdhPJxzglCcC6MvAVO6NpD8aWoCI4ZitCa/MJcgU/PymDAdJZRXqJf0xHlYKpa3+TZsi//tI1zaYQ== X-Received: by 2002:a05:600c:3ac6:: with SMTP id d6mr510562wms.191.1639705177151; Thu, 16 Dec 2021 17:39:37 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:36 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 6/8] Makefile: add "$(QUIET)" boilerplate to shared.mak Date: Fri, 17 Dec 2021 02:39:24 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org The $(QUIET) variables we define are largely duplicated between our various Makefiles, let's define them in the new "shared.mak" instead. Since we're not using the environment to pass these around we don't need to export the "QUIET_GEN" and "QUIET_BUILT_IN" variables anymore. The "QUIET_GEN" variable is used in "git-gui/Makefile" and "gitweb/Makefile", but they've got their own definition for those. The "QUIET_BUILT_IN" variable is only used in the top-level "Makefile". We still need to export the "V" variable. Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 32 ------------------------- Makefile | 33 -------------------------- config.mak.uname | 1 - shared.mak | 53 ++++++++++++++++++++++++++++++++++++++++++ templates/Makefile | 5 ---- 5 files changed, 53 insertions(+), 71 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index ba27456c86a..0f4ebdeda8a 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -218,38 +218,6 @@ DEFAULT_EDITOR_SQ = $(subst ','\'',$(DEFAULT_EDITOR)) ASCIIDOC_EXTRA += -a 'git-default-editor=$(DEFAULT_EDITOR_SQ)' endif -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring $(MAKEFLAGS),w),w) -PRINT_DIR = --no-print-directory -else # "make -w" -NO_SUBDIR = : -endif - -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - QUIET = @ - QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; - QUIET_XMLTO = @echo ' ' XMLTO $@; - QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; - QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; - QUIET_DBLATEX = @echo ' ' DBLATEX $@; - QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_STDERR = 2> /dev/null - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir - - QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; - QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; - QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; - - export V -endif -endif - all: html man html: $(DOC_HTML) diff --git a/Makefile b/Makefile index 4dfb88ccb3f..9f27fc77e5a 100644 --- a/Makefile +++ b/Makefile @@ -1970,39 +1970,6 @@ ifndef PAGER_ENV PAGER_ENV = LESS=FRX LV=-c endif -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring w,$(MAKEFLAGS)),w) -PRINT_DIR = --no-print-directory -else # "make -w" -NO_SUBDIR = : -endif - -ifneq ($(findstring s,$(MAKEFLAGS)),s) -ifndef V - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_BUILT_IN = @echo ' ' BUILTIN $@; - QUIET_GEN = @echo ' ' GEN $@; - QUIET_LNCP = @echo ' ' LN/CP $@; - QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; - QUIET_MSGFMT = @echo ' ' MSGFMT $@; - QUIET_GCOV = @echo ' ' GCOV $@; - QUIET_SP = @echo ' ' SP $<; - QUIET_HDR = @echo ' ' HDR $(<:hcc=h); - QUIET_RC = @echo ' ' RC $@; - QUIET_SPATCH = @echo ' ' SPATCH $<; - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir - export V - export QUIET_GEN - export QUIET_BUILT_IN -endif -endif - ifdef NO_INSTALL_HARDLINKS export NO_INSTALL_HARDLINKS endif diff --git a/config.mak.uname b/config.mak.uname index a3a779327f8..cfc2416c935 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -720,7 +720,6 @@ vcxproj: git diff-index --cached --quiet HEAD -- # Make .vcxproj files and add them - unset QUIET_GEN QUIET_BUILT_IN; \ perl contrib/buildsystems/generate -g Vcxproj git add -f git.sln {*,*/lib,t/helper/*}/*.vcxproj diff --git a/shared.mak b/shared.mak index b34fb948c0f..d6f70f3d6c9 100644 --- a/shared.mak +++ b/shared.mak @@ -31,3 +31,56 @@ comma = , empty = space = $(empty) $(empty) + +### Quieting +## common +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir +QUIET_SUBDIR1 = + +ifneq ($(findstring w,$(MAKEFLAGS)),w) +PRINT_DIR = --no-print-directory +else # "make -w" +NO_SUBDIR = : +endif + +ifneq ($(findstring s,$(MAKEFLAGS)),s) +ifndef V +## common + QUIET_SUBDIR0 = +@subdir= + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + $(MAKE) $(PRINT_DIR) -C $$subdir + + QUIET = @ + QUIET_GEN = @echo ' ' GEN $@; + +## Used in "Makefile" + QUIET_CC = @echo ' ' CC $@; + QUIET_AR = @echo ' ' AR $@; + QUIET_LINK = @echo ' ' LINK $@; + QUIET_BUILT_IN = @echo ' ' BUILTIN $@; + QUIET_LNCP = @echo ' ' LN/CP $@; + QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; + QUIET_MSGFMT = @echo ' ' MSGFMT $@; + QUIET_GCOV = @echo ' ' GCOV $@; + QUIET_SP = @echo ' ' SP $<; + QUIET_HDR = @echo ' ' HDR $(<:hcc=h); + QUIET_RC = @echo ' ' RC $@; + QUIET_SPATCH = @echo ' ' SPATCH $<; + +## Used in "Documentation/Makefile" + QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; + QUIET_XMLTO = @echo ' ' XMLTO $@; + QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; + QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; + QUIET_DBLATEX = @echo ' ' DBLATEX $@; + QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; + QUIET_GEN = @echo ' ' GEN $@; + QUIET_STDERR = 2> /dev/null + + QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; + QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; + QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; + + export V +endif +endif diff --git a/templates/Makefile b/templates/Makefile index 636cee52f51..367ad00c24c 100644 --- a/templates/Makefile +++ b/templates/Makefile @@ -2,11 +2,6 @@ include ../shared.mak # make and install sample templates - -ifndef V - QUIET = @ -endif - INSTALL ?= install TAR ?= tar RM ?= rm -f From patchwork Fri Dec 17 01:39:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683381 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 404E8C433EF for ; Fri, 17 Dec 2021 01:39:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231989AbhLQBjs (ORCPT ); Thu, 16 Dec 2021 20:39:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230331AbhLQBjk (ORCPT ); Thu, 16 Dec 2021 20:39:40 -0500 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 88A01C061574 for ; Thu, 16 Dec 2021 17:39:39 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id a9so1145822wrr.8 for ; Thu, 16 Dec 2021 17:39:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=9tGzt+Y8pkOZwDNBIvUnB7iS87kRtAtGy4jbXK5NH8o=; b=IvsFCgBdNDVa/XATHW34D7WcAZuVyj7yTGjS5nZUVwX392+AciJvvIMz8+ev07ig13 5x9UT1SIKy3wN+gcnaWQA/IILTgq3CfikwlD29hP/+MOVUBXtjZ1/PxpicRXxLZ+Nf0w M3fBlKMavhodksq4xXZG4/ANLcmqyflhmFxhZR/h9NsOIeXQ9sMqaqbMzSgVl7547KPF y12BsppV09LC1pX7RplT6IvCnj/d5DKErKdTqx1WafjOO6ZuH35/q+VG9emBMChEb/6L 3rsrA38Q9h6xVsalW7zP1hX/tXAQENKfnq2NhSKPynAjfdyt9asd3BdaNw1m3+IekzfM QopQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9tGzt+Y8pkOZwDNBIvUnB7iS87kRtAtGy4jbXK5NH8o=; b=m2bqis8rHR6cWqkqLNFHoKCBLpTIoLaL4xTU3WWdWqOUystPTVUMtVIPQ5xvolGzB9 OwQgYlx3emraw0nHPt7weB2YsyXCQrzss0Uuy9NtZ6cwCUgEya+GKFZH2e7rGhEoG4Bc 1G0q8on2BmZDC3+LjXVYrM05zLc70olz8y1QfHLBSwx04COluVZxlwEcNf14/OjQytf4 UiV3of62bTNezyRsCQjfXYLGtbeUx8TuWeZ3D6WeCVTYGw+tD1QHqt+tEdkBB2ra1CXF 9F5bXq0xQ6Ri9CpRtXFEdjeBVLwE3rwZ2qjr8wYEIR/7Zg0tPY3eXIJs3QKYqEyDhDxf HO6g== X-Gm-Message-State: AOAM530rIhymNrqFh5J65m2qrjU+XiYZu55HJGWVmLhCpUa1rJbzSidl I1TTes+ghSjQy6I8/+w/dXu7F2Fx83dzKA== X-Google-Smtp-Source: ABdhPJwlwCB6wUhkLFVK1a1ZRRcoTwmfzKq2y3UA1KFVr/5MsvcCgAnlRYaEzMuwOs/xZWsNUIp2Sw== X-Received: by 2002:adf:e904:: with SMTP id f4mr497845wrm.245.1639705177942; Thu, 16 Dec 2021 17:39:37 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:37 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 7/8] Makefile: use $(wspfx) for $(QUIET...) in shared.mak Date: Fri, 17 Dec 2021 02:39:25 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the mostly move-only change in the preceding commit to use the $(wspfx) variable for defining the QUIET padding, to guarantee that it's consistent with the "TRACK_template" template. $ make CFLAGS=-I$RANDOM grep.o wspfx='$(space)->' -> GIT-CFLAGS PARAMETERS (changed) -> CC grep.o Signed-off-by: Ævar Arnfjörð Bjarmason --- shared.mak | 54 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 24 deletions(-) diff --git a/shared.mak b/shared.mak index d6f70f3d6c9..f8ebaf30569 100644 --- a/shared.mak +++ b/shared.mak @@ -32,6 +32,12 @@ comma = , empty = space = $(empty) $(empty) +## wspfx: the whitespace prefix padding for $(QUIET...) and similarly +## aligned output. +wspfx = $(space)$(space)$(space) +wspfx_SQ = '$(subst ','\'',$(wspfx))' +# ' closing quote to appease Emacs make-mode.elxo + ### Quieting ## common QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir @@ -47,39 +53,39 @@ ifneq ($(findstring s,$(MAKEFLAGS)),s) ifndef V ## common QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo $(wspfx_SQ) SUBDIR $$subdir; \ $(MAKE) $(PRINT_DIR) -C $$subdir QUIET = @ - QUIET_GEN = @echo ' ' GEN $@; + QUIET_GEN = @echo $(wspfx_SQ) GEN $@; ## Used in "Makefile" - QUIET_CC = @echo ' ' CC $@; - QUIET_AR = @echo ' ' AR $@; - QUIET_LINK = @echo ' ' LINK $@; - QUIET_BUILT_IN = @echo ' ' BUILTIN $@; - QUIET_LNCP = @echo ' ' LN/CP $@; - QUIET_XGETTEXT = @echo ' ' XGETTEXT $@; - QUIET_MSGFMT = @echo ' ' MSGFMT $@; - QUIET_GCOV = @echo ' ' GCOV $@; - QUIET_SP = @echo ' ' SP $<; - QUIET_HDR = @echo ' ' HDR $(<:hcc=h); - QUIET_RC = @echo ' ' RC $@; - QUIET_SPATCH = @echo ' ' SPATCH $<; + QUIET_CC = @echo $(wspfx_SQ) CC $@; + QUIET_AR = @echo $(wspfx_SQ) AR $@; + QUIET_LINK = @echo $(wspfx_SQ) LINK $@; + QUIET_BUILT_IN = @echo $(wspfx_SQ) BUILTIN $@; + QUIET_LNCP = @echo $(wspfx_SQ) LN/CP $@; + QUIET_XGETTEXT = @echo $(wspfx_SQ) XGETTEXT $@; + QUIET_MSGFMT = @echo $(wspfx_SQ) MSGFMT $@; + QUIET_GCOV = @echo $(wspfx_SQ) GCOV $@; + QUIET_SP = @echo $(wspfx_SQ) SP $<; + QUIET_HDR = @echo $(wspfx_SQ) HDR $(<:hcc=h); + QUIET_RC = @echo $(wspfx_SQ) RC $@; + QUIET_SPATCH = @echo $(wspfx_SQ) SPATCH $<; ## Used in "Documentation/Makefile" - QUIET_ASCIIDOC = @echo ' ' ASCIIDOC $@; - QUIET_XMLTO = @echo ' ' XMLTO $@; - QUIET_DB2TEXI = @echo ' ' DB2TEXI $@; - QUIET_MAKEINFO = @echo ' ' MAKEINFO $@; - QUIET_DBLATEX = @echo ' ' DBLATEX $@; - QUIET_XSLTPROC = @echo ' ' XSLTPROC $@; - QUIET_GEN = @echo ' ' GEN $@; + QUIET_ASCIIDOC = @echo $(wspfx_SQ) ASCIIDOC $@; + QUIET_XMLTO = @echo $(wspfx_SQ) XMLTO $@; + QUIET_DB2TEXI = @echo $(wspfx_SQ) DB2TEXI $@; + QUIET_MAKEINFO = @echo $(wspfx_SQ) MAKEINFO $@; + QUIET_DBLATEX = @echo $(wspfx_SQ) DBLATEX $@; + QUIET_XSLTPROC = @echo $(wspfx_SQ) XSLTPROC $@; + QUIET_GEN = @echo $(wspfx_SQ) GEN $@; QUIET_STDERR = 2> /dev/null - QUIET_LINT_GITLINK = @echo ' ' LINT GITLINK $<; - QUIET_LINT_MANSEC = @echo ' ' LINT MAN SEC $<; - QUIET_LINT_MANEND = @echo ' ' LINT MAN END $<; + QUIET_LINT_GITLINK = @echo $(wspfx_SQ) LINT GITLINK $<; + QUIET_LINT_MANSEC = @echo $(wspfx_SQ) LINT MAN SEC $<; + QUIET_LINT_MANEND = @echo $(wspfx_SQ) LINT MAN END $<; export V endif From patchwork Fri Dec 17 01:39:26 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12683383 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C702AC433F5 for ; Fri, 17 Dec 2021 01:39:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230511AbhLQBjr (ORCPT ); Thu, 16 Dec 2021 20:39:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58988 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230359AbhLQBjp (ORCPT ); Thu, 16 Dec 2021 20:39:45 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BF8CCC06175B for ; Thu, 16 Dec 2021 17:39:40 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id bg19-20020a05600c3c9300b0034565e837b6so2160381wmb.1 for ; Thu, 16 Dec 2021 17:39:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Wl51eiYaOtIIpZhnljq5dLdMo4WcIHjzQynshgRbYE8=; b=A+dK4P/g4Mximupy79EFFElOVpFWLaanZVCn0qWYNDYuxZZwNU4OE3MfTZ+9bF0BN1 /lqkIMjR6pk0hgWhT9daGOT2VzH9l2p01N5ZF38hNvMUk8+lbA039Oqcyb2yClUYR5Kg FzHvb78q7rE+YynzUpSOr4DKZ6DrumCDz+fNt11TOR1H6/WRAPFot7EdIgLnxoG1rswR KWsSqF9/nKY4ona4lSx4RUx5BN+si1ddlyQkv+skWDIS/xxZFI+mh5SOqtIPPsS4JwaN GvtnQKMr9SEdpR7P7j2JLYrwd46nyX+1DXytM6uiCw8JGW6ZcK1j0TJmlHT5B7Kt+oi2 kSow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Wl51eiYaOtIIpZhnljq5dLdMo4WcIHjzQynshgRbYE8=; b=z9P3MLITAkun3OEoT+5xjjhraE/ivRO36gTlWG5UtYexwvAa5qtF6aBVdynxF/b6OF KytC8euAyc/aVJCFp9Gfhy7coNE37bTPjs9+SkhNXdQqhow1QL/jdu99n5C9KnGVN6vY PiediI3ZTwMwx7x1gUWpwp+Sk0HJR4NIjs/tRv5Zr8rbERXw/iMfmAt4bWKA/9Wk263g EYgj64EMdmiLN2ODtlnkjjszkTehYk0IQfa7Tm4+xG5Cnv0qw8uuSdndl6J0i5rVx2uP 49pMhY6L1LLULRmavHt1Ehsns/Dca7c6gsxdR4Z0XABIjwPP3ertRQEx+FPqzvy1vs+4 QeWg== X-Gm-Message-State: AOAM531dUtPTibAigBtMIq45hlrmewWiwqM6BOWOzXJydnBKEJcVUszn NxuU4l5Cuu+82TnPX/gGVsHa+9oZgW4myA== X-Google-Smtp-Source: ABdhPJxWqJR8WHwfFg+IGK8oLY24VqaBt9p8I9qUWpV/ojzoPcKMWaB0WlUmD3ncBCWzGcW1uekJaw== X-Received: by 2002:a05:600c:1548:: with SMTP id f8mr7403950wmg.67.1639705178960; Thu, 16 Dec 2021 17:39:38 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id c4sm5843869wrr.37.2021.12.16.17.39.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Dec 2021 17:39:38 -0800 (PST) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Phillip Wood , Jeff King , Dan Jacques , Eric Wong , Jonathan Nieder , Mike Hommey , =?utf-8?b?xJBvw6BuIFRy4bqnbiBDw7RuZyBEYW5o?= , Victoria Dye , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH 8/8] Makefiles: add and use wildcard "mkdir -p" template Date: Fri, 17 Dec 2021 02:39:26 +0100 Message-Id: X-Mailer: git-send-email 2.34.1.1119.g7a3fc8778ee In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a template to do the "mkdir -p" of $(@D) (the parent dir of $@) for us, and use it for the "make lint-docs" targets I added in 8650c6298c1 (doc lint: make "lint-docs" non-.PHONY, 2021-10-15). As seen in 4c64fb5aad9 (Documentation/Makefile: fix lint-docs mkdir dependency, 2021-10-26) maintaining these manual lists of parent directory dependencies is fragile, in addition to being obviously verbose. I used this pattern at the time because I couldn't find another method than "order-only" prerequisites to avoid doing a "mkdir -p $(@D)" for every file being created, which as noted in [1] would be significantly slower. But as it turns out we can use this neat trick of only doing a "mkdir -p" if the $(wildcard) macro tells us the path doesn't exist. A re-run of a performance test similar to thatnoted downthread of [1] in [2] shows that this is faster, in addition to being less verbose and more reliable (this uses my "git-hyperfine" thin wrapper for "hyperfine"[3]): $ git -c hyperfine.hook.setup= hyperfine -L rev HEAD~1,HEAD~0 -s 'make -C Documentation lint-docs' -p 'rm -rf Documentation/.build' 'make -C Documentation -j1 lint-docs' Benchmark 1: make -C Documentation -j1 lint-docs' in 'HEAD~1 Time (mean ± σ): 2.914 s ± 0.062 s [User: 2.449 s, System: 0.489 s] Range (min … max): 2.834 s … 3.020 s 10 runs Benchmark 2: make -C Documentation -j1 lint-docs' in 'HEAD~0 Time (mean ± σ): 2.315 s ± 0.062 s [User: 1.950 s, System: 0.386 s] Range (min … max): 2.229 s … 2.397 s 10 runs Summary 'make -C Documentation -j1 lint-docs' in 'HEAD~0' ran 1.26 ± 0.04 times faster than 'make -C Documentation -j1 lint-docs' in 'HEAD~1' So let's use that pattern both for the "lint-docs" target, and a few miscellaneous other targets. This method of creating parent directories is explicitly racy in that we don't know if we're going to say always create a "foo" followed by a "foo/bar" under parallelism, or skip the "foo" because we created "foo/bar" first. In this case it doesn't matter for anything except that we aren't guaranteed to get the same number of rules firing when running make in parallel. 1. https://lore.kernel.org/git/211028.861r45y3pt.gmgdl@evledraar.gmail.com/ 2. https://lore.kernel.org/git/211028.86o879vvtp.gmgdl@evledraar.gmail.com/ 3. https://gitlab.com/avar/git-hyperfine/ Signed-off-by: Ævar Arnfjörð Bjarmason --- Documentation/Makefile | 25 +++---------------------- Makefile | 12 +++++++----- shared.mak | 17 +++++++++++++++++ 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Documentation/Makefile b/Documentation/Makefile index 0f4ebdeda8a..1eb9192dae8 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -434,25 +434,11 @@ quick-install-html: require-htmlrepo print-man1: @for i in $(MAN1_TXT); do echo $$i; done -## Lint: Common -.build: - $(QUIET)mkdir $@ -.build/lint-docs: | .build - $(QUIET)mkdir $@ - ## Lint: gitlink -.build/lint-docs/gitlink: | .build/lint-docs - $(QUIET)mkdir $@ -.build/lint-docs/gitlink/howto: | .build/lint-docs/gitlink - $(QUIET)mkdir $@ -.build/lint-docs/gitlink/config: | .build/lint-docs/gitlink - $(QUIET)mkdir $@ LINT_DOCS_GITLINK = $(patsubst %.txt,.build/lint-docs/gitlink/%.ok,$(HOWTO_TXT) $(DOC_DEP_TXT)) -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/howto -$(LINT_DOCS_GITLINK): | .build/lint-docs/gitlink/config $(LINT_DOCS_GITLINK): lint-gitlink.perl $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_GITLINK)$(PERL_PATH) lint-gitlink.perl \ $< \ $(HOWTO_TXT) $(DOC_DEP_TXT) \ @@ -463,23 +449,18 @@ $(LINT_DOCS_GITLINK): .build/lint-docs/gitlink/%.ok: %.txt lint-docs-gitlink: $(LINT_DOCS_GITLINK) ## Lint: man-end-blurb -.build/lint-docs/man-end-blurb: | .build/lint-docs - $(QUIET)mkdir $@ LINT_DOCS_MAN_END_BLURB = $(patsubst %.txt,.build/lint-docs/man-end-blurb/%.ok,$(MAN_TXT)) -$(LINT_DOCS_MAN_END_BLURB): | .build/lint-docs/man-end-blurb $(LINT_DOCS_MAN_END_BLURB): lint-man-end-blurb.perl $(LINT_DOCS_MAN_END_BLURB): .build/lint-docs/man-end-blurb/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_MANEND)$(PERL_PATH) lint-man-end-blurb.perl $< >$@ .PHONY: lint-docs-man-end-blurb -lint-docs-man-end-blurb: $(LINT_DOCS_MAN_END_BLURB) ## Lint: man-section-order -.build/lint-docs/man-section-order: | .build/lint-docs - $(QUIET)mkdir $@ LINT_DOCS_MAN_SECTION_ORDER = $(patsubst %.txt,.build/lint-docs/man-section-order/%.ok,$(MAN_TXT)) -$(LINT_DOCS_MAN_SECTION_ORDER): | .build/lint-docs/man-section-order $(LINT_DOCS_MAN_SECTION_ORDER): lint-man-section-order.perl $(LINT_DOCS_MAN_SECTION_ORDER): .build/lint-docs/man-section-order/%.ok: %.txt + $(call mkdir_p_parent_template) $(QUIET_LINT_MANSEC)$(PERL_PATH) lint-man-section-order.perl $< >$@ .PHONY: lint-docs-man-section-order lint-docs-man-section-order: $(LINT_DOCS_MAN_SECTION_ORDER) diff --git a/Makefile b/Makefile index 9f27fc77e5a..ed601534967 100644 --- a/Makefile +++ b/Makefile @@ -2704,7 +2704,8 @@ all:: $(MOFILES) endif po/build/locale/%/LC_MESSAGES/git.mo: po/%.po - $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< + $(call mkdir_p_parent_template) + $(QUIET_MSGFMT)$(MSGFMT) -o $@ $< LIB_PERL := $(wildcard perl/Git.pm perl/Git/*.pm perl/Git/*/*.pm perl/Git/*/*/*.pm) LIB_PERL_GEN := $(patsubst perl/%.pm,perl/build/lib/%.pm,$(LIB_PERL)) @@ -2720,15 +2721,16 @@ NO_PERL_CPAN_FALLBACKS_SQ = $(subst ','\'',$(NO_PERL_CPAN_FALLBACKS)) endif perl/build/lib/%.pm: perl/%.pm GIT-PERL-DEFINES - $(QUIET_GEN)mkdir -p $(dir $@) && \ + $(call mkdir_p_parent_template) + $(QUIET_GEN) \ sed -e 's|@@LOCALEDIR@@|$(perl_localedir_SQ)|g' \ -e 's|@@NO_GETTEXT@@|$(NO_GETTEXT_SQ)|g' \ -e 's|@@NO_PERL_CPAN_FALLBACKS@@|$(NO_PERL_CPAN_FALLBACKS_SQ)|g' \ < $< > $@ perl/build/man/man3/Git.3pm: perl/Git.pm - $(QUIET_GEN)mkdir -p $(dir $@) && \ - pod2man $< $@ + $(call mkdir_p_parent_template) + $(QUIET_GEN)pod2man $< $@ $(ETAGS_TARGET): $(FOUND_SOURCE_FILES) $(QUIET_GEN)$(RM) $@+ && \ @@ -2862,7 +2864,7 @@ test_bindir_programs := $(patsubst %,bin-wrappers/%,$(BINDIR_PROGRAMS_NEED_X) $( all:: $(TEST_PROGRAMS) $(test_bindir_programs) bin-wrappers/%: wrap-for-bin.sh - @mkdir -p bin-wrappers + $(call mkdir_p_parent_template) $(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's|@@BUILD_DIR@@|$(shell pwd)|' \ -e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%$(X),$(@F))$(patsubst git%,$(X),$(filter $(@F),$(BINDIR_PROGRAMS_NEED_X)))|' < $< > $@ && \ diff --git a/shared.mak b/shared.mak index f8ebaf30569..13fb5eb93bb 100644 --- a/shared.mak +++ b/shared.mak @@ -59,6 +59,8 @@ ifndef V QUIET = @ QUIET_GEN = @echo $(wspfx_SQ) GEN $@; + QUIET_MKDIR_P_PARENT = @echo $(wspfx_SQ) MKDIR -p $(@D); + ## Used in "Makefile" QUIET_CC = @echo $(wspfx_SQ) CC $@; QUIET_AR = @echo $(wspfx_SQ) AR $@; @@ -90,3 +92,18 @@ ifndef V export V endif endif + +### Templates + +## mkdir_p_parent: lazily "mkdir -p" the path needed for a $@ +## file. Uses $(wildcard) to avoid the "mkdir -p" if it's not +## needed. +## +## Is racy, but in a good way; we might redundantly (and safely) +## "mkdir -p" when running in parallel, but won't need to exhaustively +## individual rules for "a" -> "prefix" -> "dir" -> "file" if given a +## "a/prefix/dir/file". This can instead be inserted at the start of +## the "a/prefix/dir/file" rule. +define mkdir_p_parent_template +$(if $(wildcard $(@D)),,$(QUIET_MKDIR_P_PARENT)$(shell mkdir -p $(@D))) +endef