From unknown Fri Sep 05 20:54:57 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#60747] [PATCH] dirstamp: switch to a pattern rule Resent-From: Mike Frysinger Original-Sender: "Debbugs-submit" Resent-CC: automake-patches@gnu.org Resent-Date: Thu, 12 Jan 2023 03:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 60747 X-GNU-PR-Package: automake-patches X-GNU-PR-Keywords: patch To: 60747@debbugs.gnu.org X-Debbugs-Original-To: automake-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.167349377120397 (code B ref -1); Thu, 12 Jan 2023 03:23:02 +0000 Received: (at submit) by debbugs.gnu.org; 12 Jan 2023 03:22:51 +0000 Received: from localhost ([127.0.0.1]:44344 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pFoB0-0005It-VG for submit@debbugs.gnu.org; Wed, 11 Jan 2023 22:22:51 -0500 Received: from lists.gnu.org ([209.51.188.17]:38278) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pFoAx-0005Il-U5 for submit@debbugs.gnu.org; Wed, 11 Jan 2023 22:22:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pFoAx-0004gu-P2 for automake-patches@gnu.org; Wed, 11 Jan 2023 22:22:47 -0500 Received: from smtp.gentoo.org ([2001:470:ea4a:1:5054:ff:fec7:86e4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1pFoAv-00050A-GO for automake-patches@gnu.org; Wed, 11 Jan 2023 22:22:47 -0500 Received: by smtp.gentoo.org (Postfix, from userid 559) id D10CA335DA3; Thu, 12 Jan 2023 03:22:42 +0000 (UTC) From: Mike Frysinger Date: Wed, 11 Jan 2023 22:22:38 -0500 Message-Id: <20230112032238.23250-1-vapier@gentoo.org> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2001:470:ea4a:1:5054:ff:fec7:86e4; envelope-from=vapier@gentoo.org; helo=smtp.gentoo.org X-Spam_score_int: -41 X-Spam_score: -4.2 X-Spam_bar: ---- X-Spam_report: (-4.2 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) We can leverage $(@D) to generate a single pattern rule for all dirstamp rules. This saves many lines in the output -- normally we create 2 rules (or 6 lines) per subdir, and projects that use subdirs tend to use them quite a bit. In the most extreme & unlikely case (1 subdir, no depdir support), the line count is the same. In every other case, it's always a win. Looking at a few real world projects, the line deltas: * GNU libgloss: +3 -66 * GNU newlib: +3 -714 * GNU sim: +3 -138 There shouldn't be any concerns about portability with $(@D) because: (1) We only generate this rule iff we know the dirstamp is in a subdir (so we'd never have a case where $(@D) would expand to the cwd) (2) We already rely on $(@D) in our depdir code, and have since 2014 (the Automake 1.16 release). --- bin/automake.in | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bin/automake.in b/bin/automake.in index 1c13a3187f46..139d5ad93a9a 100644 --- a/bin/automake.in +++ b/bin/automake.in @@ -7893,6 +7893,14 @@ sub require_build_directory $directory_map{$directory} = $dirstamp; $directory_map{$cdir} = $dirstamp; + # Generate the pattern rule only once. + if (! vardef ('am__dirstamp', TRUE)) + { + $output_rules .= ("%/\$(am__dirstamp):\n" + . "\t\@\$(MKDIR_P) \$(\@D)\n" + . "\t\@: >>\$\@\n"); + } + # Set a variable for the dirstamp basename. define_pretty_variable ('am__dirstamp', TRUE, INTERNAL, '$(am__leading_dot)dirstamp'); @@ -7900,10 +7908,6 @@ sub require_build_directory # Directory must be removed by 'make distclean'. $clean_files{$dirstamp} = DIST_CLEAN; - $output_rules .= ("$dirstamp:\n" - . "\t\@\$(MKDIR_P) $directory\n" - . "\t\@: >>$dirstamp\n"); - return $dirstamp; } -- 2.39.0 From unknown Fri Sep 05 20:54:57 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#60747] [PATCH] dirstamp: switch to a pattern rule References: <20230112032238.23250-1-vapier@gentoo.org> Resent-From: Karl Berry Original-Sender: "Debbugs-submit" Resent-CC: automake-patches@gnu.org Resent-Date: Thu, 12 Jan 2023 22:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60747 X-GNU-PR-Package: automake-patches X-GNU-PR-Keywords: patch To: vapier@gentoo.org Cc: 60747@debbugs.gnu.org Received: via spool by 60747-submit@debbugs.gnu.org id=B60747.167356381920261 (code B ref 60747); Thu, 12 Jan 2023 22:51:02 +0000 Received: (at 60747) by debbugs.gnu.org; 12 Jan 2023 22:50:19 +0000 Received: from localhost ([127.0.0.1]:48824 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pG6Oo-0005Gj-W3 for submit@debbugs.gnu.org; Thu, 12 Jan 2023 17:50:19 -0500 Received: from freefriends.org ([96.88.95.60]:41984) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pG6Om-0005GM-48 for 60747@debbugs.gnu.org; Thu, 12 Jan 2023 17:50:16 -0500 X-Envelope-From: karl@freefriends.org Received: from freefriends.org (freefriends.org [96.88.95.60]) by freefriends.org (8.14.7/8.14.7) with ESMTP id 30CMoE7o022378 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 12 Jan 2023 15:50:15 -0700 Received: (from apache@localhost) by freefriends.org (8.14.7/8.14.7/Submit) id 30CMoE0G022377; Thu, 12 Jan 2023 15:50:14 -0700 Date: Thu, 12 Jan 2023 15:50:14 -0700 Message-Id: <202301122250.30CMoE0G022377@freefriends.org> From: Karl Berry In-Reply-To: <20230112032238.23250-1-vapier@gentoo.org> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) There shouldn't be any concerns about portability with $(@D) because: (1) We only generate this rule iff we know the dirstamp is in a subdir (so we'd never have a case where $(@D) would expand to the cwd) (2) We already rely on $(@D) in our depdir code, and have since 2014 (the Automake 1.16 release). I can't say I've ever come across, let alone touched, the "dirstamp code", but your arguments are convincing to me. I assume all tests pass after the change. Please go ahead and commit. --thanks, karl. From debbugs-submit-bounces@debbugs.gnu.org Thu Jan 12 23:05:48 2023 Received: (at control) by debbugs.gnu.org; 13 Jan 2023 04:05:48 +0000 Received: from localhost ([127.0.0.1]:49065 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGBK7-0001U0-SC for submit@debbugs.gnu.org; Thu, 12 Jan 2023 23:05:48 -0500 Received: from woodpecker.gentoo.org ([140.211.166.183]:56096 helo=smtp.gentoo.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pGBK6-0001Tn-7k for control@debbugs.gnu.org; Thu, 12 Jan 2023 23:05:46 -0500 Received: by smtp.gentoo.org (Postfix, from userid 559) id A696F340AB2; Fri, 13 Jan 2023 04:05:40 +0000 (UTC) From: Mike Frysinger To: control@debbugs.gnu.org Subject: Control message Message-Id: <20230113040540.A696F340AB2@smtp.gentoo.org> Date: Fri, 13 Jan 2023 04:05:40 +0000 (UTC) X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 60747 thankyou