From patchwork Fri Feb 25 09:04:27 2022 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: 12759957 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 74E18C433EF for ; Fri, 25 Feb 2022 09:04:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236271AbiBYJFO (ORCPT ); Fri, 25 Feb 2022 04:05:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53408 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238862AbiBYJFN (ORCPT ); Fri, 25 Feb 2022 04:05:13 -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 AB00A7DABE for ; Fri, 25 Feb 2022 01:04:41 -0800 (PST) Received: by mail-wr1-x429.google.com with SMTP id u1so3363804wrg.11 for ; Fri, 25 Feb 2022 01:04:41 -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=tUK8o3c8knoHDrlSPKgjqaziIRubwr4mtpdE+NjCyFA=; b=G5LD8QBJ0HpRv7/OpIb6ROaIwBMh7f36oF+xdKuetuIygR2zn9wsyOih4etk4M12iU yV/5yCQs71/g71O6kCmzwrGclL83+1ht+c4bgxUBEdEWANkm6qOAgW03AEkaq1ALlsEZ SyfVunZwB+JHERL48yuQfCPPhECpxobDf5er0Fcst9juyVevh9WLkL2YrjgtQn034PB7 NOIOF+BLTF6e7NPcgAg6SnewVbx3so/icIJRXJ/WdqKDkQ4GCiVso6TYn4GNG+OaVyKZ W/Mxp1X/1x8e4FLf4FsWB5wzLoNXdmu/NIHzdJ5XnXsdUVSIAc848C9oMr1L+8URbcFI iIcg== 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=tUK8o3c8knoHDrlSPKgjqaziIRubwr4mtpdE+NjCyFA=; b=sLtEu6eD3RooVNTFDO6Hnt0hsrcyvKvSaMUjN3p5+Np6Mef9bCfdrbGXaRk2+IZBi7 CEid1JLttVfTTQkgIwZBF91f1n9BsIfUC7wwIIRdjQH3eZc6C0z1/L1IXxRAEo3j2mfh V2DjZ5vgy72sXysfF8QgCmMSsxxqTNUWxh7Qg1G9FKdCJLIsgvYkttLHqjj0rmUYgjL/ pRkNLfLBW8wBlmjJ3cgh+YTb0zPCtetQoLgJwmCRccD+hwF8MkwoDUWziuUGbN368lpt Xlxr+Z4HvnWdzYU/LCabwHHH2DeGyfKbCTsSHuB6EA16zV4oosoXoxU4O6vSy48RooAW gOZw== X-Gm-Message-State: AOAM532nCKiFP10Qpzmd0Ndtaq6I9JTFrECf9GpxL7/w6mKzy1zU4SHZ mu6kYjAUmFqU2SZwWjDMyz/l8aBZrLCtrg== X-Google-Smtp-Source: ABdhPJxHQxphtOOSsD37dIw8CsCMzt5t362mO1N+x2n5xOm+rfy9mhNNYan/IJhV3uqXbOaEffWEEg== X-Received: by 2002:a05:6000:2aa:b0:1e3:d43:f5c with SMTP id l10-20020a05600002aa00b001e30d430f5cmr5130793wry.178.1645779879913; Fri, 25 Feb 2022 01:04:39 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04: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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 1/9] scalar Makefile: set the default target after the includes Date: Fri, 25 Feb 2022 10:04:27 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Make have the "contrib/scalar/Makefile" be stylistically consistent with the top-level "Makefile" in including other makefiles before setting the default target. This adjusts code added in 0a43fb22026 (scalar: create a rudimentary executable, 2021-12-03), it's a style-only change, in a subsequent commit the "QUIET" boilerplate at the beginning of this file will be retrieved via an include, and having an "all:" between the two set of "include"'s after that change would look odd. Signed-off-by: Ævar Arnfjörð Bjarmason --- contrib/scalar/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/scalar/Makefile b/contrib/scalar/Makefile index 231b1ee1796..5b12a437426 100644 --- a/contrib/scalar/Makefile +++ b/contrib/scalar/Makefile @@ -12,12 +12,12 @@ else endif endif -all: - include ../../config.mak.uname -include ../../config.mak.autogen -include ../../config.mak +all: + TARGETS = scalar$(X) scalar.o GITLIBS = ../../common-main.o ../../libgit.a ../../xdiff/lib.a From patchwork Fri Feb 25 09:04:28 2022 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: 12759958 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 49855C433EF for ; Fri, 25 Feb 2022 09:04:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238885AbiBYJFV (ORCPT ); Fri, 25 Feb 2022 04:05:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53430 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238870AbiBYJFO (ORCPT ); Fri, 25 Feb 2022 04:05:14 -0500 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0534A7DABE for ; Fri, 25 Feb 2022 01:04:43 -0800 (PST) Received: by mail-wr1-x42d.google.com with SMTP id d28so3414397wra.4 for ; Fri, 25 Feb 2022 01:04:42 -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=d/A5BDSTeWDgE3L7qPcmzrNYFUOd9i98pikcExrxp5U=; b=bFavLA3y80rBcYoVoFc3CbU23LwNamI+sr7yjRM21eAaVsEO0sD0WBWEB9HCDtUOG9 CfcIglCvzABPFSBh/vi2gBCAUC4JdWBJ+5OPJl/WAWBNaCadYZqovHLd2wo+Yu3l5HtK FKc/7oEoqNm2EfGPQVvnE3mJtNvz7yrd5rm5GMKqAwd0/FyDcXFkpxtQSzS6GCaEE9F/ Dto8WqQa/EiqT0LIMQcwhPOfg7EjNzxwfghoAfNkk6MDiTY3vO34wQUzGfHIaT+lG6Q+ 7bzFHwYmpwqMgxzEHCMKSUB8uhg21xB7weYM0Rwasf+XSBDvHJ5PP97QFmw7E+DUody2 aofw== 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=d/A5BDSTeWDgE3L7qPcmzrNYFUOd9i98pikcExrxp5U=; b=p/6p1eEzID/lNCem8ffQr7f7n8zLwEQww+A4VVevhae8noexQcpcyIyvUs3b+KxjHc Co0c6btILibZUWpm6PTQSmG7jQZI2hzQsdALY7ytaONJ547HCqhcql3nqM2PsWNxmeB7 Ke0wjl7P50g7MeyAd3h8YLXyzD0VrrJ6tkB2iOTB7pPBUmV0u4XO36rwmklYGSeDztDZ 4fDpS8/1mDLbSlSBPHDi3QlrwiFBcSmVcyaTGL1vI9Je0+XKiOzhICV8VIDr2zH3fydy DOk6N32F31SP/TlAhPwYgDoOjtZafA5KvbN5sXAZ/7n3qhKCvyL/+35eW8BWWwEBPl3M nFVA== X-Gm-Message-State: AOAM531mJjrEf31ntoVAi7G33EFQn4//7CE7kriBk5ETqftKMmQ1MZFU TmXoBehJoiFJp0XkShDceaeTojukwFu/fg== X-Google-Smtp-Source: ABdhPJwnQ9NpZiqgF3+fw4djOuKEL/e3kb29G/deMlLDn2Bx9GlwHBp3aqLXbHrUdb0hacwV7GIg1w== X-Received: by 2002:a5d:6da8:0:b0:1e3:3e4c:24a7 with SMTP id u8-20020a5d6da8000000b001e33e4c24a7mr5215883wrs.673.1645779881098; Fri, 25 Feb 2022 01:04:41 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:40 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 2/9] Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it Date: Fri, 25 Feb 2022 10:04:28 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 +++---------- contrib/scalar/Makefile | 3 +++ contrib/scalar/t/Makefile | 3 +++ shared.mak | 9 +++++++++ t/Makefile | 3 +++ t/interop/Makefile | 3 +++ t/perf/Makefile | 3 +++ templates/Makefile | 3 +++ 9 files changed, 33 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 6f0b4b775fe..d378ec22545 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:: @@ -2194,16 +2197,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/contrib/scalar/Makefile b/contrib/scalar/Makefile index 5b12a437426..6fb5cc8b701 100644 --- a/contrib/scalar/Makefile +++ b/contrib/scalar/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../../shared.mak + QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir QUIET_SUBDIR1 = diff --git a/contrib/scalar/t/Makefile b/contrib/scalar/t/Makefile index 6170672bb37..01e82e56d15 100644 --- a/contrib/scalar/t/Makefile +++ b/contrib/scalar/t/Makefile @@ -1,3 +1,6 @@ +# Import tree-wide shared Makefile behavior and libraries +include ../../../shared.mak + # Run scalar tests # # Copyright (c) 2005,2021 Junio C Hamano, Johannes Schindelin 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 46cd5fc5273..056ce55dcc9 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/t/perf/Makefile b/t/perf/Makefile index 2465770a782..e4808aebed0 100644 --- a/t/perf/Makefile +++ b/t/perf/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 Feb 25 09:04:29 2022 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: 12759959 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 EFD6CC433FE for ; Fri, 25 Feb 2022 09:04:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238874AbiBYJFW (ORCPT ); Fri, 25 Feb 2022 04:05:22 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238862AbiBYJFP (ORCPT ); Fri, 25 Feb 2022 04:05:15 -0500 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E982F22B97D for ; Fri, 25 Feb 2022 01:04:43 -0800 (PST) Received: by mail-wr1-x42f.google.com with SMTP id x15so3381489wrg.8 for ; Fri, 25 Feb 2022 01:04:43 -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=9hH9YZkZqxD7XhacnhN7uYdoqAWWEYpoX62Cx4nE1zg=; b=fASsewY6uQSDuFlZCs2rHDfwZ6xdeH07+XgDQay5/BMVuT9PiCqps0Y0h+wvupU2uM WbcKdUslwuwtM+6DlooiUXtmMPnCiAUyRXmlD49DOfZSIqp/UYhoV1GVe1gazLHQiHdi sdAIG2sc2ZYtPkRSxB2LmhfzrP+AjI9QLjKbnOLIFqEAkF7kj9opw49Pu1QU+deQGOqx 0HM/1xNrIyXlH9EFf3D/PA2IiQk+D6eyqYJVSnftpOYYsT7Ajs4dUfIMM+pXUVwuMvSA EtEFWLryJHFTZXoER/uubztbwoyg/lcHmrPwC8/QkIhHBB/1E9ViUB0fFFj6KiWyX273 0WUA== 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=9hH9YZkZqxD7XhacnhN7uYdoqAWWEYpoX62Cx4nE1zg=; b=QPu+/ArounJrWOoJdvYbffx4sw9pWTanPIfWa3aqC7AsYU1iWjY08vCGSv9LXGzXDr /lKHDQbdrbtEcbuG2OMqCvxniZIneRt6xJOLnQQVTDtdYUNthCeMdh55EskOuP1fwlC3 2MVfLk57Ei61pq0gDbD/ckbk+ESPOqVprB1kpqINkSvcbvv+KxTL21pNirlBShEzVV6a 6SPqC5m2O1+iBSZ4IRNho3Ih7U6AHuvCkoJ8MFHBL6BTC2iIzEPtbraI2VbLScCS93nW iqNMm0fqgFONQQt1k5bJ9fS9t2Gmvy3gdnwI4vKtDRYlY74tRiEkhUg4usfYL6vnsTXf eoSg== X-Gm-Message-State: AOAM530Rj8LsHWT/h/xDodl2HSjkQnY/Md5wqvhkVNXkS4s/yB8krjYI 4xSYrtjV0ypqnaGfVrHj83lk1ERAwYlREA== X-Google-Smtp-Source: ABdhPJyIoPe6yumPaPwvQmVU9X5Ihp3iBAViZbslZxHQgFG6xcT3Qz0/d3sfFfZ7+laqz9mWV5Babw== X-Received: by 2002:a5d:43d1:0:b0:1ed:d1de:2141 with SMTP id v17-20020a5d43d1000000b001edd1de2141mr5246670wrr.394.1645779882215; Fri, 25 Feb 2022 01:04:42 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:41 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 3/9] Makefile: disable GNU make built-in wildcard rules Date: Fri, 25 Feb 2022 10:04:29 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 Feb 25 09:04:30 2022 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: 12759963 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 4D62AC433FE for ; Fri, 25 Feb 2022 09:04:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238899AbiBYJF2 (ORCPT ); Fri, 25 Feb 2022 04:05:28 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53466 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238876AbiBYJFQ (ORCPT ); Fri, 25 Feb 2022 04:05:16 -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 F414F22EDDE for ; Fri, 25 Feb 2022 01:04:44 -0800 (PST) Received: by mail-wr1-x436.google.com with SMTP id d28so3414533wra.4 for ; Fri, 25 Feb 2022 01:04:44 -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=aU67yUaqNPxaMKNMTB+MjujqNJpipu6UjY2jklHpieg=; b=UXa/7ziTUF4pj7snCBK196JRva0m44BBQdu8Fyn4mxh7+x+/nqXhL1oWgEIIwCy2d5 BIQhkAaOfflxpgr0krHGE3XWMKON+ntM097g+2U7x3L/Vdz3PPynb7o8pJAD1bqTsy5f B2uP0Q0p8udbhPuk/Yx4fBSCqAA2DMnLSnw444Fy7VpDx1Z0q4NVkNvE0Q4RW3gPIxsD b5Sqvw+XHWk2joOB4aqJiU8qjylmeCR+R5jFHNIcceeBU3ZRVOLbmlCXIKIh9j/dDdw6 4rnKXS4Tdhxqb/wHTtMLd53tbGm6ncXITowXzAQ8E5KCzo7/qxk5KvBrJiJIZ4E7QJyx IVVA== 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=aU67yUaqNPxaMKNMTB+MjujqNJpipu6UjY2jklHpieg=; b=sC+T2OqZ2cYkgxyWdNb1YE9C+HIgsUwY/Jeb2K731gAcdFcb//8r1JgmzLEeijVmog E6ILQ6m1lA+KsQKHx1edxff5gZ/jNsFKJZ4KQwokPt7NnQsulTUzC1KP1RFl7YTYNfcU hatBdD3qYWapRtqnP100hovVD3sMcHFgblibFWz3HI+oTLV7wiwuwTmeK2wQK0Wvmia6 /JASFIo+JqVZRYihJWxQjaMHm3j+89mdC0LIy5sfZIbIV9NvPC3zUPMJoqEZ302kMugQ haX/DPI9CEJ2a/S19/JosrqnVKJKvxC3zJ2MZ+4rri+B3vRKS8xO8twFZ1hdBokVQDlh Ezvg== X-Gm-Message-State: AOAM531LJ+IkcdHmGFhWuxqd/BagrLV5+Me1X0rOsn+HL57BOVszIla/ vHEKYuMAL7Q3wR2sY2Gtw58fqvNBZDtEdg== X-Google-Smtp-Source: ABdhPJzuT253P7BhhdCQPHX5GWsJmYk4Ot4CIyR84HPra19KpEUsrjZDkHxeFqkcv25JbRqCP47jEQ== X-Received: by 2002:adf:ed12:0:b0:1ef:585d:bfcd with SMTP id a18-20020adfed12000000b001ef585dbfcdmr3107534wro.570.1645779883274; Fri, 25 Feb 2022 01:04:43 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:42 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 4/9] Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES) Date: Fri, 25 Feb 2022 10:04:30 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 d378ec22545..185bfa71df3 100644 --- a/Makefile +++ b/Makefile @@ -833,12 +833,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 @@ -2789,26 +2810,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 $@+ && \ @@ -3018,9 +3019,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 Feb 25 09:04:31 2022 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: 12759960 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 6B708C433F5 for ; Fri, 25 Feb 2022 09:04:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238891AbiBYJFX (ORCPT ); Fri, 25 Feb 2022 04:05:23 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238879AbiBYJFR (ORCPT ); Fri, 25 Feb 2022 04:05:17 -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 0F773235317 for ; Fri, 25 Feb 2022 01:04:46 -0800 (PST) Received: by mail-wr1-x436.google.com with SMTP id x15so3381671wrg.8 for ; Fri, 25 Feb 2022 01:04:45 -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=3UU5X4Bs1MY/YcD4ci+q2xLF+X5pDV4/L1exKw+sSyI=; b=g6+0+bXOI1uM15GVOx4gB3WKietrMlLeMreI+WHUlADRg/ILYYYu4yVB7MSYTNy+ou DijSM01a3DFfygOYXt4l40z/SrTkRLeLQdBK0iUmq9Ib6zfeJZNsr8LdjYwiTa/ueMEf orAtNc2tG+lQrRJtgJLET74bMvx6ierv3SKAbgrJqgs+6iVKNacjdOy9qkKlMp1VUmkD lFGtu2r7wjbe/hnCM1k519SpcIqnnaNSFkLq5baL0YpjCm8Jgn8mIO/sF/HvVaaLl1Tq pX9DadACy3zfe0gnjaW5YzRoKxYnubkDE/YwY/9EiO4aOdtsWA0D1DS6Y1OHPiiHlMuA XAqA== 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=3UU5X4Bs1MY/YcD4ci+q2xLF+X5pDV4/L1exKw+sSyI=; b=h26SaugnmEesdjY+bwTFHroNH+2QgApsmJYIlOsT2RAr1THsBpTw6jVDaL4evhMhTs o3pkiFYXZ4vdSvFZIBDUqe2uy1KIuD+7jTqKHvPeFmneOU1cbtHB9qMBkzFQYBbQ+i0j 5L3ZDE6d7gJ3o3fw1bS83qyqAdKMTnU+/GKAppuAfqQ91gAxB4CrZXClVsIKMAkO96Ch eMcZbjbaOCy/AUJbFBWTkSE68vqRDBSLwaKWIqCwwi0f/WdIEA5Pwo5/NMTeiJAtiEya yGY7a1laM8HGli7fxoK3eO+QTsLpJnfv2nnKokuv9DNQF40DguAKvzmsO7CpJLfjUgqC oeGA== X-Gm-Message-State: AOAM531WFAiNyHMg/Ase+nh5gqkiLUbSG9uMhl3cRGww00iShltb/BFd er0NVBPA7zbNXBClgD+Ej6MJqTplyUe2hQ== X-Google-Smtp-Source: ABdhPJwnCpEz4H8RB8vAMsEpEJlKsMUFKZCRfk+uChj2cVyWmCd4iHEhezFRjDLTIv9Sa2JvQ8qOew== X-Received: by 2002:a5d:48d1:0:b0:1e3:2401:f229 with SMTP id p17-20020a5d48d1000000b001e32401f229mr5294588wrs.694.1645779884313; Fri, 25 Feb 2022 01:04:44 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:43 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 5/9] Makefile: move ".SUFFIXES" rule to shared.mak Date: Fri, 25 Feb 2022 10:04:31 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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' The reason for that can be seen when comparing that run with "--debug=a". Without this change making a target like "git-status.1" will cause "make" to consider not only "git-status.txt", but "git-status.txt.o", as well as numerous other implicit suffixes such as ".c", ".cc", ".cpp" etc. See [1] for a more detailed before/after example. So this is causing us to omit a bunch of work we didn't need to do. For making "git-status.1" the "--debug=a" output is reduced from ~140k lines to ~6k. 1. https://lore.kernel.org/git/220222.86bkyz875k.gmgdl@evledraar.gmail.com/ 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 185bfa71df3..1462016a3f4 100644 --- a/Makefile +++ b/Makefile @@ -2580,8 +2580,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..1dda948df09 100644 --- a/shared.mak +++ b/shared.mak @@ -9,6 +9,11 @@ %:: s.% %:: SCCS/s.% +## Likewise delete default $(SUFFIXES). See: +## +## info make --index-search=.SUFFIXES +.SUFFIXES: + ### Flags affecting all rules # A GNU make extension since gmake 3.72 (released in late 1994) to From patchwork Fri Feb 25 09:04:32 2022 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: 12759962 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 C5B95C433EF for ; Fri, 25 Feb 2022 09:04:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238896AbiBYJF1 (ORCPT ); Fri, 25 Feb 2022 04:05:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238880AbiBYJFT (ORCPT ); Fri, 25 Feb 2022 04:05:19 -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 5BC4B23531B for ; Fri, 25 Feb 2022 01:04:47 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id b5so3433130wrr.2 for ; Fri, 25 Feb 2022 01:04:47 -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=gF+SDyi14BXswyjd7YDa/Nj5zwDUAcBJ4i++AJaHaDM=; b=H+FIpntuYZIVbFzsmbQgLBmTrc4XiDvNtwdA6X4h1gqUTV5zPv5XVqBF+qEINePsZy 0ZZVwMpdKITwQ6LdnRcAZdhQzFJX41YLXLsRTFym8M/+jyGVUuw1B/KpP9UgFToR5Q81 mcX09l77hhb1Do/ozAfonmdSKrP5oq3IJIhiGLzyNLpLsStvGgn1M4ceauWFKUXxD354 T5pA8PAtEhwEk0e7gpens3CQ5LeOapwnfo7BT//9zZlT+gcuhntq7IKslSpdI2tGQzP0 Ya2kWG3txzcfM8ySVaDeSmKM4zbKj9xdZHsFfA9gc2YUXItXMZmCsCzNCylu2axKSvF3 chzw== 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=gF+SDyi14BXswyjd7YDa/Nj5zwDUAcBJ4i++AJaHaDM=; b=pSUmICO+qqVaH45yaBxX3uR7gF4GoNpg09mMVsj0Scej80bKS1Xt/nJteOk0M/KoIK L/teEfz1tBUSBLU6abzda+dQAaI7/iWs14vxRDcG7vfPOiJrIyVeppaiK6uHzWPn24wX JE806h7Tjxq1EW0XTCU/v7h7HeJr15n/YXxbIVLfxsIl9hHd/JO+i+tbgl5yZovJQBDZ J46G5PbXYGLQ/BldYNuDCSutrMgMvSblFGzCyTL/Bsvrlel+x/Le+etOBmSwe+wRZYXI 13WqRYnNwOIHMUGXpTjVdhBJJdSYIbU5SAHI5z6yOL4rEBJfL4nWCnD88qAzQ/5a0e65 uPkQ== X-Gm-Message-State: AOAM530dYlRTFNy/44mO64xpogKs6r4lNx1xDPfhCpUi2CV0Wi+TVKxr FhvxubLpj/tGODJdmCgWorLMq3pCL+FqPg== X-Google-Smtp-Source: ABdhPJwf4hx1t2HL/xWjTM9a5bTp5FyhDfJpn4OODI1yVl1w+xWkrYBoof0ehNjLy6OXioa8dcD9Fw== X-Received: by 2002:adf:e804:0:b0:1ea:9c3b:8f41 with SMTP id o4-20020adfe804000000b001ea9c3b8f41mr5413741wrm.53.1645779885655; Fri, 25 Feb 2022 01:04:45 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:45 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 6/9] Makefile: move $(comma), $(empty) and $(space) to shared.mak Date: Fri, 25 Feb 2022 10:04:32 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 1462016a3f4..81b2eaa0355 100644 --- a/Makefile +++ b/Makefile @@ -1289,10 +1289,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 1dda948df09..f6b589ffd8f 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 Feb 25 09:04:33 2022 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: 12759961 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 A3AEEC433EF for ; Fri, 25 Feb 2022 09:04:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238893AbiBYJFZ (ORCPT ); Fri, 25 Feb 2022 04:05:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238881AbiBYJFU (ORCPT ); Fri, 25 Feb 2022 04:05:20 -0500 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 726D723892C for ; Fri, 25 Feb 2022 01:04:48 -0800 (PST) Received: by mail-wr1-x434.google.com with SMTP id r10so3418516wrp.3 for ; Fri, 25 Feb 2022 01:04:48 -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=YAmT0dEXnbypvUQMm59gUfyGUCUn99FqZh0bwqbOREQ=; b=oAnPfID6B5kWMMl6+z75nwbVfUUwq7qMYnzjOhq2CbvSTOhDD2ZeA/6RI4B96vrSSb JDllO7UshrVqJSFnMLTPlJaFHRJ9KI4Ho0lQN3Pcn/lqRfd7pL1EzJ1WV13C395iquYq KWGioIhTGNi7Mys588cnorFgKUdxa2WB247HqetK7WvNxjgGLKIWpYHpycCWTML4VESg 3vhHZVnuAy7zisZAyowIVfFkFuHLTWje8Tdh8UYqRF2o94O6JC0E+51MnNOmIJN37IP6 7jmvg0J1vcJxhoUTBYdUJoqmYAj3yfffJlO9L0TkYa0QLDY1qONPALa+0CFB+QVYiBom YvKg== 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=YAmT0dEXnbypvUQMm59gUfyGUCUn99FqZh0bwqbOREQ=; b=uyhoEMmGVtC68NOyG+c7s9zx59yY8kW3mSKcNXsZIFisVjjllcoTvcgzsa9mIVbUS1 jpHVOiCJ3G+uDMyLjbZzozy9aADikez0IRg19qlOGNhrNTnOANVgHrbNqRecOA4haU5P rVoJCQ4cZF0ErXoL3sSg1VHqw738VKd5drPWu6nbZwpnr7lj5YKnnJ7/obvlNH8G0eQX 6VhwqycEcsWJ3C2BfA+M1Gw0fvGxHMNzueL/TMOJvWqn+YST3UaAIsIBEWj1Kx8cisv9 PwvS+UEHbYudGwa4+MLW2vL8qfHKHa4xm5ZLQpblgY1JqS77mFZKrK/M+0s03Ke6bpld VyMg== X-Gm-Message-State: AOAM531pRdrspFRscIzofrgS//aLJoJRmUK3dYR4eskNAK0cJglqnYGh JzLIi9rNnSNfcZ24ObX37lnIqsGCi20M0g== X-Google-Smtp-Source: ABdhPJyBSiPfA1PbJ6wtzRPVFtIBqlfwqy6Toh3Kq6pMVlHDg5Jf59evDnU487GE0Da3eDaowxJGEw== X-Received: by 2002:adf:e183:0:b0:1ed:e25f:afc3 with SMTP id az3-20020adfe183000000b001ede25fafc3mr5456884wrb.545.1645779886725; Fri, 25 Feb 2022 01:04:46 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:46 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 7/9] Makefile: add "$(QUIET)" boilerplate to shared.mak Date: Fri, 25 Feb 2022 10:04:33 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 - contrib/scalar/Makefile | 14 ----------- shared.mak | 53 +++++++++++++++++++++++++++++++++++++++++ templates/Makefile | 5 ---- 6 files changed, 53 insertions(+), 85 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 81b2eaa0355..9f93ee1532c 100644 --- a/Makefile +++ b/Makefile @@ -2001,39 +2001,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 4352ea39e9b..7727b707b74 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -727,7 +727,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/contrib/scalar/Makefile b/contrib/scalar/Makefile index 6fb5cc8b701..139b2a2c8c8 100644 --- a/contrib/scalar/Makefile +++ b/contrib/scalar/Makefile @@ -1,20 +1,6 @@ # Import tree-wide shared Makefile behavior and libraries include ../../shared.mak -QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir -QUIET_SUBDIR1 = - -ifneq ($(findstring s,$(MAKEFLAGS)),s) -ifndef V - QUIET_GEN = @echo ' ' GEN $@; - QUIET_SUBDIR0 = +@subdir= - QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \ - $(MAKE) $(PRINT_DIR) -C $$subdir -else - export V -endif -endif - include ../../config.mak.uname -include ../../config.mak.autogen -include ../../config.mak diff --git a/shared.mak b/shared.mak index f6b589ffd8f..20be9ddf5a6 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 Feb 25 09:04:34 2022 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: 12759964 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 ADEBEC433EF for ; Fri, 25 Feb 2022 09:05:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238904AbiBYJFa (ORCPT ); Fri, 25 Feb 2022 04:05:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238884AbiBYJFV (ORCPT ); Fri, 25 Feb 2022 04:05:21 -0500 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7D8377DABE for ; Fri, 25 Feb 2022 01:04:49 -0800 (PST) Received: by mail-wm1-x32e.google.com with SMTP id o62-20020a1ca541000000b00380e3cc26b7so1293261wme.0 for ; Fri, 25 Feb 2022 01:04:49 -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=l/m7K3guB63ks7TFa0duoZkR5t0qS6FclhgjX96MFys=; b=pQ4lzD0LU9PeGjZuurC1m3rSyvr95DNLC8uh0DoDCIdPKMgYLoChzJGdKr9CzMcjFo 1o7IhS56/airD+mN+vHiTrwTIb+QF+d8opkEYnS1c+yQhv9M++7Y4B3PxoCVHbnXzXuA hwTF1lJZbomjw5JqFSnlawHI9KL0+mbl9egT1bK8sY1tXX61oF54PCMlsFhIcEZvMBz5 cKe+ViNv9TorLON+jc1PmxHZbf5nGzEJ5a5AfPEOzkwyvKwZ2KgRPEB1AbtpNskUQR3O M6bpKF31oW/p5gtqlRt46hsYLjutHHYEnXvaYZgk7EgDTpGPdLuS1r9T9i+QBfMOStdE oLBg== 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=l/m7K3guB63ks7TFa0duoZkR5t0qS6FclhgjX96MFys=; b=XWur0buhpCv6SGR6EtQlLWpwkwKChRPy8Z8uEWqRc4mungbg7iiPb5AcCuxbZt0lZy 3JiBzf9UvbEg2hC0fS4w9eDencwx1OUxWSATrg6KjRBZguUOPOXUfvx3Fb7+vDH9xR1f B4ZkWg+OMHbzuUpI0EO5ScO2O7l8qhOk0avcWWfSC7c8goETcX859H3y2Z/+IsaRhw+z tjSD9o7eo5h6mRBWsP3nZ89QZl/0UGrtF3W29/os3s0qX8Set8t/sZaHKY0Mu+BHcsg2 Tnx9UejP9bmW+71hiPLBtr+/CnK8tcWwyp8jAqM90BN2aq7/i+Rcn4uiIyaYqN4pUcwY yrmA== X-Gm-Message-State: AOAM533LTjoOe3oZInNs+H3qxoqoVZLjHnAO9RpiPLiYqWXMqFngNmvq RrFQsagkfIJr1ponnPO1E0Srk5SVE+flsA== X-Google-Smtp-Source: ABdhPJz81sigo20RUscGiYEfrReU4nXz4fH/6r20PxiwAUR5fF71H0CGb2M6VEbGAvSogjeQZfNyyQ== X-Received: by 2002:a7b:c5d1:0:b0:37f:a8a3:9e17 with SMTP id n17-20020a7bc5d1000000b0037fa8a39e17mr1793552wmk.109.1645779887693; Fri, 25 Feb 2022 01:04:47 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:47 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 8/9] Makefile: use $(wspfx) for $(QUIET...) in shared.mak Date: Fri, 25 Feb 2022 10:04:34 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 20be9ddf5a6..6e0f103b65f 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 Feb 25 09:04:35 2022 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: 12759965 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 F388CC433FE for ; Fri, 25 Feb 2022 09:05:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238894AbiBYJFd (ORCPT ); Fri, 25 Feb 2022 04:05:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53538 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238887AbiBYJFX (ORCPT ); Fri, 25 Feb 2022 04:05:23 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D9E57DABE for ; Fri, 25 Feb 2022 01:04:51 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id p4so1255382wmg.1 for ; Fri, 25 Feb 2022 01:04:51 -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=py7ySvWb+/RxODcD4K9363GlcZj1CcmPCbpQncMStBM=; b=oPsWghlTUCLwKh0PrKctl0YB10jk7j1kdlYjLJqiEo5oI/IvmFnNvv4t0XgDYY70A5 61FYFQs6usKwqc4LhrcA3ld7x9CmYWVHNEdQQPV3yHuyTnMVTXR3lyJq2G/x4qoL8ySf hKZpNQ7MnXkggAg3/mefwo3ZD8HtgeJ/o5rnZ7cSAK0Pja6q1LqSpGnNDeSRumbTLj3l b1yfje5M4jNJdm/ALivDYZ29DJWfVxHZDuig+DTqNoIAzm2mwaxqDhgfcmmokPQKV96+ TXpoywVldmC0QwBAGQKeksvsVE2ja+oy8DGGS3CSlo8AestEgBnwrJwm2f3BEjlVKzR9 hN3Q== 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=py7ySvWb+/RxODcD4K9363GlcZj1CcmPCbpQncMStBM=; b=NgKuN5kksDcqdk785vD3Z2LypB+eVAE7ON1fuDEGgqAYzhkIvRkclcw1ZB7OF+usb1 o2uCt9Rty3FP1C/t+U4UY5ipSrzVCTs5Qy8lZiD2gKOyM86Hckx0tpEOS8BJUywskDgC 27ZsZ2o7352XqoKccRhJQl3cbU3h12zKvxG4QncWBgpjkskjCIvgW1rxMtzwVAit6BcT I0ttFxkGvwhmUR6Lg1HSMH54OhMgA0PdpBsiSVdWsf9bUTBRwnv0uvI05KPV1HYhbxp3 LdLft1hGF9I9S8GYm++3rxgWEB7OVRM1LqNMxqnlz1aXw5upmfScWgCYIhtPUY9r9UMY FdTw== X-Gm-Message-State: AOAM532FLYEwlPbCDe3LmLITWnHpF78W9m0ZPfg3hr91ov1M95PSaMtd wHiWTjQIiJfRTX9mbKxYT923LmUXJwKtsg== X-Google-Smtp-Source: ABdhPJyzwxKFuCkK6y6b5AxxS+l11xNUvKoCXpuEHGwZXlLxOzCcOjibkS/V6V8dsMfyU6j4Ryqs5g== X-Received: by 2002:a1c:2946:0:b0:37b:d710:f565 with SMTP id p67-20020a1c2946000000b0037bd710f565mr1829420wmp.10.1645779888683; Fri, 25 Feb 2022 01:04:48 -0800 (PST) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id l38-20020a05600c1d2600b0037e9090fb1esm5636657wms.24.2022.02.25.01.04.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Feb 2022 01:04:48 -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 , Eric Sunshine , Taylor Blau , =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFz?= =?utf-8?b?b24=?= Subject: [PATCH v3 9/9] Makefiles: add and use wildcard "mkdir -p" template Date: Fri, 25 Feb 2022 10:04:35 +0100 Message-Id: X-Mailer: git-send-email 2.35.1.1175.gf9e1b23ea35 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 that noted 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 9f93ee1532c..549ca6e7a5c 100644 --- a/Makefile +++ b/Makefile @@ -2745,7 +2745,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)) @@ -2761,15 +2762,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) $@+ && \ @@ -2903,7 +2905,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 6e0f103b65f..7ba04049c8a 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 create +## 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