顶层Makefile的第1个分支主要解决package和target的信息收集
.config配置文件的生成
在顶层的Makefile完成第1个分支后
执行include/toplevel.mk中目标%::的命令@+$(SUBMAKE) -r $@
重新回到顶层Makefile的第2个分支中的world目标
第2个分支主要完成源码下载和编译工作
从第2个分支中包含的信息
include target/Makefile
include package/Makefile
include tools/Makefile
include toolchain/Makefile
知道需要解决4个目录target、package、tools、toolchain的编译工作
查看tools/Makefile
最下面2行
$(eval $(call stampfile,$(curdir),tools,install,,CONFIG_CCACHE CONFIG_powerpc CONFIG_GCC_VERSION_4_5 CONFIG_GCC_USE_GRAPHITE CONFIG_TARGET_orion_generic))
$(eval $(call subdir,$(curdir)))
这些编译的规则通过include/subdir.mk中定义的2个宏
define subdir
define stampfile
展开得到
stampfile由perl脚本scripts/timestamp.pl通过检查目录下最新的那个文件时间戳与目标时间戳比较
而决定是否需要执行subdir下的目标规则
由此完成所有的编译工作