On 12/21/21 01:41, Bruno Haible wrote:
The number of developers who know about 'echo', 'cat', and *simple* 'sed'
commands is far larger than the number of developers who know about
advanced 'sed' commands (with hold space etc.).
I'm not all that worried about this issue, as this stuff is boilerplate.
(Most developers these days don't know sed either; times change....)
That being said, the boilerplate is indeed error-prone and should be
made easier. Done in the second draft of the patch, which is attached.
It assumes we arrange for something like this in the Makefile:
SED_HEADER_BEGIN = -n \
-e 1h \
-e '1s,.*,/* DO NOT EDIT! GENERATED AUTOMATICALLY! *,w $@-t' \
-e 1g
SED_HEADER_END = \
-e 'w $@-t'
(and we can put comments near this explaining 'sed' to the uninitiated :-).
The old code prints "GEN alloca.h" before executing the commands;
the new code prints "GEN alloca.h" after most commands are done.
That's a bug in my patch's first draft, fixed in the second draft.
The bug was inspired by similar bugs in Gnulib's already-existing
Makefile snippets, which as it happens yesterday I told another Emacs
developer that I'd fix. I installed the second attached patch to fix the
Gnulib issues.
That means, when the commands don't behave right (loop endlessly
or whatever) and the user interrupts them with Ctrl-C, he will have
no clue which rule was misbehaving.
Typically I use 'make V=1' or 'make --trace' or even 'strace -f make' to
debug problems like that, and something like that is needed anyway
regardless of where the AM_V_GEN appears in the recipe.
3) It suggests a coding style that only works when there are no shell
variable assignments in the command.
This is a plus, not a minus. If we omit the '&& \', a makefile developer
doesn't have to worry earlier shell commands affecting the setup of the
current command. The '&& \' is a signal to the developer, "Watch out:
this recipe is tricky!" and when that signal is absent the developer can
relax and concentrate on more important things.
Sometimes it's important to do shell assignments with side effects, and
in those cases the '&& \' is needed and is a good signal to have. But it
should be omitted when unnecessary.
Omitting the '&& \' also helps debugging. I use 'make V=1' without '&&
\', I see each command individually just before it's executed, rather
than the entire recipe being output all at once.
And it would let GNU make invoke rm, mkdir, sed, and mv
directly instead of via a subshell, which would be a minor efficiency plus.
Now, that's a micro-optimization in the bad sense of the word. It's like
rewriting C code such as
x += 1;
to
x++;
because you know that you current compiler will generate faster code for the
latter.
It's not merely a micro-optimization; it can make debugging easier. I
recently went through the exercise of using 'strace -f make' to debug a
'make' session that went awry. When it's easy to cut down on the number
of fork+exec calls (as is the case here), it'll make these sessions easier.
The real fix should be to improve GNU make in such a way that it does not
make a difference whether one writes
command1
command2
or
command1 && command2
or
{ command1 && command2; }
Although that might be a valid performance improvement, it's not the
'make' that we have, and anyway it doesn't address the clarity issues
mentioned earlier.
(I suppose we should also omit that 'rm -f $@-t $@'; it shouldn't be
needed
It can needed when people have done something like
$ make
$ sudo make check
If you run 'make' sometimes as one user and sometimes as another, you
can have problems like that no matter what. We don't put 'rm -f $@' at
the start of every other makefile recipe to work around those problems;
why are these recipes special?
On the slow build hosts that I use, the entire set of commands for
creating .h files is faster than compiling a single .c file
I'm well aware that other things take much more time, 'configure' being
the worst offender. That being said, improving those other things is
something I don't have the time to do right now, whereas this
improvement should be easy. And anyway performance is not the main
motivation here.diff --git a/modules/alloca-opt b/modules/alloca-opt
index b33522997..fe1c51e43 100644
--- a/modules/alloca-opt
+++ b/modules/alloca-opt
@@ -21,12 +21,12 @@ BUILT_SOURCES += $(ALLOCA_H)
# doesn't have one that works with the given compiler.
if GL_GENERATE_ALLOCA_H
alloca.h: alloca.in.h $(top_builddir)/config.status
- $(AM_V_GEN)rm -f $@-t $@ && \
-@NMD@ $(MKDIR_P) '%reldir%' && \
- { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
- sed -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' < $(srcdir)/alloca.in.h; \
- } > $@-t && \
- mv -f $@-t $@
+@NMD@ $(AM_V_at)$(MKDIR_P) '%reldir%'
+ $(AM_V_at)sed $(SED_HEADER_BEGIN) \
+ -e 's|@''HAVE_ALLOCA_H''@|$(HAVE_ALLOCA_H)|g' \
+ $(SED_HEADER_END) \
+ $(srcdir)/alloca.in.h
+ $(AM_V_AT)mv -f $@-t $@
else
alloca.h: $(top_builddir)/config.status
rm -f $@
From 46540554bb4564e2929d5fecdae194701142777d Mon Sep 17 00:00:00 2001
From: Paul Eggert <egg...@cs.ucla.edu>
Date: Tue, 21 Dec 2021 10:43:56 -0800
Subject: [PATCH] Move AM_V_GEN to recipe start
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is especially needed when building Emacs, as it uses
‘AM_V_GEN=@$(info GEN $@)', which means the GEN line is output by
GNU make just before the recipe runs, regardless of where AM_V_GEN
appears in the recipe. And it’s also good practice even if the
default Automake ‘AM_V_GEN=@echo GEN $@;’ is used, as it’s better
to output the GEN line consistently at the start of every recipe,
even if this precedes a preparatory command that almost always
works silently.
* modules/arpa_inet, modules/dynarray, modules/net_if:
* modules/netinet_in, modules/scratch_buffer, modules/selinux-h:
* modules/sys_file, modules/sys_ioctl, modules/sys_random:
* modules/sys_resource, modules/sys_select, modules/sys_socket:
* modules/sys_stat, modules/sys_time, modules/sys_times:
* modules/sys_types, modules/sys_uio, modules/sys_utsname:
* modules/sys_wait, modules/unicase/special-casing, top/maint.mk:
Use AM_V_GEN only at the start of each recipe.
---
ChangeLog | 20 ++++++++++++++++++++
modules/arpa_inet | 4 ++--
modules/dynarray | 8 ++++----
modules/net_if | 4 ++--
modules/netinet_in | 4 ++--
modules/scratch_buffer | 4 ++--
modules/selinux-h | 12 ++++++------
modules/sys_file | 4 ++--
modules/sys_ioctl | 4 ++--
modules/sys_random | 4 ++--
modules/sys_resource | 4 ++--
modules/sys_select | 4 ++--
modules/sys_socket | 4 ++--
modules/sys_stat | 4 ++--
modules/sys_time | 4 ++--
modules/sys_times | 4 ++--
modules/sys_types | 4 ++--
modules/sys_uio | 4 ++--
modules/sys_utsname | 4 ++--
modules/sys_wait | 4 ++--
modules/unicase/special-casing | 4 ++--
top/maint.mk | 2 +-
22 files changed, 67 insertions(+), 47 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d2d4a3cfa..e4055c12f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+2021-12-21 Paul Eggert <egg...@cs.ucla.edu>
+
+ Move AM_V_GEN to recipe start
+ This is especially needed when building Emacs, as it uses
+ ‘AM_V_GEN=@$(info GEN $@)', which means the GEN line is output by
+ GNU make just before the recipe runs, regardless of where AM_V_GEN
+ appears in the recipe. And it’s also good practice even if the
+ default Automake ‘AM_V_GEN=@echo GEN $@;’ is used, as it’s better
+ to output the GEN line consistently at the start of every recipe,
+ even if this precedes a preparatory command that almost always
+ works silently.
+ * modules/arpa_inet, modules/dynarray, modules/net_if:
+ * modules/netinet_in, modules/scratch_buffer, modules/selinux-h:
+ * modules/sys_file, modules/sys_ioctl, modules/sys_random:
+ * modules/sys_resource, modules/sys_select, modules/sys_socket:
+ * modules/sys_stat, modules/sys_time, modules/sys_times:
+ * modules/sys_types, modules/sys_uio, modules/sys_utsname:
+ * modules/sys_wait, modules/unicase/special-casing, top/maint.mk:
+ Use AM_V_GEN only at the start of each recipe.
+
2021-12-21 Bruno Haible <br...@clisp.org>
c-xvasprintf: Fix declarations (regression 2021-08-07).
diff --git a/modules/arpa_inet b/modules/arpa_inet
index 4655998c8..5344fe3ea 100644
--- a/modules/arpa_inet
+++ b/modules/arpa_inet
@@ -25,8 +25,8 @@ BUILT_SOURCES += arpa/inet.h
# We need the following in order to create <arpa/inet.h> when the system
# doesn't have one.
arpa/inet.h: arpa_inet.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/arpa'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/arpa'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/dynarray b/modules/dynarray
index 37d1f6c75..e79fe42a8 100644
--- a/modules/dynarray
+++ b/modules/dynarray
@@ -26,8 +26,8 @@ Makefile.am:
BUILT_SOURCES += malloc/dynarray.gl.h malloc/dynarray-skeleton.gl.h
malloc/dynarray.gl.h: malloc/dynarray.h
- $(AM_V_at)$(MKDIR_P) '%reldir%/malloc'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/malloc'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e '/libc_hidden_proto/d' < $(srcdir)/malloc/dynarray.h; \
} > $@-t && \
@@ -35,8 +35,8 @@ malloc/dynarray.gl.h: malloc/dynarray.h
MOSTLYCLEANFILES += malloc/dynarray.gl.h malloc/dynarray.gl.h-t
malloc/dynarray-skeleton.gl.h: malloc/dynarray-skeleton.c
- $(AM_V_at)$(MKDIR_P) '%reldir%/malloc'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/malloc'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|<malloc/dynarray\.h>|<malloc/dynarray.gl.h>|g' \
-e 's|__attribute_maybe_unused__|_GL_ATTRIBUTE_MAYBE_UNUSED|g' \
diff --git a/modules/net_if b/modules/net_if
index 092116bcb..b60ccc95e 100644
--- a/modules/net_if
+++ b/modules/net_if
@@ -21,8 +21,8 @@ BUILT_SOURCES += $(NET_IF_H)
# doesn't have one.
if GL_GENERATE_NET_IF_H
net/if.h: net_if.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/net'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/net'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/netinet_in b/modules/netinet_in
index 29b26c906..4d0067414 100644
--- a/modules/netinet_in
+++ b/modules/netinet_in
@@ -21,8 +21,8 @@ BUILT_SOURCES += $(NETINET_IN_H)
# doesn't have one.
if GL_GENERATE_NETINET_IN_H
netinet/in.h: netinet_in.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/netinet'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/netinet'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/scratch_buffer b/modules/scratch_buffer
index 336a53472..4b72958c6 100644
--- a/modules/scratch_buffer
+++ b/modules/scratch_buffer
@@ -26,8 +26,8 @@ Makefile.am:
BUILT_SOURCES += malloc/scratch_buffer.gl.h
malloc/scratch_buffer.gl.h: malloc/scratch_buffer.h
- $(AM_V_at)$(MKDIR_P) '%reldir%/malloc'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/malloc'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|__always_inline|inline _GL_ATTRIBUTE_ALWAYS_INLINE|g' \
-e 's|__glibc_likely|_GL_LIKELY|g' \
diff --git a/modules/selinux-h b/modules/selinux-h
index d6304e8ff..dd1e81140 100644
--- a/modules/selinux-h
+++ b/modules/selinux-h
@@ -34,8 +34,8 @@ lib_SOURCES += se-context.in.h se-label.in.h se-selinux.in.h \
BUILT_SOURCES += selinux/selinux.h
selinux/selinux.h: se-selinux.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/selinux'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/selinux'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
@@ -50,8 +50,8 @@ MOSTLYCLEANFILES += selinux/selinux.h selinux/selinux.h-t
BUILT_SOURCES += $(SELINUX_CONTEXT_H)
if GL_GENERATE_SELINUX_CONTEXT_H
selinux/context.h: se-context.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/selinux'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/selinux'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
cat $(srcdir)/se-context.in.h; \
} > $@-t && \
@@ -65,8 +65,8 @@ MOSTLYCLEANFILES += selinux/context.h selinux/context.h-t
BUILT_SOURCES += $(SELINUX_LABEL_H)
if GL_GENERATE_SELINUX_LABEL_H
selinux/label.h: se-label.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/selinux'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/selinux'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
cat $(srcdir)/se-label.in.h; \
} > $@-t && \
diff --git a/modules/sys_file b/modules/sys_file
index 753f6e1e8..bb3a99b8c 100644
--- a/modules/sys_file
+++ b/modules/sys_file
@@ -20,8 +20,8 @@ BUILT_SOURCES += sys/file.h
# We need the following in order to create <sys/file.h> when the system
# has one that is incomplete.
sys/file.h: sys_file.in.h $(top_builddir)/config.status $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's/@''HAVE_SYS_FILE_H''@/$(HAVE_SYS_FILE_H)/g' \
diff --git a/modules/sys_ioctl b/modules/sys_ioctl
index 571dc822b..5da91b747 100644
--- a/modules/sys_ioctl
+++ b/modules/sys_ioctl
@@ -22,8 +22,8 @@ BUILT_SOURCES += sys/ioctl.h
# We need the following in order to create <sys/ioctl.h> when the system
# does not have a complete one.
sys/ioctl.h: sys_ioctl.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''HAVE_SYS_IOCTL_H''@|$(HAVE_SYS_IOCTL_H)|g' \
diff --git a/modules/sys_random b/modules/sys_random
index 331103ae6..ad6cd583a 100644
--- a/modules/sys_random
+++ b/modules/sys_random
@@ -22,8 +22,8 @@ BUILT_SOURCES += sys/random.h
# We need the following in order to create <sys/random.h> when the system
# doesn't have one.
sys/random.h: sys_random.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_resource b/modules/sys_resource
index 5c68b981b..203e44ada 100644
--- a/modules/sys_resource
+++ b/modules/sys_resource
@@ -23,8 +23,8 @@ BUILT_SOURCES += sys/resource.h
# We need the following in order to create <sys/resource.h> when the system
# doesn't have one.
sys/resource.h: sys_resource.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_select b/modules/sys_select
index 61e78f827..1601b3976 100644
--- a/modules/sys_select
+++ b/modules/sys_select
@@ -24,8 +24,8 @@ BUILT_SOURCES += sys/select.h
# We need the following in order to create <sys/select.h> when the system
# doesn't have one that works with the given compiler.
sys/select.h: sys_select.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_socket b/modules/sys_socket
index dae62f250..263d35648 100644
--- a/modules/sys_socket
+++ b/modules/sys_socket
@@ -31,8 +31,8 @@ lib_SOURCES += sys_socket.c
# We need the following in order to create <sys/socket.h> when the system
# doesn't have one that works with the given compiler.
sys/socket.h: sys_socket.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_stat b/modules/sys_stat
index b778038c7..38ff7e141 100644
--- a/modules/sys_stat
+++ b/modules/sys_stat
@@ -26,8 +26,8 @@ BUILT_SOURCES += sys/stat.h
# We need the following in order to create <sys/stat.h> when the system
# has one that is incomplete.
sys/stat.h: sys_stat.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_time b/modules/sys_time
index 07838d2cd..1014d2d35 100644
--- a/modules/sys_time
+++ b/modules/sys_time
@@ -23,8 +23,8 @@ BUILT_SOURCES += sys/time.h
# We need the following in order to create <sys/time.h> when the system
# doesn't have one that works with the given compiler.
sys/time.h: sys_time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's/@''HAVE_SYS_TIME_H''@/$(HAVE_SYS_TIME_H)/g' \
diff --git a/modules/sys_times b/modules/sys_times
index 704fc17cb..68cb60518 100644
--- a/modules/sys_times
+++ b/modules/sys_times
@@ -21,8 +21,8 @@ BUILT_SOURCES += sys/times.h
# We need the following in order to create <sys/times.h> when the system
# doesn't have one that works with the given compiler.
sys/times.h: sys_times.in.h $(top_builddir)/config.status $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's/@''HAVE_SYS_TIMES_H''@/$(HAVE_SYS_TIMES_H)/g' \
diff --git a/modules/sys_types b/modules/sys_types
index e7d9511a6..453233803 100644
--- a/modules/sys_types
+++ b/modules/sys_types
@@ -22,8 +22,8 @@ BUILT_SOURCES += sys/types.h
# We need the following in order to create <sys/types.h> when the system
# doesn't have one that works with the given compiler.
sys/types.h: sys_types.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_uio b/modules/sys_uio
index 1cb23da97..1906544be 100644
--- a/modules/sys_uio
+++ b/modules/sys_uio
@@ -21,8 +21,8 @@ BUILT_SOURCES += sys/uio.h
# We need the following in order to create <sys/uio.h> when the system
# doesn't have one that works with the given compiler.
sys/uio.h: sys_uio.in.h $(top_builddir)/config.status
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/sys_utsname b/modules/sys_utsname
index d3f70dbab..a05589e5f 100644
--- a/modules/sys_utsname
+++ b/modules/sys_utsname
@@ -21,8 +21,8 @@ BUILT_SOURCES += sys/utsname.h
# We need the following in order to create <sys/utsname.h> when the system
# does not have one.
sys/utsname.h: sys_utsname.in.h $(top_builddir)/config.status $(WARN_ON_USE_H) $(ARG_NONNULL_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's/@''HAVE_SYS_UTSNAME_H''@/$(HAVE_SYS_UTSNAME_H)/g' \
diff --git a/modules/sys_wait b/modules/sys_wait
index e46fbb9d9..18a317c39 100644
--- a/modules/sys_wait
+++ b/modules/sys_wait
@@ -22,8 +22,8 @@ BUILT_SOURCES += sys/wait.h
# We need the following in order to create <sys/wait.h> when the system
# has one that is incomplete.
sys/wait.h: sys_wait.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_USE_H)
- $(AM_V_at)$(MKDIR_P) '%reldir%/sys'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/sys'
+ $(AM_V_at)rm -f $@-t $@ && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e 's|@''GUARD_PREFIX''@|${gl_include_guard_prefix}|g' \
-e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
diff --git a/modules/unicase/special-casing b/modules/unicase/special-casing
index 352ac60fa..79d9b9380 100644
--- a/modules/unicase/special-casing
+++ b/modules/unicase/special-casing
@@ -25,8 +25,8 @@ EXTRA_DIST += unicase/special-casing-table.h
# Generate special-casing.h with a declaration that depends on the gperf version.
unicase/special-casing.h: unicase/special-casing.in.h unicase/special-casing-table.h
- $(AM_V_at)$(MKDIR_P) '%reldir%/unicase'
- $(AM_V_GEN)rm -f $@-t $@ && \
+ $(AM_V_GEN)$(MKDIR_P) '%reldir%/unicase'
+ $(AM_V_at)rm -f $@-t $@ && \
declaration=`grep '^gl_unicase_special_lookup' $(srcdir)/unicase/special-casing-table.h | sed -e 's/register //g'` && \
{ echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
sed -e "/gl_unicase_special_lookup/s/gl_unicase_special_lookup.*/$${declaration};/" $(srcdir)/unicase/special-casing.in.h; \
diff --git a/top/maint.mk b/top/maint.mk
index a03bc2e21..a61bfda13 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -1522,7 +1522,7 @@ alpha beta stable: $(local-check) writable-files $(submodule-checks)
release:
$(AM_V_GEN)$(MAKE) _version
- $(AM_V_GEN)$(MAKE) $(release-type)
+ $(AM_V_at)$(MAKE) $(release-type)
# Override this in cfg.mk if you follow different procedures.
release-prep-hook ?= release-prep
--
2.32.0