summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-09-19 12:20:26 -0600
committerTom Rini <trini@konsulko.com>2016-09-22 11:34:59 -0400
commita6c1309782e7a4a6b18e9514ca927487b5727232 (patch)
treefb23e2480bf04b9ee4d01145a5219a2c25469ac7 /Makefile
parentfcd29a4d0e2ae3adbb129cf8e39eb025dc55e549 (diff)
Makefile: rm u-boot.cfg dependencies are missing
Prior to the previous patch, a freshly created .u-boot.cfg.cmd may not correctly represent all dependencies for u-boot.cfg. The previous change only solved this issue for fresh builds; when performing an incremental build, the deficient .u-boot.cfg.cmd is already present, so u-boot.cfg is not rebuilt, and hence .u-boot.cfg.cmd is not rebuilt with the correct content. Solve this by explicitly detecting when the dependency file .u-boot.cfg.d has not been integrated into .u-boot.cfg.cmd, and force u-boot.cfg to be rebuilt in this case by deleting it first. This is possible since if_changed_dep will always delete .u-boot.cfg.d when it executes successfully, so its presence means either that the previous build was made by a source tree that contained a Makefile that didn't include the previous patch, or that the build failed part way through executing if_changed_dep for u-boot.cfg. Forcing a rebuild of u-boot.cfg is required in the former case, and will cause no additional work in the latter case, since the file would be rebuilt anyway for the same reason it was being rebuilt by the previous build. Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile11
1 files changed, 11 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 949b264b8fe..c30f90af8cf 100644
--- a/Makefile
+++ b/Makefile
@@ -936,6 +936,17 @@ u-boot.sha1: u-boot.bin
u-boot.dis: u-boot
$(OBJDUMP) -d $< > $@
+# If .u-boot.cfg.d is still present, then either:
+# a) The previous build used a Makefile that used if_changed rather than
+# if_changed_dep when building u-boot.cfg, and hence any later builds will
+# be unaware of the dependencies for u-boot.cfg. In this case, we must
+# delete u-boot.cfg to force it and .u-boot.cfg.cmd to be rebuilt the
+# correct way.
+# b) The previous build failed or was interrupted while building u-boot.cfg,
+# so deleting u-boot.cfg isn't going to cause any additional work.
+ifneq ($(wildcard $(obj)/.u-boot.cfg.d),)
+ unused := $(shell rm -f $(obj)/u-boot.cfg)
+endif
u-boot.cfg: include/config.h FORCE
$(call if_changed_dep,cpp_cfg)