(注:初次学习uboot,本文只是根据网上资料及自己的实践大致梳理了make xxx_defconfig的过程,没有逐句解析make xxx_defconfig的过程)
首先,先上结论:Make xxx_defconfig主要目的有两个:生成工具scripts/basic/fixdep,生成.config文件
一、make xxx_defconfig会匹配到哪个目标
在makefile中%config与输入目标能匹配,所以会编译该目标:
%config: scripts_basic outputmakefile FORCE
$(Q)$(MAKE) &(build)=scripts/kconfig $@
二、目标的依赖分析
1、FORCE
FORCE在top makefile的1614行中定义了
可以看出FORCE是没有规则与依赖的,所以每次都会重新生成FORCE。意味着当FORCE作为其他目标的依赖时,由于FORCE总是被更新过,因此依赖所在的规则总是会执行。
2、outputmakefile
outputmakefile在top makefile的410行中定义了
①、变量KBUILD_SRC
makefile中有这么一段话:
# KBUILD_SRC is set on invocation of make in OBJ directory
# KBUILD_SRC is not intended to be used by the regular user (for now)
说明KBUILD_SRC是在make的时候传入的参数,而通常情况下,我们不会传入KBUILD_SRC的参数,所以KBUILD_SRC为空
因为KBUILD_SRC为空,所以上图所示411~415都不执行,因此outputmakefile也是没有规则与依赖的。
3、scripts_basic在top makefile中的第399行定义了
(1)规则中使用到的变量解析
①、变量Q
变量Q的值取决于make时是否有输入V=1,如果V=1则Q为空;否则Q=@;不管