|
|
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 --git a/Makeconfig b/Makeconfig |
|
|
index 99898a632a64be91..4e04dafb76a1e1a1 100644 |
|
|
--- a/Makeconfig |
|
|
+++ b/Makeconfig |
|
|
@@ -43,6 +43,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) |
|
|
@@ -918,7 +934,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 7fbe85719aacc230..e5916f29fa0d4593 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)) |
|
|
|
|
|
# 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 10de81918c07670f..a452536d39b5c198 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 :=
|
|
|
|