Modules are defined across the entire tree through the Android.mk files
The build system abstracts many details to make the creation of a module’s Makefile as trivial as possible
Of course, building a module that will be an Android application and building a static library will not require the same instructions, but these builds don’t differ that much either.LOCAL_PATH = $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES = hello_world.c
LOCAL_MODULE = HelloWorld
LOCAL_MODULE_TAGS = optional
include $(BUILD_EXECUTABLE)
Every module variable is prefixed by LOCAL_*.
LOCAL_PATH tells the build system where the current module is.
include $(CLEAR_VARS) cleans the previously declared
LOCAL_* variables. This way, we make sure we won’t have
anything weird coming from other modules. The list of the
variables cleared is in build/core/clear_vars.mk.
LOCAL_SRC_FILES contains a list of all source files to be compiled.
LOCAL_MODULE sets the module name.
LOCAL_MODULE_TAGS defines the set of modules this module should belong to.
include $(BUILD_EXECUTABLE) tells the build system to build this module as a binary.