Build system: Trigger dependency checking only for build targets
authorSandrine Bailleux <sandrine.bailleux@arm.com>
Fri, 21 Mar 2014 14:17:51 +0000 (14:17 +0000)
committerDan Handley <dan.handley@arm.com>
Wed, 26 Mar 2014 17:36:36 +0000 (17:36 +0000)
The Makefile used to specify a blacklist of rules for which
dependency checking must not be triggered.  This list included
cleaning rules only, whereas all other non-build targets (e.g.
help, checkpatch, etc.) should also be included.

This approach seems a bit fragile because it is easy to forget
some non-building rules in the blacklist, as the experience
showed us.  It is more robust to specify a whitelist of rules
for which dependency checking is required.

Fixes ARM-software/tf-issues#112

Change-Id: I030c405abb35972a726a5200396430316d18f963

Makefile

index 3aee9b913e4460db4c0a739d09e14bf768650385..9d02141aabf4d7f20b6e22471573a390eb1b20ee 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -231,9 +231,13 @@ define match_goals
 $(strip $(foreach goal,$(1),$(filter $(goal),$(MAKECMDGOALS))))
 endef
 
+# List of rules that involve building things
+BUILD_TARGETS := all bl1 bl2 bl31 bl32 fip
 
-CLEANING := $(call match_goals,clean realclean distclean)
-
+# Does the list of goals specified on the command line include a build target?
+ifneq ($(call match_goals,${BUILD_TARGETS}),)
+IS_ANYTHING_TO_BUILD := 1
+endif
 
 define MAKE_C
 
@@ -250,7 +254,7 @@ $(PREREQUISITES) : $(2)
        @mkdir -p $(1)
        $$(Q)$$(CC) $$(CFLAGS) -M -MT $(OBJ) -MF $$@ $$<
 
-ifeq "$(CLEANING)" ""
+ifdef IS_ANYTHING_TO_BUILD
 -include $(PREREQUISITES)
 endif
 
@@ -271,7 +275,7 @@ $(PREREQUISITES) : $(2)
        @mkdir -p $(1)
        $$(Q)$$(AS) $$(ASFLAGS) -M -MT $(OBJ) -MF $$@ $$<
 
-ifeq "$(CLEANING)" ""
+ifdef IS_ANYTHING_TO_BUILD
 -include $(PREREQUISITES)
 endif
 
@@ -291,7 +295,7 @@ $(PREREQUISITES) : $(2)
        @mkdir -p $$(dir $$@)
        $$(Q)$$(AS) $$(ASFLAGS) -M -MT $(1) -MF $$@ $$<
 
-ifeq "$(CLEANING)" ""
+ifdef IS_ANYTHING_TO_BUILD
 -include $(PREREQUISITES)
 endif