kbuild: generate u-boot.cfg as a byproduct of include/autoconf.mk
Our build system still parses ad-hoc CONFIG options in header files and generates include/autoconf.mk so that Makefiles can reference them. This gimmick was introduced in the pre-Kconfig days and will be kept until Kconfig migration is completed. The include/autoconf.mk is generated like follows: [1] Preprocess include/common.h with -DDO_DEPS_ONLY and retrieve macros into include/autoconf.mk.tmp [2] Reformat include/autoconf.mk.dep into include/autoconf.mk with tools/scripts/define2mk.sed script [3] Remove include/autoconf.mk.tmp Here, include/autoconf.mk.tmp is similar to u-boot.cfg, which is also generated by preprocessing include/config.h with -DDO_DEPS_ONLY. In other words, there is much overlap among include/autoconf.mk and u-boot.cfg build rules. So, the idea is to split the build rule of include/autoconf.mk into two stages. The first preprocesses headers into u-boot.cfg. The second parses the u-boot.cfg into include/autoconf.mk. The build rules of u-boot.cfg in Makefile and spl/Makefile will be gone. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
1406992f4f
commit
e19b0fb485
17
Makefile
17
Makefile
|
@ -741,8 +741,7 @@ DO_STATIC_RELA =
|
|||
endif
|
||||
|
||||
# Always append ALL so that arch config.mk's can add custom ones
|
||||
ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map u-boot.cfg \
|
||||
binary_size_check
|
||||
ALL-y += u-boot.srec u-boot.bin u-boot.sym System.map binary_size_check
|
||||
|
||||
ALL-$(CONFIG_ONENAND_U_BOOT) += u-boot-onenand.bin
|
||||
ifeq ($(CONFIG_SPL_FSL_PBL),y)
|
||||
|
@ -942,20 +941,6 @@ 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)
|
||||
|
||||
ifdef CONFIG_TPL
|
||||
SPL_PAYLOAD := tpl/u-boot-with-tpl.bin
|
||||
else
|
||||
|
|
|
@ -58,29 +58,44 @@ include/autoconf.mk.dep: include/config.h FORCE
|
|||
# same CONFIG macros
|
||||
quiet_cmd_autoconf = GEN $@
|
||||
cmd_autoconf = \
|
||||
$(CPP) $(c_flags) $2 -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \
|
||||
sed -n -f $(srctree)/tools/scripts/define2mk.sed $@.tmp | \
|
||||
sed -n -f $(srctree)/tools/scripts/define2mk.sed $< | \
|
||||
while read line; do \
|
||||
if [ -n "${KCONFIG_IGNORE_DUPLICATES}" ] || \
|
||||
! grep -q "$${line%=*}=" include/config/auto.conf; then \
|
||||
echo "$$line"; \
|
||||
fi \
|
||||
done > $@; \
|
||||
rm $@.tmp; \
|
||||
} || { \
|
||||
rm $@.tmp; false; \
|
||||
done > $@
|
||||
|
||||
quiet_cmd_u_boot_cfg = CFG $@
|
||||
cmd_u_boot_cfg = \
|
||||
$(CPP) $(c_flags) $2 -DDO_DEPS_ONLY -dM $(srctree)/include/common.h > $@.tmp && { \
|
||||
grep 'define CONFIG_' $@.tmp > $@; \
|
||||
rm $@.tmp; \
|
||||
} || { \
|
||||
rm $@.tmp; false; \
|
||||
}
|
||||
|
||||
include/autoconf.mk: include/config.h FORCE
|
||||
u-boot.cfg: include/config.h FORCE
|
||||
$(call cmd,u_boot_cfg)
|
||||
|
||||
spl/u-boot.cfg: include/config.h FORCE
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call cmd,u_boot_cfg,-DCONFIG_SPL_BUILD)
|
||||
|
||||
tpl/u-boot.cfg: include/config.h FORCE
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call cmd,u_boot_cfg,-DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD)
|
||||
|
||||
include/autoconf.mk: u-boot.cfg
|
||||
$(call cmd,autoconf)
|
||||
|
||||
spl/include/autoconf.mk: include/config.h FORCE
|
||||
spl/include/autoconf.mk: spl/u-boot.cfg
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call cmd,autoconf,-DCONFIG_SPL_BUILD)
|
||||
$(call cmd,autoconf)
|
||||
|
||||
tpl/include/autoconf.mk: include/config.h FORCE
|
||||
tpl/include/autoconf.mk: tpl/u-boot.cfg
|
||||
$(Q)mkdir -p $(dir $@)
|
||||
$(call cmd,autoconf,-DCONFIG_SPL_BUILD -DCONFIG_TPL_BUILD)
|
||||
$(call cmd,autoconf)
|
||||
|
||||
# include/config.h
|
||||
# Prior to Kconfig, it was generated by mkconfig. Now it is created here.
|
||||
|
|
|
@ -156,7 +156,7 @@ spl/boot.bin: $(obj)/u-boot-spl.bin FORCE
|
|||
$(call if_changed,mkimage)
|
||||
endif
|
||||
|
||||
ALL-y += $(obj)/$(SPL_BIN).bin $(obj)/$(SPL_BIN).cfg
|
||||
ALL-y += $(obj)/$(SPL_BIN).bin
|
||||
|
||||
ifdef CONFIG_SAMSUNG
|
||||
ALL-y += $(obj)/$(BOARD)-spl.bin
|
||||
|
@ -216,24 +216,6 @@ quiet_cmd_fdtgrep = FDTGREP $@
|
|||
$(obj)/$(SPL_BIN).dtb: dts/dt.dtb $(objtree)/tools/fdtgrep FORCE
|
||||
$(call if_changed,fdtgrep)
|
||||
|
||||
quiet_cmd_cpp_cfg = CFG $@
|
||||
cmd_cpp_cfg = $(CPP) -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) -ansi \
|
||||
-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
|
||||
$(call if_changed_dep,cpp_cfg)
|
||||
|
||||
pythonpath = PYTHONPATH=tools
|
||||
|
||||
quiet_cmd_dtocc = DTOC C $@
|
||||
|
|
Loading…
Reference in New Issue