definitions.mk revision 5815d77ccd68a5f6f8f7d6f4fa5dfbd05828d33f
148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Copyright (C) 2009 The Android Open Source Project 248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Licensed under the Apache License, Version 2.0 (the "License"); 448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# you may not use this file except in compliance with the License. 548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# You may obtain a copy of the License at 648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# http://www.apache.org/licenses/LICENSE-2.0 848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Unless required by applicable law or agreed to in writing, software 1048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# distributed under the License is distributed on an "AS IS" BASIS, 1148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# See the License for the specific language governing permissions and 1348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# limitations under the License. 1448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 1548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Common definitions for the Android NDK build system 1648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 1748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 1848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# We use the GNU Make Standard Library 192ab9c51a581188f1986d9ab578c513665a84460aDavid 'Digit' Turnerinclude $(BUILD_SYSTEM)/../gmsl/gmsl 2048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 2148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# This is the Android NDK version number as a list of three items: 2248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# major, minor, revision 2348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerndk_version := 1 0 0 2548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 2648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Used to output warnings and error from the library, it's possible to 2748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# disable any warnings or errors by overriding these definitions 2848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# manually or by setting GMSL_NO_WARNINGS or GMSL_NO_ERRORS 2948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_name := Android NDK 3148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_info = $(info $(__ndk_name): $1 $2 $3 $4 $5) 3248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_warning = $(warning $(__ndk_name): $1 $2 $3 $4 $5) 3348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_error = $(error $(__ndk_name): $1 $2 $3 $4 $5) 3448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 3548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerifdef NDK_NO_WARNINGS 3648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_warning := 3748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendif 3848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerifdef NDK_NO_ERRORS 3948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_error := 4048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendif 4148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 4248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# If NDK_TRACE is enabled then calls to the library functions are 4348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# traced to stdout using warning messages with their arguments 4448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 4548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerifdef NDK_TRACE 4648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr1 = $(warning $0('$1')) 4748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr2 = $(warning $0('$1','$2')) 4848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr3 = $(warning $0('$1','$2','$3')) 4948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 5048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr1 := 5148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr2 := 5248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner__ndk_tr3 := 5348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendif 5448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 5548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 5648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : ndk_log 5748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: text to print when NDK_LOG is defined 5848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 5948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call ndk_log,<some text>) 6048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 6148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerifdef NDK_LOG 6248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerndk_log = $(info $(__ndk_name): $1) 6348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 6448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerndk_log := 6548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendif 6648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 6748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 6848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 6948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : empty 7048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : an empty macro 7148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(empty) 7248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 7348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerempty := 7448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 7548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 7648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : space 7748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : a single space 7848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(space) 7948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 8048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerspace := $(empty) $(empty) 8148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 8248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 8348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : last2 8448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: a list 8548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : the penultimate (next-to-last) element of a list 8648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call last2, <LIST>) 8748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 8848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerlast2 = $(word $(words $1), x $1) 8948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 9048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 9148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : last3 9248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: a list 9348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : the antepenultimate (second-next-to-last) element of a list 9448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call last3, <LIST>) 9548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 9648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerlast3 = $(word $(words $1), x x $1) 9748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 9848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 9948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : this-makefile 10048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : the name of the current Makefile in the inclusion stack 10148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(this-makefile) 10248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 10348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerthis-makefile = $(lastword $(MAKEFILE_LIST)) 10448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 10548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 10648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : local-makefile 10748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : the name of the last parsed Android.mk file 10848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(local-makefile) 10948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 11048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerlocal-makefile = $(lastword $(filter %Android.mk,$(MAKEFILE_LIST))) 11148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 11248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 11348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : assert-defined 11448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: list of variable names 11548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 11648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call assert-defined, VAR1 VAR2 VAR3...) 11748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: Checks that all variables listed in $1 are defined, or abort the 11848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# build 11948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 12048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerassert-defined = $(foreach __varname,$(strip $1),\ 12148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(if $(strip $($(__varname))),,\ 12248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_error, Assertion failure: $(__varname) is not defined)\ 12348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner )\ 12448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner) 12548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 12648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 12748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : clear-vars 12848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: list of variable names 12948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: file where the variable should be defined 13048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 13148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call clear-vars, VAR1 VAR2 VAR3...) 13248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: Clears/undefines all variables in argument list 13348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 13448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerclear-vars = $(foreach __varname,$1,$(eval $(__varname) := $(empty))) 13548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 13648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 13748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : check-required-vars 13848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: list of variable names 13948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: file where the variable(s) should be defined 14048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 14148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call check-required-vars, VAR1 VAR2 VAR3..., <file>) 14248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: Checks that all required vars listed in $1 were defined by $2 14348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# or abort the build with an error 14448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 14548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercheck-required-vars = $(foreach __varname,$1,\ 14648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(if $(strip $($(__varname))),,\ 14748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_info, Required variable $(__varname) is not defined by $2)\ 14848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_error,Aborting)\ 14948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner )\ 15048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner) 15148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 15248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 15348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : modules-clear 15448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: None 15548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 15648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call modules-clear) 15748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: clears the list of defined modules known by the build system 15848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 15948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermodules-clear = $(eval __ndk_modules := $(empty_set)) 16048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 16148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 16248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : modules-add 16348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: module name 16448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: path to Android.mk where the module is defined 16548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 16648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call modules-add,<modulename>,<Android.mk path>) 16748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: add a new module. If it is already defined, print an error message 16848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# and abort. 16948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 17048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermodules-add = \ 17148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(if $(call set_is_member,$(__ndk_modules),$1),\ 17248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_info,Trying to define local module '$1' in $2.)\ 17348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_info,But this module was already defined by $(__ndk_modules.$1).)\ 17448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_error,Aborting.)\ 17548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner )\ 17648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(eval __ndk_modules := $(call set_insert,$(__ndk_modules),$1))\ 17748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(eval __ndk_modules.$1 := $2)\ 17848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 17948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 18048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : check-user-define 18148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: name of variable that must be defined by the user 18248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: name of Makefile where the variable should be defined 18348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 3: name/description of the Makefile where the check is done, which 18448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# must be included by $2 18548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 18648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 18748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercheck-user-define = $(if $(strip $($1)),,\ 18848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_error,Missing $1 before including $3 in $2)) 18948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 19048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 19148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# This is used to check that LOCAL_MODULE is properly defined by an Android.mk 19248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# file before including one of the $(BUILD_SHARED_LIBRARY), etc... files. 19348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 19448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : check-user-LOCAL_MODULE 19548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: name/description of the included build Makefile where the 19648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# check is done 19748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 19848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call check-user-LOCAL_MODULE, BUILD_SHARED_LIBRARY) 19948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 20048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercheck-defined-LOCAL_MODULE = \ 20148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call check-user-define,LOCAL_MODULE,$(local-makefile),$(1)) \ 20248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(if $(call seq,$(words $(LOCAL_MODULE)),1),,\ 20348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_info,LOCAL_MODULE definition in $(local-makefile) must not contain space)\ 20448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call __ndk_error,Please correct error. Aborting)\ 20548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner ) 20648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 20748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 20848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Strip any 'lib' prefix in front of a given string. 20948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 21048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : strip-lib-prefix 21148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: module name 21248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : module name, without any 'lib' prefix if any 21348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call strip-lib-prefix,$(LOCAL_MODULE)) 21448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 21548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerstrip-lib-prefix = $(1:lib%=%) 21648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 21748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 21848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# This is used to strip any lib prefix from LOCAL_MODULE, then check that 21948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# the corresponding module name is not already defined. 22048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 22148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : check-user-LOCAL_MODULE 22248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: path of Android.mk where this LOCAL_MODULE is defined 22348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 22448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE)) 22548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 22648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercheck-LOCAL_MODULE = \ 22748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(eval LOCAL_MODULE := $$(call strip-lib-prefix,$$(LOCAL_MODULE)))\ 22848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(call modules-add,$(LOCAL_MODULE),$1) 22948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 23048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 23148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : my-dir 23248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : the directory of the current Makefile 23348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(my-dir) 23448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 23548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnermy-dir = $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST)))) 23648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 23748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 23848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : all-makefiles-under 23948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments: 1: directory path 24048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : a list of all makefiles immediately below some directory 24148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call all-makefiles-under, <some path>) 24248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 24348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerall-makefiles-under = $(wildcard $1/*/Android.mk) 24448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 24548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 24648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : all-subdir-makefiles 24748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : list of all makefiles in subdirectories of the current Makefile's 24848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# location 24948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(all-subdir-makefiles) 25048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 25148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerall-subdir-makefiles = $(call all-makefiles-under,$(call my-dir)) 25248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 25448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 25548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 25648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Application.mk support 25748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 25848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 25948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# the list of variables that *must* be defined in Application.mk files 26148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerNDK_APP_VARS_REQUIRED := APP_MODULES APP_PROJECT_PATH 26248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# the list of variables that *may* be defined in Application.mk files 2645815d77ccd68a5f6f8f7d6f4fa5dfbd05828d33fDavid 'Digit' TurnerNDK_APP_VARS_OPTIONAL := APP_OPTIM APP_CPPFLAGS APP_CFLAGS APP_CXXFLAGS \ 2655815d77ccd68a5f6f8f7d6f4fa5dfbd05828d33fDavid 'Digit' Turner APP_PLATFORM 26648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 26748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# the list of all variables that may appear in an Application.mk file 26831d9dac441e28836a4fe6b2c052da6e35780c25dDavid 'Digit' TurnerNDK_APP_VARS := $(NDK_APP_VARS_REQUIRED) $(NDK_APP_VARS_OPTIONAL) 26948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 27048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 27148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 27248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Android.mk support 27348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 27448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 27548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 27648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 27748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 27848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 27948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Generated files support 28048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 28148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 28248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 28348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 28448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 28548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : host-static-library-path 28648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: library module name (e.g. 'foo') 28748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : location of generated host library name (e.g. '..../libfoo.a) 28848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call host-static-library-path,<modulename>) 28948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 29048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerhost-static-library-path = $(HOST_OUT)/lib$1.a 29148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 29248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 29348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : host-executable-path 29448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: executable module name (e.g. 'foo') 29548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : location of generated host executable name (e.g. '..../foo) 29648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call host-executable-path,<modulename>) 29748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 29848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerhost-executable-path = $(HOST_OUT)/$1$(HOST_EXE) 29948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 30048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 30148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : static-library-path 30248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: library module name (e.g. 'foo') 30348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : location of generated static library name (e.g. '..../libfoo.a) 30448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call static-library-path,<modulename>) 30548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 30648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerstatic-library-path = $(TARGET_OUT)/lib$1.a 30748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 30848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 30948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : shared-library-path 31048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: library module name (e.g. 'foo') 31148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : location of generated shared library name (e.g. '..../libfoo.so) 31248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call shared-library-path,<modulename>) 31348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 31448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnershared-library-path = $(TARGET_OUT)/lib$1.so 31548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 31648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 31748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : executable-path 31848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: executable module name (e.g. 'foo') 31948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : location of generated exectuable name (e.g. '..../foo) 32048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call executable-path,<modulename>) 32148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 32248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerexecutable-path = $(TARGET_OUT)/$1 32348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 32448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 32548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 32648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Build commands support 32748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 32848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ============================================================================= 32948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 33048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 33148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Macro : hide 33248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : nothing 33348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(hide)<make commands> 33448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale: To be used as a prefix for Make build commands to hide them 33548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# by default during the build. To show them, set V=1 in your 33648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# environment or command-line. 33748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 33848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# For example: 33948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 34048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# foo.o: foo.c 34148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# -->|$(hide) <build-commands> 34248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 34348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Where '-->|' stands for a single tab character. 34448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 34548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 34648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerifeq ($(V),1) 34748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerhide = $(empty) 34848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerelse 34948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerhide = @ 35048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendif 35148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 35248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 35348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Template : ev-compile-c-source 35448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: single C source file name (relative to LOCAL_PATH) 35548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: target object file (without path) 35648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 35748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(eval $(call ev-compile-c-source,<srcfile>,<objfile>) 35848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : Internal template evaluated by compile-c-source and 35948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# compile-s-source 36048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 36148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerdefine ev-compile-c-source 36248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner_SRC:=$$(LOCAL_PATH)/$(1) 36348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner_OBJ:=$$(LOCAL_OBJS_DIR)/$(2) 36448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 36548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_SRC := $$(_SRC) 36648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_OBJ := $$(_OBJ) 36748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE) 36848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_ARM_MODE := $$(LOCAL_ARM_MODE) 36948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_ARM_TEXT := $$(LOCAL_ARM_TEXT) 37048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_CC := $$($$(my)CC) 37148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_CFLAGS := $$($$(my)CFLAGS) \ 372f5107032a58fc88cea9a2bb1211b1f7d9e9eeccbDavid 'Digit' Turner $$($$(my)$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ 373f4532bc743fbfd4c5c60ebdd0f435006a100fc19David 'Digit' Turner $$(LOCAL_C_INCLUDES:%=-I%) \ 37448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -I$$(LOCAL_PATH) \ 37548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(LOCAL_CFLAGS) \ 376f5107032a58fc88cea9a2bb1211b1f7d9e9eeccbDavid 'Digit' Turner $$(NDK_APP_CFLAGS) 37748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 37848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) 37948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner @mkdir -p $$(dir $$(PRIVATE_OBJ)) 38048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner @echo "Compile $$(PRIVATE_ARM_TEXT) : $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC)" 38148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(hide) $$(PRIVATE_CC) $$(PRIVATE_CFLAGS) -c \ 38248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp \ 38348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(PRIVATE_SRC) \ 38448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -o $$(PRIVATE_OBJ) 38548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(call cmd-process-deps,$$(PRIVATE_OBJ)) 38648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 38748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLOCAL_OBJECTS += $$(_OBJ) 38848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLOCAL_DEPENDENCY_DIRS += $$(dir $$(_OBJ)) 38948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendef 39048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 39148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 39248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : compile-c-source 39348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: single C source file name (relative to LOCAL_PATH) 39448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 39548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call compile-c-source,<srcfile>) 39648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : Setup everything required to build a single C source file 39748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 39848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercompile-c-source = $(eval $(call ev-compile-c-source,$1,$(1:%.c=%.o))) 39948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 40048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 40148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : compile-s-source 40248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: single Assembly source file name (relative to LOCAL_PATH) 40348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 40448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call compile-s-source,<srcfile>) 40548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : Setup everything required to build a single Assembly source file 40648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 4074bfbac10e5411efca892417e6b6b30842c215dc0David 'Digit' Turnercompile-s-source = $(eval $(call ev-compile-c-source,$1,$(1:%.S=%.o))) 40848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 40948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 41048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 41148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Template : ev-compile-cpp-source 41248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: single C++ source file name (relative to LOCAL_PATH) 41348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: target object file (without path) 41448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 41548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(eval $(call ev-compile-cpp-source,<srcfile>,<objfile>) 41648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : Internal template evaluated by compile-cpp-source 41748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 41848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 41948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerdefine ev-compile-cpp-source 42048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner_SRC:=$$(LOCAL_PATH)/$(1) 42148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner_OBJ:=$$(LOCAL_OBJS_DIR)/$(2) 42248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 42348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_SRC := $$(_SRC) 42448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_OBJ := $$(_OBJ) 42548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE) 42648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_ARM_MODE := $$(LOCAL_ARM_MODE) 42748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_ARM_TEXT := $$(LOCAL_ARM_TEXT) 42848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_CXX := $$($$(my)CXX) 42948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): PRIVATE_CXXFLAGS := $$($$(my)CXXFLAGS) \ 430f5107032a58fc88cea9a2bb1211b1f7d9e9eeccbDavid 'Digit' Turner $$($$(my)$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ 431f4532bc743fbfd4c5c60ebdd0f435006a100fc19David 'Digit' Turner $$(LOCAL_C_INCLUDES:%=-I%) \ 43248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -I$$(LOCAL_PATH) \ 43361697d20c6e38ce007db1243aebf0a89836c440eDavid 'Digit' Turner $$(LOCAL_CFLAGS) \ 4342ab9c51a581188f1986d9ab578c513665a84460aDavid 'Digit' Turner $$(LOCAL_CPPFLAGS) \ 4352ab9c51a581188f1986d9ab578c513665a84460aDavid 'Digit' Turner $$(LOCAL_CXXFLAGS) \ 43661697d20c6e38ce007db1243aebf0a89836c440eDavid 'Digit' Turner $$(NDK_APP_CFLAGS) \ 43748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(NDK_APP_CPPFLAGS) \ 43848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(NDK_APP_CXXFLAGS) \ 43948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 44048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) 44148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner @mkdir -p $$(dir $$(PRIVATE_OBJ)) 44248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner @echo "Compile++ $$(PRIVATE_ARM_TEXT): $$(PRIVATE_MODULE) <= $$(PRIVATE_SRC)" 44348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $(hide) $$(PRIVATE_CXX) $$(PRIVATE_CXXFLAGS) -c \ 44448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -MMD -MP -MF $$(PRIVATE_OBJ).d.tmp \ 44548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(PRIVATE_SRC) \ 44648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner -o $$(PRIVATE_OBJ) 44748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner $$(call cmd-process-deps,$$(PRIVATE_OBJ)) 44848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 44948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLOCAL_OBJECTS += $$(_OBJ) 45048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' TurnerLOCAL_DEPENDENCY_DIRS += $$(dir $$(_OBJ)) 45148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendef 45248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 45348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 45448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Function : compile-cpp-source 45548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: single C++ source file name (relative to LOCAL_PATH) 45648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 45748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call compile-c-source,<srcfile>) 45848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : Setup everything required to build a single C++ source file 45948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 46048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercompile-cpp-source = $(eval $(call ev-compile-cpp-source,$1,$(1:%$(LOCAL_CPP_EXTENSION)=%.o))) 46148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 46248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 46348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Command : cmd-process-deps 46448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: object file path 46548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 46648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call cmd-process-deps,<objectfile>) 46748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : To be used as a Make build command to process the dependencies 46848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# generated by the compiler (in <obj>.d.tmp) into ones suited 46948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# for our build system. See the comments in build/core/mkdeps.sh 47048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# for more details. 47148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 47248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnercmd-process-deps = $(hide) $(BUILD_SYSTEM)/mkdeps.sh $(1) $(1).d.tmp $(1).d 47348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner 47448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 47548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Command : cmd-install-file 47648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Arguments : 1: source file 47748ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# 2: destination file 47848ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Returns : None 47948ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Usage : $(call cmd-install-file,<srcfile>,<dstfile>) 48048ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# Rationale : To be used as a Make build command to copy/install a file to 48148ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# a given location. 48248ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner# ----------------------------------------------------------------------------- 48348ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerdefine cmd-install-file 48448ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner@mkdir -p $(dir $2) 48548ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turner$(hide) cp -fp $1 $2 48648ef1859ef0bb25547e5aceeedb9b175c6193bc5David 'Digit' Turnerendef 487