From eaa44ca40e8da9ba86e6e03b76b41fd6843661d6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 20 Dec 2021 12:14:07 -0800 Subject: Prefer $(info) to @echo Have GNU Make output some diagnostics directly, instead of forking and execing a shell to do it. * GNUmakefile (help): * doc/lispref/two-volume.make (vol2.pdf, elisp2med-init) (elisp2-init): * doc/misc/Makefile.in (echo-info, echo-sources): * lib-src/Makefile.in (archlibdir, install, check): * src/verbose.mk.in (AM_V_AR, AM_V_CC, AM_V_CXX, AM_V_CCLD) (AM_V_CXXLD, AM_V_ELC, AM_V_ELN, AM_V_GEN, AM_V_GLOBALS) (AM_V_RC): * test/Makefile.in (subdirs, subdir-targets): Prefer $(info) to @echo. * GNUmakefile (MAKECMDGOALS, configure, Makefile): Prefer $(warning) to @echo >&2. * src/verbose.mk.in (AM_V_ELN): Output target, like the others. --- GNUmakefile | 62 ++++++++++++++++++++++----------------------- doc/lispref/two-volume.make | 6 ++--- doc/misc/Makefile.in | 6 ++--- lib-src/Makefile.in | 10 ++++---- src/verbose.mk.in | 24 +++++++++--------- test/Makefile.in | 4 +-- 6 files changed, 56 insertions(+), 56 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 76fd77ba1b0..1442cf0a4e8 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -36,31 +36,31 @@ ifeq (help,$(filter help,$(MAKECMDGOALS))) help: - @echo "NOTE: This is a brief summary of some common make targets." - @echo "For more detailed information, please read the files INSTALL," - @echo "INSTALL.REPO, Makefile or visit this URL:" - @echo "https://www.gnu.org/prep/standards/html_node/Standard-Targets.html" - @echo "" - @echo "make all -- compile and build Emacs" - @echo "make install -- install Emacs" - @echo "make TAGS -- update tags tables" - @echo "make clean -- delete built files but preserve configuration" - @echo "make mostlyclean -- like 'make clean', but leave those files that" - @echo " usually do not need to be recompiled" - @echo "make distclean -- delete all build and configuration files," - @echo " leave only files included in source distribution" - @echo "make maintainer-clean -- delete almost everything that can be regenerated" - @echo "make extraclean -- like maintainer-clean, and also delete" - @echo " backup and autosave files" - @echo "make bootstrap -- delete all compiled files to force a new bootstrap" - @echo " from a clean slate, then build in the normal way" - @echo "make uninstall -- remove files installed by 'make install'" - @echo "make check -- run the Emacs test suite" - @echo "make docs -- generate Emacs documentation in info format" - @echo "make html -- generate documentation in html format" - @echo "make ps -- generate documentation in ps format" - @echo "make pdf -- generate documentation in pdf format " - @exit + $(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 @@ -79,7 +79,7 @@ else ifeq ($(filter-out %clean,$(or $(MAKECMDGOALS),default)),) $(MAKECMDGOALS): - @echo >&2 'No Makefile; skipping $@.' + $(warning No Makefile; skipping $@.) else @@ -97,18 +97,18 @@ default $(ORDINARY_GOALS): Makefile .NOTPARALLEL: configure: - @echo >&2 'There seems to be no "configure" file in this directory.' - @echo >&2 Running ./autogen.sh ... + $(warning There seems to be no "configure" file in this directory.) + $(warning Running ./autogen.sh ...) ./autogen.sh @echo >&2 '"configure" file built.' Makefile: configure - @echo >&2 'There seems to be no Makefile in this directory.' + $(warning There seems to be no Makefile in this directory.) ifeq ($(configure),default) - @echo >&2 'Running ./configure ...' + $(warning Running ./configure ...) ./configure else - @echo >&2 'Running ./configure '$(configure)'...' + $(warning Running ./configure $(configure)...) ./configure $(configure) endif @echo >&2 'Makefile built.' diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index cf612b12573..c791e2522f2 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -35,7 +35,7 @@ vol1.pdf: elisp1med-fns-ready elisp1med-aux-ready elisp1med-toc-ready $(tex1) # vol2.pdf: elisp2med-fns-ready elisp2med-aux-ready elisp2med-toc-ready - @echo "Final TeX run for volume 2..." + $(info Final TeX run for volume 2...) cp elisp2med-toc-ready elisp2-toc-ready.toc cp elisp2med-fns-ready vol2.fns cp elisp2med-aux-ready vol2.aux @@ -123,7 +123,7 @@ elisp1med-init: elisp1-fns-ready elisp1-aux-ready elisp1init-toc-ready $(texinfo mv vol1.toc elisp1med-toc # elisp2med-init: elisp2-fns-ready elisp2-aux-ready elisp2init-toc-ready $(texinfodir)/texinfo.tex - @echo "Final TeX run for volume 2..." + $(info Final TeX run for volume 2...) cp elisp2init-toc-ready elisp2-toc-ready.toc cp elisp2-fns-ready vol2.fns cp elisp2-aux-ready vol2.aux @@ -211,7 +211,7 @@ elisp1-init: elisp.texi touch $@ # elisp2-init: elisp.texi - @echo "Initial TeX run for volume 2..." + $(info Initial TeX run for volume 2...) rm -f vol2.aux vol2.toc $(tex2) texindex vol2.?? diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 7982c0dc5ae..8be84e3fad1 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -130,12 +130,12 @@ info: $(INFO_TARGETS) ## Used by top-level Makefile. ## Base file names of output info files. +INFO_BASES = $(patsubst %.info,%,$(notdir $(INFO_INSTALL))) echo-info: - @echo "$(INFO_INSTALL) " | \ - sed -e 's|[^ ]*/||g' -e 's/\.info//g' -e "s/ */.info /g" + @: $(info $(addsuffix .info,$(INFO_BASES))) echo-sources: - @echo ${SOURCES} + @: $(info $(SOURCES)) dvi: $(DVI_TARGETS) diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in index c07b678839c..835b6016541 100644 --- a/lib-src/Makefile.in +++ b/lib-src/Makefile.in @@ -297,8 +297,8 @@ maybe-blessmail: $(BLESSMAIL_TARGET) ## up if chown or chgrp fails, as the package responsible for ## installing Emacs can fix this problem later. $(DESTDIR)${archlibdir}: all - @echo - @echo "Installing utilities run internally by Emacs." + $(info $ ) + $(info Installing utilities run internally by Emacs.) umask 022 && ${MKDIR_P} "$(DESTDIR)${archlibdir}" exp_archlibdir=`cd "$(DESTDIR)${archlibdir}" && /bin/pwd` && \ if [ "$$exp_archlibdir" != "`/bin/pwd`" ]; then \ @@ -339,8 +339,8 @@ $(DESTDIR)${archlibdir}: all .PHONY: bootstrap-clean check tags install: $(DESTDIR)${archlibdir} - @echo - @echo "Installing utilities for users to run." + $(info $ ) + $(info Installing utilities for users to run.) umask 022 && ${MKDIR_P} "$(DESTDIR)${bindir}" for file in ${INSTALLABLES} ; do \ $(INSTALL_PROGRAM) $(INSTALL_STRIP) $${file} \ @@ -375,7 +375,7 @@ bootstrap-clean maintainer-clean: distclean ## Test the contents of the directory. check: - @echo "We don't have any tests for the lib-src/ directory yet." + $(info We don't have any tests for the lib-src/ directory yet.) tagsfiles = $(wildcard ${srcdir}/*.[ch]) diff --git a/src/verbose.mk.in b/src/verbose.mk.in index 9252971acc3..eee9d215ea0 100644 --- a/src/verbose.mk.in +++ b/src/verbose.mk.in @@ -33,26 +33,26 @@ AM_V_GLOBALS = AM_V_NO_PD = AM_V_RC = else -AM_V_AR = @echo " AR " $@; +AM_V_AR = @$(info $ AR $@) AM_V_at = @ -AM_V_CC = @echo " CC " $@; -AM_V_CXX = @echo " CXX " $@; -AM_V_CCLD = @echo " CCLD " $@; -AM_V_CXXLD = @echo " 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),yes) ifeq ($(NATIVE_DISABLED),1) -AM_V_ELC = @echo " ELC " $@; +AM_V_ELC = @$(info $ ELC $@) AM_V_ELN = else -AM_V_ELC = @echo " ELC+ELN " $@; -AM_V_ELN = @echo " ELN " $@; +AM_V_ELC = @$(info $ ELC+ELN $@) +AM_V_ELN = @$(info $ ELN $@) endif else -AM_V_ELC = @echo " ELC " $@; +AM_V_ELC = @$(info $ ELC $@) AM_V_ELN = endif -AM_V_GEN = @echo " GEN " $@; -AM_V_GLOBALS = @echo " 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 = @echo " RC " $@; +AM_V_RC = @$(info $ RC $@) endif diff --git a/test/Makefile.in b/test/Makefile.in index eeda2918fa3..0bb35581d18 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -375,10 +375,10 @@ check-declare: .PHONY: subdirs subdir-targets generate-test-jobs subdirs: - @echo $(SUBDIRS) + @: $(info $(SUBDIRS)) subdir-targets: - @echo $(SUBDIR_TARGETS) + @: $(info $(SUBDIR_TARGETS)) generate-test-jobs: @$(MAKE) -C infra generate-test-jobs SUBDIRS="$(SUBDIRS)" -- cgit v1.2.3