cleanbuild.mk

1. 定义了add-clean-step函数。

有一个入口参数(1)定义一个变量保存,变量的名字是INTERNAL_STEP.(_acs_id)保存在INTERNAL_STEPS中。

$(_acs_id)的值分成3个部分构造:

第一部分是有cleanspec.mk的路径转化而来,用'_'替代'/','-'替代'.',后缀_acs。

第二部分是$(INTERNAL_CLEAN_BUILD_VERSION),默认是4。

第三部分是有'@'组成,cleanspec.mk中的第几个add- clean-step就用几个@。

例如,packages/apps/Camera/cleanspec.mk中定义了两个删除动作

$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/APPS/Camera*)
$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/Camera*)

那么,对应的生成变量有:

INTERNAL_STEP.packages_apps_Camera_CleanSpec-mk_acs4@:= rm -rf $(PRODUCT_OUT)/obj/APPS/Camera*
INTERNAL_STEP.packages_apps_Camera_CleanSpec-mk_acs4@@ := rm -rf$(OUT_DIR)/target/common/obj/APPS/Camera*
INTERNAL_CLEAN_STEPS+=packages_apps_Camera_CleanSpec-mk_acs4@:
INTERNAL_CLEAN_STEPS+packages_apps_Camera_CleanSpec-mk_acs4@@:
2.包含:$(BUILD_SYSTEM)/cleanspec.mk。并且枚举所有的CleanSpec.mk文件,并把它们包含进来

设置INTERNAL_CLEAN_BUILD_VERSION :=3,并通过add-clean-step函数,加进一些默认的删除操作,在通过build/tools/findleaves.py枚举所有的CleanSpec.mk文件,并把它们包含进来。在这些文件里根据具体的模块加删除操作。

3.包含:$(PRODUCT_OUT)/clean_steps.mk。

这个文件是自动生成的,设置CURRENT_CLEAN_BUILD_VERSION :=INTERNAL_CLEAN_BUILD_VERSION

4.比较CURRENT_CLEAN_BUILD_VERSION和INTERNAL_CLEAN_BUILD_VERSION

若相等执行INTERNAL_CLEAN_STEPS里的命令,否则表示我们修改过cleanspec.mk, 删除整个$(OUT_DIR)。

5.定义两个make目标installclean和dataclean。

分别用来删除安装文件和数据文件。

你可能感兴趣的:(cleanbuild.mk)