all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Eli Zaretskii <eliz@gnu.org>, Collin Funk <collinfunk38@gmail.com>
Cc: 68996-done@debbugs.gnu.org
Subject: bug#68996: [PATCH] Respect warnings added in GNU Make 4.4.90
Date: Thu, 8 Feb 2024 23:27:47 -0800	[thread overview]
Message-ID: <469a5744-7e84-4497-a5a8-3db64da14761@cs.ucla.edu> (raw)
In-Reply-To: <868r3uw3vt.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 584 bytes --]

On 2024-02-08 22:25, Eli Zaretskii wrote:
> Paul, how do
> other project produce the same indented "CC foo.o"? do they also use
> this trick? or something else?

Nobody else does it as far as I know. It was my invention, just for Emacs.

I expect the new GNU 'make' behavior will be better for most software 
projects, as it's likely to catch typos that cause bugs. So let's port 
to it; it's not hard. To do that, I installed the attached patch into 
Emacs master. It uses Paul Smith's suggestion, so that 'make' still 
outputs nicely-indented info.

Boldly marking this bug as done.

[-- Attachment #2: 0001-Port-to-GNU-Make-03ecd94488b85adc38746ec3e7c2a297a52.patch --]
[-- Type: text/x-patch, Size: 8492 bytes --]

From 8d09e1def55e57a8c627ba704289f796c48a085d Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 8 Feb 2024 23:17:04 -0800
Subject: [PATCH] Port to GNU Make 03ecd94488b85adc38746ec3e7c2a297a522598e
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Problem reported by Collin Funk (Bug#68996).
* GNUmakefile (.): New macro.
(help): Use ‘$.’ instead of ‘$ ’.
* cross/verbose.mk.android, src/verbose.mk.in (.): New macro.
(AM_V_AR, AM_V_CC, AM_V_CXX, AM_V_CCLD, AM_V_CXXLD, AM_V_GEN):
Use ‘$.’ instead of ‘$ ’.
* lib-src/Makefile.in (install): Use ‘$.’ instead of ‘$ ’.
---
 GNUmakefile              | 50 +++++++++++++++++++++-------------------
 cross/verbose.mk.android | 13 ++++++-----
 lib-src/Makefile.in      |  4 ++--
 src/verbose.mk.in        | 29 ++++++++++++-----------
 4 files changed, 50 insertions(+), 46 deletions(-)

diff --git a/GNUmakefile b/GNUmakefile
index 16064672c65..58c0281e895 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -27,6 +27,8 @@
 # newly-built Makefile.  If the source tree is already configured,
 # this file defers to the existing Makefile.
 
+. :=
+
 # If you want non-default build options, or if you want to build in an
 # out-of-source tree, you should run 'configure' before running 'make'.
 # But run 'autogen.sh' first, if the source was checked out directly
@@ -36,30 +38,30 @@
 
 ifeq (help,$(filter help,$(MAKECMDGOALS)))
 help:
-	$(info $ NOTE:  This is a brief summary of some common make targets.)
-	$(info $ For more detailed information, please read the files INSTALL,)
-	$(info $ INSTALL.REPO, Makefile or visit this URL:)
-	$(info $ https://www.gnu.org/prep/standards/html_node/Standard-Targets.html)
-	$(info $ )
-	$(info $ make all              -- compile and build Emacs)
-	$(info $ make install          -- install Emacs)
-	$(info $ make TAGS             -- update tags tables)
-	$(info $ make clean            -- delete built files but preserve configuration)
-	$(info $ make mostlyclean      -- like 'make clean', but leave those files that)
-	$(info $                          usually do not need to be recompiled)
-	$(info $ make distclean        -- delete all build and configuration files,)
-	$(info $                          leave only files included in source distribution)
-	$(info $ make maintainer-clean -- delete almost everything that can be regenerated)
-	$(info $ make extraclean       -- like maintainer-clean, and also delete)
-	$(info $                          backup and autosave files)
-	$(info $ make bootstrap        -- delete all compiled files to force a new bootstrap)
-	$(info $                          from a clean slate, then build in the normal way)
-	$(info $ make uninstall        -- remove files installed by 'make install')
-	$(info $ make check            -- run the Emacs test suite)
-	$(info $ make docs             -- generate Emacs documentation in info format)
-	$(info $ make html             -- generate documentation in html format)
-	$(info $ make ps               -- generate documentation in ps format)
-	$(info $ make pdf              -- generate documentation in pdf format )
+	$(info $.NOTE:  This is a brief summary of some common make targets.)
+	$(info $.For more detailed information, please read the files INSTALL,)
+	$(info $.INSTALL.REPO, Makefile or visit this URL:)
+	$(info $.https://www.gnu.org/prep/standards/html_node/Standard-Targets.html)
+	$(info $.)
+	$(info $.make all              -- compile and build Emacs)
+	$(info $.make install          -- install Emacs)
+	$(info $.make TAGS             -- update tags tables)
+	$(info $.make clean            -- delete built files but preserve configuration)
+	$(info $.make mostlyclean      -- like 'make clean', but leave those files that)
+	$(info $.                         usually do not need to be recompiled)
+	$(info $.make distclean        -- delete all build and configuration files,)
+	$(info $.                         leave only files included in source distribution)
+	$(info $.make maintainer-clean -- delete almost everything that can be regenerated)
+	$(info $.make extraclean       -- like maintainer-clean, and also delete)
+	$(info $.                         backup and autosave files)
+	$(info $.make bootstrap        -- delete all compiled files to force a new bootstrap)
+	$(info $.                         from a clean slate, then build in the normal way)
+	$(info $.make uninstall        -- remove files installed by 'make install')
+	$(info $.make check            -- run the Emacs test suite)
+	$(info $.make docs             -- generate Emacs documentation in info format)
+	$(info $.make html             -- generate documentation in html format)
+	$(info $.make ps               -- generate documentation in ps format)
+	$(info $.make pdf              -- generate documentation in pdf format )
 	@:
 
 .PHONY: help
diff --git a/cross/verbose.mk.android b/cross/verbose.mk.android
index 958cf237c58..7b9af76404b 100644
--- a/cross/verbose.mk.android
+++ b/cross/verbose.mk.android
@@ -44,12 +44,13 @@ have_working_info = $(filter notintermediate,$(value .FEATURES))
 # The workaround is done only for AM_V_ELC and AM_V_ELN,
 # since the bug is not annoying elsewhere.
 
-AM_V_AR      = @$(info $   AR       $@)
+. :=
+AM_V_AR      = @$(info $.  AR       $@)
 AM_V_at	     = @
-AM_V_CC      = @$(info $   CC       $@)
-AM_V_CXX     = @$(info $   CXX      $@)
-AM_V_CCLD    = @$(info $   CCLD     $@)
-AM_V_CXXLD   = @$(info $   CXXLD    $@)
-AM_V_GEN     = @$(info $   GEN      $@)
+AM_V_CC      = @$(info $.  CC       $@)
+AM_V_CXX     = @$(info $.  CXX      $@)
+AM_V_CCLD    = @$(info $.  CCLD     $@)
+AM_V_CXXLD   = @$(info $.  CXXLD    $@)
+AM_V_GEN     = @$(info $.  GEN      $@)
 AM_V_NO_PD = --no-print-directory
 endif
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index 7c059640862..3cdf1620781 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -319,7 +319,7 @@ maybe-blessmail:
 ## up if chown or chgrp fails, as the package responsible for
 ## installing Emacs can fix this problem later.
 $(DESTDIR)${archlibdir}: all
-	$(info $ )
+	$(info $.)
 	$(info Installing utilities run internally by Emacs.)
 	umask 022 && ${MKDIR_P} "$(DESTDIR)${archlibdir}"
 	exp_archlibdir=`cd "$(DESTDIR)${archlibdir}" && pwd -P` && \
@@ -361,7 +361,7 @@ .PHONY:
 .PHONY: bootstrap-clean check tags
 
 install: $(DESTDIR)${archlibdir}
-	$(info $ )
+	$(info $.)
 	$(info Installing utilities for users to run.)
 	umask 022 && ${MKDIR_P} "$(DESTDIR)${bindir}"
 	for file in ${INSTALLABLES} ; do \
diff --git a/src/verbose.mk.in b/src/verbose.mk.in
index e72c182f276..6efb6b9416b 100644
--- a/src/verbose.mk.in
+++ b/src/verbose.mk.in
@@ -53,38 +53,39 @@ have_working_info = $(filter notintermediate,$(value .FEATURES))
 # The workaround is done only for AM_V_ELC and AM_V_ELN,
 # since the bug is not annoying elsewhere.
 
-AM_V_AR      = @$(info $   AR       $@)
+. :=
+AM_V_AR      = @$(info $.  AR       $@)
 AM_V_at = @
-AM_V_CC      = @$(info $   CC       $@)
-AM_V_CXX     = @$(info $   CXX      $@)
-AM_V_CCLD    = @$(info $   CCLD     $@)
-AM_V_CXXLD   = @$(info $   CXXLD    $@)
+AM_V_CC      = @$(info $.  CC       $@)
+AM_V_CXX     = @$(info $.  CXX      $@)
+AM_V_CCLD    = @$(info $.  CCLD     $@)
+AM_V_CXXLD   = @$(info $.  CXXLD    $@)
 
 ifeq ($(HAVE_NATIVE_COMP)-$(NATIVE_DISABLED)-$(ANCIENT),yes--)
 ifneq (,$(have_working_info))
-AM_V_ELC     = @$(info $   ELC+ELN  $@)
-AM_V_ELN     = @$(info $   ELN      $@)
+AM_V_ELC     = @$(info $.  ELC+ELN  $@)
+AM_V_ELN     = @$(info $.  ELN      $@)
 else
 AM_V_ELC     = @echo "  ELC+ELN " $@;
 AM_V_ELN     = @echo "  ELN     " $@;
 endif
 else
 ifneq (,$(have_working_info))
-AM_V_ELC     = @$(info $   ELC      $@)
+AM_V_ELC     = @$(info $.  ELC      $@)
 else
 AM_V_ELC     = @echo "  ELC     " $@;
 endif
 AM_V_ELN =
 endif
 
-AM_V_GEN     = @$(info $   GEN      $@)
-AM_V_GLOBALS = @$(info $   GEN      globals.h)
+AM_V_GEN     = @$(info $.  GEN      $@)
+AM_V_GLOBALS = @$(info $.  GEN      globals.h)
 AM_V_NO_PD = --no-print-directory
-AM_V_RC      = @$(info $   RC       $@)
+AM_V_RC      = @$(info $.  RC       $@)
 
 # These are used for the Android port.
-AM_V_JAVAC	= @$(info $   JAVAC    $@)
-AM_V_D8		= @$(info $   D8       $@)
-AM_V_AAPT	= @$(info $   AAPT     $@)
+AM_V_JAVAC	= @$(info $.  JAVAC    $@)
+AM_V_D8		= @$(info $.  D8       $@)
+AM_V_AAPT	= @$(info $.  AAPT     $@)
 AM_V_SILENT	= @
 endif
-- 
2.40.1


  reply	other threads:[~2024-02-09  7:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-09  3:00 bug#68996: [PATCH] Respect warnings added in GNU Make 4.4.90 Collin Funk
2024-02-09  6:25 ` Eli Zaretskii
2024-02-09  7:27   ` Paul Eggert [this message]
2024-02-09 11:43     ` Eli Zaretskii
2024-02-09 12:18       ` Collin Funk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=469a5744-7e84-4497-a5a8-3db64da14761@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=68996-done@debbugs.gnu.org \
    --cc=collinfunk38@gmail.com \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.