public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc/release/2.34/master] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
@ 2022-11-09 19:28 DJ Delorie
  0 siblings, 0 replies; only message in thread
From: DJ Delorie @ 2022-11-09 19:28 UTC (permalink / raw)
  To: glibc-cvs

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f42d871b22f7eb5330e77ed9bccbb447c44e7101

commit f42d871b22f7eb5330e77ed9bccbb447c44e7101
Author: Sergei Trofimovich <slyich@gmail.com>
Date:   Tue Sep 13 13:39:13 2022 -0400

    Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564]
    
    make-4.4 will add long flags to MAKEFLAGS variable:
    
        * WARNING: Backward-incompatibility!
          Previously only simple (one-letter) options were added to the MAKEFLAGS
          variable that was visible while parsing makefiles.  Now, all options
          are available in MAKEFLAGS.
    
    This causes locale builds to fail when long options are used:
    
        $ make --shuffle
        ...
        make  -C localedata install-locales
        make: invalid shuffle mode: '1662724426r'
    
    The change fixes it by passing eash option via whitespace and dashes.
    That way option is appended to both single-word form and whitespace
    separated form.
    
    While at it fixed --silent mode detection in $(MAKEFLAGS) by filtering
    out --long-options. Otherwise options like --shuffle flag enable silent
    mode unintentionally. $(silent-make) variable consolidates the checks.
    
    Resolves: BZ# 29564
    
    CC: Paul Smith <psmith@gnu.org>
    CC: Siddhesh Poyarekar <siddhesh@gotplt.org>
    Signed-off-by: Sergei Trofimovich <slyich@gmail.com>
    Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
    (cherry picked from commit 2d7ed98add14f75041499ac189696c9bd3d757fe)

Diff:
---
 Makeconfig     | 18 +++++++++++++++++-
 Makerules      |  4 ++--
 elf/rtld-Rules |  2 +-
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/Makeconfig b/Makeconfig
index 2fa0884b4e..92affd81b0 100644
--- a/Makeconfig
+++ b/Makeconfig
@@ -42,6 +42,22 @@ else
 $(error objdir must be defined by the build-directory Makefile)
 endif
 
+# Did we request 'make -s' run? "yes" or "no".
+# Starting from make-4.4 MAKEFLAGS now contains long
+# options like '--shuffle'. To detect presence of 's'
+# we pick first word with short options. Long options
+# are guaranteed to come after whitespace. We use '-'
+# prefix to always have a word before long options
+# even if no short options were passed.
+# Typical MAKEFLAGS values to watch for:
+#   "rs --shuffle=42" (silent)
+#   " --shuffle" (not silent)
+ifeq ($(findstring s, $(firstword -$(MAKEFLAGS))),)
+silent-make := no
+else
+silent-make := yes
+endif
+
 # Root of the sysdeps tree.
 sysdep_dir := $(..)sysdeps
 export sysdep_dir := $(sysdep_dir)
@@ -912,7 +928,7 @@ endif
 # umpteen zillion filenames along with it (we use `...' instead)
 # but we don't want this echoing done when the user has said
 # he doesn't want to see commands echoed by using -s.
-ifneq	"$(findstring s,$(MAKEFLAGS))" ""	# if -s
+ifeq ($(silent-make),yes)			# if -s
 +cmdecho	:= echo >/dev/null
 else						# not -s
 +cmdecho	:= echo
diff --git a/Makerules b/Makerules
index 7fbe85719a..e5916f29fa 100644
--- a/Makerules
+++ b/Makerules
@@ -810,7 +810,7 @@ endif
 # Maximize efficiency by minimizing the number of rules.
 .SUFFIXES:	# Clear the suffix list.  We don't use suffix rules.
 # Don't define any builtin rules.
-MAKEFLAGS := $(MAKEFLAGS)r
+MAKEFLAGS := $(MAKEFLAGS) -r
 
 # Generic rule for making directories.
 %/:
@@ -827,7 +827,7 @@ MAKEFLAGS := $(MAKEFLAGS)r
 .PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
 \f
 # Use the verbose option of ar and tar when not running silently.
-ifeq	"$(findstring s,$(MAKEFLAGS))" ""	# if not -s
+ifeq ($(silent-make),no)			# if not -s
 verbose := v
 else	   					# -s
 verbose	:=
diff --git a/elf/rtld-Rules b/elf/rtld-Rules
index 10de81918c..a452536d39 100644
--- a/elf/rtld-Rules
+++ b/elf/rtld-Rules
@@ -52,7 +52,7 @@ $(objpfx)rtld-libc.a: $(foreach dir,$(rtld-subdirs),\
 	mv -f $@T $@
 
 # Use the verbose option of ar and tar when not running silently.
-ifeq	"$(findstring s,$(MAKEFLAGS))" ""	# if not -s
+ifeq ($(silent-make),no)			# if not -s
 verbose := v
 else						# -s
 verbose	:=

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-11-09 19:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-09 19:28 [glibc/release/2.34/master] Makerules: fix MAKEFLAGS assignment for upcoming make-4.4 [BZ# 29564] DJ Delorie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).