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>
This commit is contained in:
parent
fcd29a4d0e
commit
a6c1309782
11
Makefile
11
Makefile
|
@ -936,6 +936,17 @@ u-boot.sha1: u-boot.bin
|
||||||
u-boot.dis: u-boot
|
u-boot.dis: u-boot
|
||||||
$(OBJDUMP) -d $< > $@
|
$(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
|
u-boot.cfg: include/config.h FORCE
|
||||||
$(call if_changed_dep,cpp_cfg)
|
$(call if_changed_dep,cpp_cfg)
|
||||||
|
|
||||||
|
|
|
@ -216,6 +216,17 @@ quiet_cmd_cpp_cfg = CFG $@
|
||||||
cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
||||||
-DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
|
-DDO_DEPS_ONLY -D__ASSEMBLY__ -x assembler-with-cpp -P -dM -E -o $@ $<
|
||||||
|
|
||||||
|
# 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)/.$(SPL_BIN).d),)
|
||||||
|
unused := $(shell rm -f $(obj)/$(SPL_BIN).cfg)
|
||||||
|
endif
|
||||||
$(obj)/$(SPL_BIN).cfg: include/config.h FORCE
|
$(obj)/$(SPL_BIN).cfg: include/config.h FORCE
|
||||||
$(call if_changed_dep,cpp_cfg)
|
$(call if_changed_dep,cpp_cfg)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue