在顶层的Makefile第2个分支中,目标world的依赖
prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
world: prepare $(target/stamp-compile) $(package/stamp-cleanup) $(package/stamp-compile) $(package/stamp-install) $(package/stamp-rootfs-prepare) $(target/stamp-install) FORCE
$(_SINGLE)$(SUBMAKE) -r package/index
这些*stamp-*变量的定义由include/subdir.mk中定义的宏define stampfile而展开
在Buildroot下使用grep查找call stampfile的地方
./tools/Makefile:136:$(eval $(call stampfile,$(curdir),tools,install,CONFIG_CCACHE CONFIG_powerpc CONFIG_GCC_VERSION_4_5 CONFIG_GCC_USE_GRAPHITE CONFIG_TARGET_orion_generic))
./target/Makefile:15:$(eval $(call stampfile,target,prereq,.config))
./target/Makefile:16:$(eval $(call stampfile,compile,$(TMP_DIR)/.build))
./target/Makefile:17:$(eval $(call stampfile,$(TMP_DIR)/.build))
./package/Makefile:99:$(eval $(call stampfile,package,.config))
./package/Makefile:100:$(eval $(call stampfile,cleanup,$(TMP_DIR)/.build))
./package/Makefile:101:$(eval $(call stampfile,$(TMP_DIR)/.build))
./package/Makefile:102:$(eval $(call stampfile,$(TMP_DIR)/.build))
./package/Makefile:103:$(eval $(call stampfile,rootfs-prepare,$(TMP_DIR)/.build))
./toolchain/Makefile:84:$(eval $(call stampfile,toolchain,$(TOOLCHAIN_DIR)/stamp/.gcc-initial_installed,$(TOOLCHAIN_DIR)))
例如tools/Makefile中的call stampfile展开的变量
tools/stamp-install := /home/test/openwrt/a2/attitude_adjustment_12.09/staging_dir/target-mips_r2_uClibc-0.9.33.2/stamp/.tools_install_nnnnn
当这个文件的时间戳比tools目录下的某个文件旧时
则会编译tools/install目标
完成编译后,则会在/home/test/openwrt/a2/attitude_adjustment_12.09/staging_dir/target-mips_r2_uClibc-0.9.33.2/stamp/目录下创建许多隐藏的时间戳文件
作为宏stampfile判断编译的条件
原文链接:https://www.f2er.com/javaschema/285802.html