2011-03-15 06:34:32

by Mike Waychison

[permalink] [raw]
Subject: [PATCH] KBuild: silence "'scripts/unifdef' is up to date."

Patch applies to 2.6.38-rc8.

While changing our build system over to use the headers_install target
as part of our klibc build, the following message started showing up in
our logs:

make[2]: `scripts/unifdef' is up to date.

It turns out that the build blindly invokes a recursive make on this
target, which causes make to emit this message when the target is
already up to date. This isn't seen for most targets as the rest of the
build relies primarily on the default target and on PHONY targets when
invoking make recursively.

Silence the above message when building unifdef as part of
headers_install by hiding it behind a new PHONY target called
"build_unifdef" that has an empty recipe.

Signed-off-by: Mike Waychison <[email protected]>
---
Makefile | 2 +-
scripts/Makefile | 5 +++++
2 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 504f788..5d7e0b2 100644
--- a/Makefile
+++ b/Makefile
@@ -1018,7 +1018,7 @@ hdr-dst = $(if $(KBUILD_HEADERS), dst=include/asm-$(hdr-arch), dst=include/asm)

PHONY += __headers
__headers: include/linux/version.h scripts_basic FORCE
- $(Q)$(MAKE) $(build)=scripts scripts/unifdef
+ $(Q)$(MAKE) $(build)=scripts build_unifdef

PHONY += headers_install_all
headers_install_all:
diff --git a/scripts/Makefile b/scripts/Makefile
index 2e08810..fcea261 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -18,6 +18,11 @@ always := $(hostprogs-y) $(hostprogs-m)
# The following hostprogs-y programs are only build on demand
hostprogs-y += unifdef

+# This target is used internally to avoid "is up to date" messages
+PHONY += build_unifdef
+build_unifdef: scripts/unifdef FORCE
+ @:
+
subdir-$(CONFIG_MODVERSIONS) += genksyms
subdir-y += mod
subdir-$(CONFIG_SECURITY_SELINUX) += selinux


2011-03-17 11:32:59

by Michal Marek

[permalink] [raw]
Subject: Re: [PATCH] KBuild: silence "'scripts/unifdef' is up to date."

On Tue, Mar 15, 2011 at 01:40:37PM +0000, WANG Cong wrote:
> On Mon, 14 Mar 2011 23:34:25 -0700, Mike Waychison wrote:
>
> > Patch applies to 2.6.38-rc8.
> >
> > While changing our build system over to use the headers_install target
> > as part of our klibc build, the following message started showing up in
> > our logs:
> >
> > make[2]: `scripts/unifdef' is up to date.
> >
> > It turns out that the build blindly invokes a recursive make on this
> > target, which causes make to emit this message when the target is
> > already up to date. This isn't seen for most targets as the rest of the
> > build relies primarily on the default target and on PHONY targets when
> > invoking make recursively.
> >
> > Silence the above message when building unifdef as part of
> > headers_install by hiding it behind a new PHONY target called
> > "build_unifdef" that has an empty recipe.
> >
> > Signed-off-by: Mike Waychison <[email protected]> ---
>
> Acked-by: WANG Cong <[email protected]>

Applied to kbuild-2.6.git#kbuild, thanks.

Michal