* bug#68996: [PATCH] Respect warnings added in GNU Make 4.4.90
2024-02-09 6:25 ` Eli Zaretskii
@ 2024-02-09 7:27 ` Paul Eggert
2024-02-09 11:43 ` Eli Zaretskii
0 siblings, 1 reply; 5+ messages in thread
From: Paul Eggert @ 2024-02-09 7:27 UTC (permalink / raw)
To: Eli Zaretskii, Collin Funk; +Cc: 68996-done
[-- 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
^ permalink raw reply related [flat|nested] 5+ messages in thread