klibc-bot for Greg Thelen
2019-Jan-18 16:42 UTC
[klibc] [klibc:master] add more PHONY targets to $(PHONY)
Commit-ID: edee9092e32482a06cc441cf47ae78b5e7c4a621 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=edee9092e32482a06cc441cf47ae78b5e7c4a621 Author: Greg Thelen <gthelen at google.com> AuthorDate: Tue, 26 Jun 2018 22:38:32 -0700 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Wed, 2 Jan 2019 03:08:04 +0000 [klibc] add more PHONY targets to $(PHONY) make-3.81 excludes PHONY dependencies from $?, make 3.82+ includes them. This leads to always rebuilding klibc targets that depend on .PHONY dependencies. From the make 3.82 release notes https://lists.gnu.org/archive/html/info-gnu/2010-07/msg00023.html: * WARNING: Backward-incompatibility! The '$?' variable now contains all prerequisites that caused the target to be considered out of date, even if they do not exist (previously only existing targets were provided in $?). Linux fixed this with commit 4f1933620f57 ("kbuild: change kbuild to not rely on incorrect GNU make behavior"). Similar to Linux, klibc if_changed already excludes $(PHONY) from $? when determining if a target is up-to-date. Klibc also has a $(PHONY) list of phony targets. But klibc does not add many .PHONY targets to $(PHONY). Changes in this patch: - add previously defined .PHONY targets to PHONY, so existing if_changed filtering applies to them as well - declare $(PHONY) targets as .PHONY Signed-off-by: Greg Thelen <gthelen at google.com> Link: https://www.zytor.com/pipermail/klibc/2018-June/003995.html Signed-off-by: Ben Hutchings <ben at decadent.org.uk> --- scripts/Kbuild.install | 10 +++++++--- scripts/Kbuild.klibc | 8 ++++++-- scripts/Makefile.clean | 8 ++++++-- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/scripts/Kbuild.install b/scripts/Kbuild.install index 8af5697..bafd423 100644 --- a/scripts/Kbuild.install +++ b/scripts/Kbuild.install @@ -14,7 +14,7 @@ SHLIBDIR = /lib # First rule -.PHONY: __install install-rule +PHONY := __install install-rule __install: # Install commands @@ -64,7 +64,7 @@ else endif # Descending -.PHONY: $(subdir-) +PHONY += $(subdir-) $(subdir-): $(Q)$(MAKE) KLIBC_INSTALL=1 \ -f $(srctree)/scripts/Kbuild.install obj=$@ @@ -84,7 +84,7 @@ else # 1) Create directories, install headers and man pages # 2) Tell that we now install binaries # 3) Install binaries by descending -.PHONY: header footer descend +PHONY += header footer descend header: $(Q)echo " INSTALL headers + man pages to $(INSTALLROOT)$(INSTALLDIR)" $(Q)mkdir -p $(INSTALLROOT)$(bindir) @@ -111,3 +111,7 @@ descend: footer __install: descend @: endif + +# Declare the contents of the PHONY variable as phony. We keep the variable for +# if_changed. +.PHONY: $(PHONY) diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc index f500d53..f147a37 100644 --- a/scripts/Kbuild.klibc +++ b/scripts/Kbuild.klibc @@ -54,7 +54,7 @@ src := $(obj) # Preset target and make sure it is a ':=' variable targets : -.phony: __build +PHONY := __build __build: # Read .config if it exist, otherwise ignore @@ -374,7 +374,7 @@ endif # Descending # --------------------------------------------------------------------------- -.PHONY: $(subdir-y) $(kprog-dirs) $(klib-dirs) +PHONY += $(subdir-y) $(kprog-dirs) $(klib-dirs) $(sort $(subdir-y) $(kprog-dirs) $(klib-dirs)): $(lib-target) $(Q)$(MAKE) $(klibc)=$@ @@ -419,3 +419,7 @@ endif # Usage: # $(Q)$(MAKE) $(klibc)=dir klibc := -rR -f $(srctree)/scripts/Kbuild.klibc obj + +# Declare the contents of the PHONY variable as phony. We keep the variable for +# if_changed. +.PHONY: $(PHONY) diff --git a/scripts/Makefile.clean b/scripts/Makefile.clean index a588749..abc4e3f 100644 --- a/scripts/Makefile.clean +++ b/scripts/Makefile.clean @@ -4,7 +4,7 @@ src := $(obj) -.PHONY: __clean +.PHONY := __clean __clean: # Shorthand for $(Q)$(MAKE) scripts/Makefile.clean obj=dir @@ -83,10 +83,14 @@ endif # Descending # --------------------------------------------------------------------------- -.PHONY: $(subdirs) +PHONY += $(subdirs) $(subdirs): $(Q)$(MAKE) $(clean)=$@ # If quiet is set, only print short version of command cmd = @$(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))' &&) $(cmd_$(1)) + +# Declare the contents of the PHONY variable as phony. We keep the variable for +# if_changed. +.PHONY: $(PHONY)