在运行Makefile之前,首先进行配置信息设定,执行命令"make smdk2410_config",在uboot根目录Makefile的1879行,smdk2410_config是一个目标,执行此命令后,运行此目标下面的命令
smdk2410_config : unconfig
@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0
可以看到目标的依赖文件是"unconfig",此依赖也是一个目标,这个目标是个虚拟的,每次运行都会执行,执行的过程是清除上次运行产生的一些中间文件,具体如下:
unconfig:
@rm -f $(obj)include/config.h $(obj)include/config.mk \
$(obj)board/*/config.tmp $(obj)board/*/*/config.tmp
可以看到是静默执行rm -f 命令,清除一些配置信息和文件如果"obj"指定了目录则按照指定的目录进行执行,如果没有指定,则默认是空目录,所有生成的中间文件都在源文件的目录下
执行完了此清除命令后,则执行配置命令
MKCONFIG := $(SRCTREE)/mkconfig
export MKCONFIG
在Makefile 92,93行,定义了MKCONFIG变量,为根目录下mkconfig脚本
则执行命令如下:
mkconfig smdk2410 arm arm920t smdk2410 NULL s3c2410
其中"mkconfig"是脚本名字
"smdk2410 arm arm920t smdk2410 NULL s3c2410"分别是命令参数从"$1"到"$6","$0"参数是"mkconfig"本身,即命令本身