Messages in this thread Patch in this message | | | Date | Wed, 5 Jul 2006 02:01:26 -0500 (CDT) | From | Milton Miller <> | Subject | [KBUILD] optionally print cause of rebuild (#2) |
| |
Al wanted to see why Kbuild wanted to build files, to help debug Makefiles or dependency chains.
Here is my second draft, with with whitespace handled by strip. It also now considers cmd_$@ before the targets variable because its both what the rules do and because the toplevel doesn't use targets. It still always prints the non-existing $^ stuff that only if_changed_dep uses.
Set KBUILLD_PRINTDEPS=1 and you will get lines like DEPS: building bar/foo.o because command changed DEPS: building bar/foo.o because command was missing DEPS: building bar/foo.o because it was not a target DEPS: building bar/foo.o because it was missing DEPS: building bar/foo.o because of bar/foo.c include/linux/baz.h
Signed-off-by: Milton Miller <miltonm@bga.com>
--- linux-2.6.17/scripts/Kbuild.include.orig 2006-07-04 16:02:55.000000000 -0400 +++ linux-2.6.17/scripts/Kbuild.include 2006-07-05 01:12:36.000000000 -0400 @@ -112,6 +112,19 @@ ifneq ($(KBUILD_NOCMDDEP),1) arg-check = $(strip $(filter-out $(1), $(2)) $(filter-out $(2), $(1)) ) endif +ifeq ($(KBUILD_PRINTDEPS),1) +deps-cmd = $(if 1,echo 'DEPS: building $@ because' \ + '$(call escsq,$(strip $(if $(wildcard $@), \ + $(if $(call arg-check, $(cmd_$(1)), $(cmd_$@)), \ + $(if $(cmd_$@),command changed \ + ,$(if $(filter $@, $(targets)), \ + cmd was missing \ + ,it was not a target)) \ + ,of $(sort $(filter-out $(PHONY),$?) \ + $(filter-out FORCE $(wildcard $^),$^))) \ + ,it was missing)))';) +endif + # echo command. Short version is $(quiet) equals quiet, otherwise full command echo-cmd = $(if $($(quiet)cmd_$(1)), \ echo ' $(call escsq,$($(quiet)cmd_$(1)))';) @@ -125,7 +138,7 @@ make-cmd = $(subst \#,\\\#,$(subst $$,$$ if_changed = $(if $(strip $(filter-out $(PHONY),$?) \ $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ @set -e; \ - $(echo-cmd) $(cmd_$(1)); \ + $(deps-cmd) $(echo-cmd) $(cmd_$(1)); \ echo 'cmd_$@ := $(make-cmd)' > $(@D)/.$(@F).cmd) # execute the command and also postprocess generated .d dependencies @@ -134,7 +147,7 @@ if_changed_dep = $(if $(strip $(filter-o $(filter-out FORCE $(wildcard $^),$^) \ $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ), \ @set -e; \ - $(echo-cmd) $(cmd_$(1)); \ + $(deps-cmd) $(echo-cmd) $(cmd_$(1)); \ scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(@D)/.$(@F).tmp; \ rm -f $(depfile); \ mv -f $(@D)/.$(@F).tmp $(@D)/.$(@F).cmd) @@ -145,4 +158,4 @@ if_changed_dep = $(if $(strip $(filter-o if_changed_rule = $(if $(strip $(filter-out $(PHONY),$?) \ $(call arg-check, $(cmd_$(1)), $(cmd_$@)) ),\ @set -e; \ - $(rule_$(1))) + $(deps-cmd) $(rule_$(1))) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |