[Android] build/core/main.mk

AndroidのMakeの本体は、build/core/main.mkに記述されている。これ自身は、makeというよりも、スクリプト集といった感じで、読むのは結構苦労する。

ポイントは、サブディレクトリーにある、Android.mkをfindしてきincludeしているという点。

subdir_makefiles += \
	$(shell build/tools/findleaves.sh \
	    --prune="./vendor" --prune="./out" $(subdirs) Android.mk)

ifneq ($(ONE_SHOT_MAKEFILE),)
...
else
include $(subdir_makefiles)
endif

これによって、サブディレクトリーにAndroid.mkを配置して、トップのディレクトリーで、配置したAndroid.mkの中のLOCAL_MODULEの名前を指定すると、makeができるようになる。

ONE_SHOT_MAKEFILEは、build/envsetup.shから呼ばれた時に、特定のAndroid.mkだけを呼び出す仕組み。