add-application.mk
add-platform.mk
add-toolchain.mk
build-all.mk : Entry for build-xxx.mk (xxx: binary, executable, local, module, shared-library, static-library)
build-binary.mk : Script for building binary.
build-executable.mk : Script for building executable
build-local.mk : Entry of build system. Called by ndk-build shell script.
build-module.mk : Script for building module. Used by build-xxxx-library.mk & prebuild-xxxx-library.mk
build-shared-library.mk : Variables for building shared libraries.
build-static-library.mk : Variables for building static libraries.
check-cygwin-make.mk : For Cywin environment
clear-vars.mk : Set a list of variables (LOCAL_XXXX) to empty, clear its.
default-application.mk : Predefines APP_BUILD_SCRIPT && APP_PROJECT_PATH.
default-build-commands.mk : Predefines a list of commands (cmd-build-shared-library, TARGET_CC, TARGET_AR, TARGET_LD ...).
definitions.mk : Defines a list of functions.
import-locals.mk : Predefines LOCAL_XXXX variables.
init.mk
main.mk : ?? Called by prebuilt/linux-x86/bin/make. Not used by ARM toolchain?
ndk-common.sh
prebuilt-library.mk : Called by Application.mk
prebuilt-shared-library.mk : Called by prebuilt-library.mk, when building shared libraries
prebuilt-static-library.mk : Called by prebuilt-library.mk, when building shared libraries
setup-abi.mk : Defines TARGET_XXX (XXX: ARCH, OBJ, PLATFORM, GDB_SETUP) variables.
setup-app.mk : Defines NDK_APP_XXX variables.
setup-imports.mk : Setup variables in setup-xxx.mk files.
setup-toolchain.mk : Defines TOOLCHAIN_XXX variables.
- LOCAL_XXX
- HOST_XXX
. HOST_ARCH = {X86 | ARM | PPC}
. HOST_OS = {windows | linux | darwin}
- TARGET_XXX
- NDK_XXX
> NDK_XXX
. NDK_PROJECT_PATH := .
. NDK_APPLICATION_MK := 1> $(NDK_PROJECT_PATH)/jni/Application.mk
2> $(NDK_ROOT)/build/core/default-application.mk
> NDK_APP_XXX
. NDK_APP_OUT := $(NDK_PROJECT_PATH)/obj
. NDK_APP_NAME := $(_app) ;{local}
. NDK_APP_ABI := $(APP_ABI)
. NDK_APP_DST_DIR := $(NDK_APP_PROJECT_PATH)/libs/$(TARGET_ARCH_ABI)
. NDK_APP_GDBSERVER := $(NDK_APP_DST_DIR)/gdbserver
. NDK_APP_GDBSETUP := $(NDK_APP_DST_DIR)/gdb.setup
- APP_XXX
. APP_MANIFEST := $(APP_PROJECT_PATH)/AndroidManifest.xml)
. APP_PLATFORM := android-5 (Defined in Application.mk)
. APP_ABI := armeabi armeabi-v7a (Defined in Application.mk)
. APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/jni/Android.mk
. APP_MODULES :=
. APP_PROJECT_PATH := $(NDK_PROJECT_PATH)
. APP_STL := system
- TOOLCHAIN_XXX
- BUILD_XXX
- $NDK/ndk-build
Entry file of building system. Find an executable "GNUMAKE" command (/usr/bin/make in Ubuntu linux) and jump to build-local.mk.
> GNUMAKE=`which make 2> /dev/null`
> $GNUMAKE -f $PROGDIR/build/core/build-local.mk "$@"
- $NDK/build/core/build-local.mk
NDK_ROOT = ?
include $(NDK_ROOT)/build/core/init.mk
host-dir-parent = $(patsubst %/,%,$(dir $1))
find-project-dir = $(strip $(call find-project-dir-inner,$(abspath $1),$2))
find-project-dir-inner = ?
find-project-dir-inner-2 = ?
NDK_PROJECT_PATH := 1> .
2> $(call find-project-dir,.,jni/Android.mk)
3> $(call find-project-dir,.,AndroidManifest.xml)
4> predefined $NDK_PROJECT_PATH
NDK_APPLICATION_MK := 1> $(strip $(wildcard $(NDK_PROJECT_PATH)/jni/Application.mk))
2> $(NDK_ROOT)/build/core/default-application.mk
NDK_APP_OUT := $(NDK_PROJECT_PATH)/obj
_app := local
_application_mk := $(NDK_APPLICATION_MK)
NDK_APPS := $(_app)
include $(BUILD_SYSTEM)/add-application.mk
DUMP_VAR := $(patsubst DUMP_%,%,$(filter DUMP_%,$(MAKECMDGOALS)))
MAKECMDGOALS := $(filter-out DUMP_$(DUMP_VAR),$(MAKECMDGOALS))
$(DUMP_VAR)=="" --> 1
1> include $(BUILD_SYSTEM)/setup-imports.mk
2> include $(BUILD_SYSTEM)/build-all.mk
- $NDK/build/core/init.mk
BUILD_SYSTEM := $(NDK_ROOT)/build/core
include $(BUILD_SYSTEM)/definitions.mk
ADD_TOOLCHAIN := $(BUILD_SYSTEM)/add-toolchain.mk
TOOLCHAIN_CONFIGS := $(wildcard $(NDK_ROOT)/toolchains/*/config.mk)
$(foreach _config_mk,$(TOOLCHAIN_CONFIGS),\
$(eval include $(BUILD_SYSTEM)/add-toolchain.mk)\
)
NDK_ALL_TOOLCHAINS := $(sort $(NDK_ALL_TOOLCHAINS))
NDK_ALL_ABIS := $(sort $(NDK_ALL_ABIS))
NDK_ALL_ARCHS := $(sort $(NDK_ALL_ARCHS))
NDK_TOOLCHAIN := $(strip $(NDK_TOOLCHAIN))
NDK_PLATFORMS_ROOT := $(strip $(NDK_PLATFORMS_ROOT))
$(foreach _platform,$(NDK_ALL_PLATFORMS),\
$(eval include $(BUILD_SYSTEM)/add-platform.mk)\
)
NDK_ALL_PLATFORM_LEVELS := $(filter android-%,$(NDK_ALL_PLATFORMS))
NDK_ALL_PLATFORM_LEVELS := $(patsubst android-%,%,$(NDK_ALL_PLATFORM_LEVELS))
$(call ndk_log,Found stable platform levels: $(NDK_ALL_PLATFORM_LEVELS))
- $NDK/build/core/add-application.mk
APP_MODULES := $(call strip-lib-prefix,$(APP_MODULES))
APP_PROJECT_PATH := 1> $(strip $(APP_PROJECT_PATH))
2> $(NDK_PROJECT_PATH)
APP_BUILD_SCRIPT := $(strip $(APP_BUILD_SCRIPT))
- $NDK/build/core/default-application.mk
APP_PROJECT_PATH := $(NDK_PROJECT_PATH)
APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/jni/Android.mk
- User application makefile
APP_ABI := armeabi armeabi-v7a
APP_PLATFORM := android-8
OCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := plasma
LOCAL_SRC_FILES := plasma.c
LOCAL_LDLIBS := -lm -llog -ljnigraphics
include $(BUILD_SHARED_LIBRARY)