188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copyright (C) 2008 The Android Open Source Project 388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Licensed under the Apache License, Version 2.0 (the "License"); 588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# you may not use this file except in compliance with the License. 688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# You may obtain a copy of the License at 788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# http://www.apache.org/licenses/LICENSE-2.0 988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 1088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Unless required by applicable law or agreed to in writing, software 1188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# distributed under the License is distributed on an "AS IS" BASIS, 1288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# See the License for the specific language governing permissions and 1488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# limitations under the License. 1588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 1688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 1888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Common build system definitions. Mostly standard 1988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## commands for building various types of targets, which 2088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## are used by others to construct the final targets. 2188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 2288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# These are variables we use to collect overall lists 2488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# of things being processed. 2588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full paths to all of the documentation 2788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_DOCS:= 2888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 2988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The short names of all of the targets in the system. 3088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# For each element of ALL_MODULES, two other variables 3188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# are defined: 3288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(ALL_MODULES.$(target)).BUILT 3388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(ALL_MODULES.$(target)).INSTALLED 3488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The BUILT variable contains LOCAL_BUILT_MODULE for that 3588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# target, and the INSTALLED variable contains the LOCAL_INSTALLED_MODULE. 3688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Some targets may have multiple files listed in the BUILT and INSTALLED 3788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# sub-variables. 3888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_MODULES:= 3988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full paths to targets that should be added to the "make droid" 4188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# set of installed targets. 4288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_DEFAULT_INSTALLED_MODULES:= 4388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 4488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The list of tags that have been defined by 4588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# LOCAL_MODULE_TAGS. Each word in this variable maps 4688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to a corresponding ALL_MODULE_TAGS.<tagname> variable 4788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# that contains all of the INSTALLED_MODULEs with that tag. 4888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_MODULE_TAGS:= 4988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Similar to ALL_MODULE_TAGS, but contains the short names 5188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# of all targets for a particular tag. The top-level variable 5288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# won't have the list of tags; ust ALL_MODULE_TAGS to get 5388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# the list of all known tags. (This means that this variable 5488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# will always be empty; it's just here as a placeholder for 5588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# its sub-variables.) 5688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_MODULE_NAME_TAGS:= 5788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 5888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full paths to all prebuilt files that will be copied 5988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# (used to make the dependency on acp) 6088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_PREBUILT:= 6188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 6288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full path to all files that are made by some tool 6388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_GENERATED_SOURCES:= 6488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 6588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full path to all asm, C, C++, lex and yacc generated C files. 6688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# These all have an order-only dependency on the copied headers 6788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_C_CPP_ETC_OBJECTS:= 6888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 69b375e71d306f2fd356b9b356b636e568c4581fa1Iliyan Malchev# The list of dynamic binaries that haven't been stripped/compressed/etc. 7088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_ORIGINAL_DYNAMIC_BINARIES:= 7188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# These files go into the SDK 7388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_SDK_FILES:= 7488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Files for dalvik. This is often build without building the rest of the OS. 7688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectINTERNAL_DALVIK_MODULES:= 7788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# All findbugs xml files 7988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_FINDBUGS_FILES:= 8088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 81fd626f2d21a55aec9133424f4303d5450ad9622eYing Wang# GPL module license files 82fd626f2d21a55aec9133424f4303d5450ad9622eYing WangALL_GPL_MODULE_LICENSE_FILES:= 83fd626f2d21a55aec9133424f4303d5450ad9622eYing Wang 849485a57bb2e55535fc337f2be803e79cd1c46b62Ying Wang# Target and host installed module's dependencies on shared libraries. 85d6b1d61d84a95ba74bb3e4f9053014357ac363d1Ying Wang# They are list of "<module_name>:<installed_file>:lib1,lib2...". 869485a57bb2e55535fc337f2be803e79cd1c46b62Ying WangTARGET_DEPENDENCIES_ON_SHARED_LIBRARIES := 87966c1e0cae6a59f15264d3b542af08e21e2dc06cYing Wang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_DEPENDENCIES_ON_SHARED_LIBRARIES := 889485a57bb2e55535fc337f2be803e79cd1c46b62Ying WangHOST_DEPENDENCIES_ON_SHARED_LIBRARIES := 89966c1e0cae6a59f15264d3b542af08e21e2dc06cYing Wang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_DEPENDENCIES_ON_SHARED_LIBRARIES := 909485a57bb2e55535fc337f2be803e79cd1c46b62Ying Wang 91ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang# Generated class file names for Android resource. 92ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang# They are escaped and quoted so can be passed safely to a bash command. 93ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing WangANDROID_RESOURCE_GENERATED_CLASSES := 'R.class' 'R$$*.class' 'Manifest.class' 'Manifest$$*.class' 94ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang 9588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 9688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Debugging; prints a variable list to stdout 9788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 9888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 9988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): variable name list, not variable values 10088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine print-vars 10188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach var,$(1), \ 10288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(info $(var):) \ 10388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(foreach word,$($(var)), \ 10488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(info $(space)$(space)$(word)) \ 10588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 10688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 10788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 10888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 10988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 11064d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Evaluates to true if the string contains the word true, 11164d85d0d827489c514f6aec075482563c80cda73Joe Onorato## and empty otherwise 11264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): a var to test 11364d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 11464d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11564d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine true-or-empty 11664d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(filter true, $(1)) 11764d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 11864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11964d85d0d827489c514f6aec075482563c80cda73Joe Onorato 12064d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 12188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve the directory of the current makefile 1223bbfddd2eae96b69be14baeca05726a70062ba6cYing Wang## Must be called before including any other makefile!! 12388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 12488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 12588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Figure out where we are. 12688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine my-dir 127b392641d9b07d6321aed828c983af04115da8aabDave Bort$(strip \ 12868f1c77a8db3ee6f92194cbaeeb1bf559bb79afdYing Wang $(eval LOCAL_MODULE_MAKEFILE := $$(lastword $$(MAKEFILE_LIST))) \ 1293bbfddd2eae96b69be14baeca05726a70062ba6cYing Wang $(if $(filter $(BUILD_SYSTEM)/% $(OUT_DIR)/%,$(LOCAL_MODULE_MAKEFILE)), \ 1303bbfddd2eae96b69be14baeca05726a70062ba6cYing Wang $(error my-dir must be called before including any other makefile.) \ 131b392641d9b07d6321aed828c983af04115da8aabDave Bort , \ 13268f1c77a8db3ee6f92194cbaeeb1bf559bb79afdYing Wang $(patsubst %/,%,$(dir $(LOCAL_MODULE_MAKEFILE))) \ 133b392641d9b07d6321aed828c983af04115da8aabDave Bort ) \ 134b392641d9b07d6321aed828c983af04115da8aabDave Bort ) 13588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 13688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 13888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve a list of all makefiles immediately below some directory 13988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 14088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-makefiles-under 14288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(wildcard $(1)/*/Android.mk) 14388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 14488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 14688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Look under a directory for makefiles that don't have parent 14788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## makefiles. 14888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 14988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): directory to search under 15188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Ignores $(1)/Android.mk 15288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine first-makefiles-under 1531390cac3cea58f1c5c738bf875b4de5ba4d68fa4JP Abgrall$(shell build/tools/findleaves.py --prune=$(OUT_DIR) --prune=.repo --prune=.git \ 154dc1a728fb89677589bf3b5e3a5aab58164c9be6bJoe Onorato --mindepth=2 $(1) Android.mk) 15588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 15688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 15888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve a list of all makefiles immediately below your directory 1593bbfddd2eae96b69be14baeca05726a70062ba6cYing Wang## Must be called before including any other makefile!! 16088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 16188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-makefiles 16388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-makefiles-under,$(call my-dir)) 16488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 16588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 16788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Look in the named list of directories for makefiles, 16888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## relative to the current directory. 1693bbfddd2eae96b69be14baeca05726a70062ba6cYing Wang## Must be called before including any other makefile!! 17088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 17188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): List of directories to look for under this directory 17388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-named-subdir-makefiles 174e73c4bbc509f414cb8fbf487b7f44ab94af9cbb9Chih-Wei Huang$(wildcard $(addsuffix /Android.mk, $(addprefix $(call my-dir)/,$(1)))) 17588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 17688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 17888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the java files under the named directories. 17988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Meant to be used like: 18088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-java-files-under,src tests) 18188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 18288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 18388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-java-files-under 18488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 18588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 186f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "*.java" -and -not -name ".*") \ 18788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 18888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 18988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 19188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the java files from here. Meant to be used like: 19288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-java-files) 19388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 19488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-java-files 19688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-java-files-under,.) 19788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 19888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 20088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the c files under the named directories. 20188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Meant to be used like: 20288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-c-files-under,src tests) 20388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 20488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 20588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-c-files-under 20688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 20788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 208f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "*.c" -and -not -name ".*") \ 20988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 21088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 21188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 21288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 21388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the c files from here. Meant to be used like: 21488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-c-files) 21588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 21688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 21788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-c-files 21888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-c-files-under,.) 21988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 22088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 22288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all files named "I*.aidl" under the named directories, 22388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## which must be relative to $(LOCAL_PATH). The returned list 22488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## is relative to $(LOCAL_PATH). 22588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 22688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-Iaidl-files-under 22888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 22988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 230f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "I*.aidl" -and -not -name ".*") \ 23188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 23288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 23388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 23588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the "I*.aidl" files under $(LOCAL_PATH). 23688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 23788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-Iaidl-files 23988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-Iaidl-files-under,.) 24088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 24188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 24288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 243a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## Find all of the logtags files under the named directories. 244a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## Meant to be used like: 245a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## SRC_FILES := $(call all-logtags-files-under,src) 246a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert########################################################### 247a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert 248a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringertdefine all-logtags-files-under 249a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert$(patsubst ./%,%, \ 250a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert $(shell cd $(LOCAL_PATH) ; \ 251f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "*.logtags" -and -not -name ".*") \ 252a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert ) 253a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringertendef 254a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert 255a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert########################################################### 256a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Find all of the .proto files under the named directories. 257a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Meant to be used like: 258a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## SRC_FILES := $(call all-proto-files-under,src) 259a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 260a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 261a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine all-proto-files-under 262a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(patsubst ./%,%, \ 263a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang $(shell cd $(LOCAL_PATH) ; \ 264f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "*.proto" -and -not -name ".*") \ 265a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang ) 266a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 267a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 268a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 2690bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## Find all of the RenderScript files under the named directories. 2700bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## Meant to be used like: 2710bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## SRC_FILES := $(call all-renderscript-files-under,src) 2720bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 2730bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 2740bd59a0a58f9891926ff6faf74a78307230d705bYing Wangdefine all-renderscript-files-under 2750bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(patsubst ./%,%, \ 2760bd59a0a58f9891926ff6faf74a78307230d705bYing Wang $(shell cd $(LOCAL_PATH) ; \ 277d26375733992298edc036652d25170e1cd7cbd49Stephen Hines find -L $(1) \( -name "*.rs" -or -name "*.fs" \) -and -not -name ".*") \ 2780bd59a0a58f9891926ff6faf74a78307230d705bYing Wang ) 2790bd59a0a58f9891926ff6faf74a78307230d705bYing Wangendef 2800bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 2810bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 282e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes## Find all of the S files under the named directories. 283e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes## Meant to be used like: 284e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes## SRC_FILES := $(call all-c-files-under,src tests) 285e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes########################################################### 286e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes 287e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughesdefine all-S-files-under 288e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes$(patsubst ./%,%, \ 289e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes $(shell cd $(LOCAL_PATH) ; \ 290e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes find -L $(1) -name "*.S" -and -not -name ".*") \ 291e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes ) 292e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughesendef 293e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes 294e3b044a0cc5ffb4817dfba412118ee4a3d273b63Elliott Hughes########################################################### 2950a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## Find all of the html files under the named directories. 2960a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## Meant to be used like: 2970a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## SRC_FILES := $(call all-html-files-under,src tests) 2980a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru########################################################### 2990a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru 3000a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Querudefine all-html-files-under 3010a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru$(patsubst ./%,%, \ 3020a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru $(shell cd $(LOCAL_PATH) ; \ 303f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens find -L $(1) -name "*.html" -and -not -name ".*") \ 3040a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru ) 3050a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queruendef 3060a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru 3070a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru########################################################### 30888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the html files from here. Meant to be used like: 30988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-html-files) 31088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 31188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 31288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-html-files 3130a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru$(call all-html-files-under,.) 31488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 31588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 31688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 31788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the files matching pattern 31888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call find-subdir-files, <pattern>) 31988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 32088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 32188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-files 322f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) ; find -L $(1))) 32388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 32488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 32588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 32688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# find the files in the subdirectory $1 of LOCAL_DIR 32788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# matching pattern $2, filtering out files $3 32888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# e.g. 32988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# SRC_FILES += $(call find-subdir-subdir-files, \ 33088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# css, *.cpp, DontWantThis.cpp) 33188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 33288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 33388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-subdir-files 33488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out $(patsubst %,$(1)/%,$(3)),$(patsubst ./%,%,$(shell cd \ 335f435739bac0507b8d7711957474e2f1c5c1fdc7bConley Owens $(LOCAL_PATH) ; find -L $(1) -maxdepth 1 -name $(2)))) 33688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 33788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 33888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 33988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the files matching pattern 34088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-java-files) 34188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 34288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 34388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-assets 34488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(if $(1),$(patsubst ./%,%, \ 3456ab5d6aa166f14c79f31240d2902b5b539253af3Ying Wang $(shell if [ -d $(1) ] ; then cd $(1) ; find ./ -not -name '.*' -and -type f -and -not -type l ; fi)), \ 34688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(warning Empty argument supplied to find-subdir-assets) \ 34788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 34888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 34988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 35088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 35188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find various file types in a list of directories relative to $(LOCAL_PATH) 35288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 35388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 35488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-other-java-files 35588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-subdir-files,$(1) -name "*.java" -and -not -name ".*") 35688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 35788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 35888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-other-html-files 35988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-subdir-files,$(1) -name "*.html" -and -not -name ".*") 36088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 36188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 36288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 36385898bca9969ec30c746cc852394bbae0195edbcYing Wang# Use utility find to find given files in the given subdirs. 36485898bca9969ec30c746cc852394bbae0195edbcYing Wang# This function uses $(1), instead of LOCAL_PATH as the base. 36585898bca9969ec30c746cc852394bbae0195edbcYing Wang# $(1): the base dir, relative to the root of the source tree. 36685898bca9969ec30c746cc852394bbae0195edbcYing Wang# $(2): the file name pattern to be passed to find as "-name". 36785898bca9969ec30c746cc852394bbae0195edbcYing Wang# $(3): a list of subdirs of the base dir. 36885898bca9969ec30c746cc852394bbae0195edbcYing Wang# Returns: a list of paths relative to the base dir. 36985898bca9969ec30c746cc852394bbae0195edbcYing Wang########################################################### 37085898bca9969ec30c746cc852394bbae0195edbcYing Wang 37185898bca9969ec30c746cc852394bbae0195edbcYing Wangdefine find-files-in-subdirs 37285898bca9969ec30c746cc852394bbae0195edbcYing Wang$(patsubst ./%,%, \ 37385898bca9969ec30c746cc852394bbae0195edbcYing Wang $(shell cd $(1) ; \ 37485898bca9969ec30c746cc852394bbae0195edbcYing Wang find -L $(3) -name $(2) -and -not -name ".*") \ 37585898bca9969ec30c746cc852394bbae0195edbcYing Wang ) 37685898bca9969ec30c746cc852394bbae0195edbcYing Wangendef 37785898bca9969ec30c746cc852394bbae0195edbcYing Wang 37885898bca9969ec30c746cc852394bbae0195edbcYing Wang########################################################### 37988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Scan through each directory of $(1) looking for files 38088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## that match $(2) using $(wildcard). Useful for seeing if 38188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a given directory or one of its parents contains 38288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a particular file. Returns the first match found, 38388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## starting furthest from the root. 38488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 38588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 38688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-parent-file 38788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 388a67ce69e9a1ff267cb3c01bdd3214b6c68aa6f63Ying Wang $(eval _fpf := $(wildcard $(foreach f, $(2), $(strip $(1))/$(f)))) \ 38988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_fpf),$(_fpf), \ 39088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(filter-out ./ .,$(1)), \ 39188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-parent-file,$(patsubst %/,%,$(dir $(1))),$(2)) \ 39288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 39388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 39488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 39588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 39688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 39788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 39888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Function we can evaluate to introduce a dynamic dependency 39988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 40088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 40188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-dependency 40288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(1): $(2) 40388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 40488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 40588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 40688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## The intermediates directory. Where object files go for 40788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a given target. We could technically get away without 40888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## the "_intermediates" suffix on the directory, but it's 40988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## nice to be able to grep for that string to find out if 41088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## anyone's abusing the system. 41188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 41288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 41388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): target class, like "APPS" 41488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): target name, like "NotePad" 41588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(3): if non-empty, this is a HOST target. 41688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(4): if non-empty, force the intermediates to be COMMON 41761d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang# $(5): if non-empty, force the intermedistes to be for the 2nd arch 41888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine intermediates-dir-for 41988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 42088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfClass := $(strip $(1))) \ 42188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_idfClass),, \ 42288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): Class not defined in call to intermediates-dir-for)) \ 42388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfName := $(strip $(2))) \ 42488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_idfName),, \ 42588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): Name not defined in call to intermediates-dir-for)) \ 42688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfPrefix := $(if $(strip $(3)),HOST,TARGET)) \ 427ae2986e51a52833deac6c03f55924e3271e3586dColin Cross $(eval _idf2ndArchPrefix := $(if $(strip $(5)),$(TARGET_2ND_ARCH_VAR_PREFIX))) \ 428a83940fa7851b35712e559be2246b56b5666b805Ying Wang $(if $(filter $(_idfPrefix)-$(_idfClass),$(COMMON_MODULE_CLASSES))$(4), \ 42988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfIntBase := $($(_idfPrefix)_OUT_COMMON_INTERMEDIATES)) \ 4306feb6d5607ce86a446645564212043964628f540Ying Wang ,$(if $(filter $(_idfClass),SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP),\ 43102e31d240a9044b54ee793902ad958894f84e7a1Colin Cross $(eval _idfIntBase := $($(_idf2ndArchPrefix)$(_idfPrefix)_OUT_INTERMEDIATES)) \ 43202e31d240a9044b54ee793902ad958894f84e7a1Colin Cross ,$(eval _idfIntBase := $($(_idfPrefix)_OUT_INTERMEDIATES)) \ 43302e31d240a9044b54ee793902ad958894f84e7a1Colin Cross ) \ 43488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 43588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(_idfIntBase)/$(_idfClass)/$(_idfName)_intermediates \ 43688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 43788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 43888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 43988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Uses LOCAL_MODULE_CLASS, LOCAL_MODULE, and LOCAL_IS_HOST_MODULE 44088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to determine the intermediates directory. 44188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 44288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): if non-empty, force the intermediates to be COMMON 44361d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang# $(2): if non-empty, force the intermediates to be for the 2nd arch 44488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine local-intermediates-dir 44588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 44688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(strip $(LOCAL_MODULE_CLASS)),, \ 44788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined before call to local-intermediates-dir)) \ 44888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(strip $(LOCAL_MODULE)),, \ 44988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): LOCAL_MODULE not defined before call to local-intermediates-dir)) \ 45061d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),$(LOCAL_IS_HOST_MODULE),$(1),$(2)) \ 45188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 45288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 45388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 45488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 455d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## The generated sources directory. Placing generated 456d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## source files directly in the intermediates directory 457d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## causes problems for multiarch builds, where there are 458d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## two intermediates directories for a single target. Put 459d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## them in a separate directory, and they will be copied to 460d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross## each intermediates directory automatically. 461d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross########################################################### 462d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross 463d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# $(1): target class, like "APPS" 464d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# $(2): target name, like "NotePad" 465d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# $(3): if non-empty, this is a HOST target. 466d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# $(4): if non-empty, force the generated sources to be COMMON 467d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossdefine generated-sources-dir-for 468d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross$(strip \ 469d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(eval _idfClass := $(strip $(1))) \ 470d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(if $(_idfClass),, \ 471d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(error $(LOCAL_PATH): Class not defined in call to generated-sources-dir-for)) \ 472d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(eval _idfName := $(strip $(2))) \ 473d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(if $(_idfName),, \ 474d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(error $(LOCAL_PATH): Name not defined in call to generated-sources-dir-for)) \ 475d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(eval _idfPrefix := $(if $(strip $(3)),HOST,TARGET)) \ 476d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(if $(filter $(_idfPrefix)-$(_idfClass),$(COMMON_MODULE_CLASSES))$(4), \ 477d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(eval _idfIntBase := $($(_idfPrefix)_OUT_GEN_COMMON)) \ 478d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross , \ 479d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(eval _idfIntBase := $($(_idfPrefix)_OUT_GEN)) \ 480d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross ) \ 481d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(_idfIntBase)/$(_idfClass)/$(_idfName)_intermediates \ 482d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross) 483d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossendef 484d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross 485d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# Uses LOCAL_MODULE_CLASS, LOCAL_MODULE, and LOCAL_IS_HOST_MODULE 486d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# to determine the generated sources directory. 487d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# 488d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross# $(1): if non-empty, force the intermediates to be COMMON 489d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossdefine local-generated-sources-dir 490d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross$(strip \ 491d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(if $(strip $(LOCAL_MODULE_CLASS)),, \ 492d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined before call to local-generated-sources-dir)) \ 493d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(if $(strip $(LOCAL_MODULE)),, \ 494d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(error $(LOCAL_PATH): LOCAL_MODULE not defined before call to local-generated-sources-dir)) \ 495d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross $(call generated-sources-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),$(LOCAL_IS_HOST_MODULE),$(1)) \ 496d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross) 497d826264621a2c3d27228b395bc36edf5510bcc49Colin Crossendef 498d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross 499d826264621a2c3d27228b395bc36edf5510bcc49Colin Cross########################################################### 50088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "path/to/libXXX.so" to "-lXXX". 50188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Any "path/to/libXXX.a" elements pass through unchanged. 50288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 50388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 50488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-libraries 50588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach so,$(filter %.so,$(1)),-l$(patsubst lib%.so,%,$(notdir $(so))))\ 50688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out %.so,$(1)) 50788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 50888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 50988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: change users to call the common version. 51088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-host-libraries 51188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call normalize-libraries,$(1)) 51288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 51388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 51488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-target-libraries 51588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call normalize-libraries,$(1)) 51688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 51788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 51888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 51988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert a list of short module names (e.g., "framework", "Browser") 52088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## into the list of files that are built for those modules. 52188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## NOTE: this won't return reliable results until after all 52288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## sub-makefiles have been included. 52388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): target list 52488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 52588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 52688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-built-files 52788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach module,$(1),$(ALL_MODULES.$(module).BUILT)) 52888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 52988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 53088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 53188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert a list of short modules names (e.g., "framework", "Browser") 53288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## into the list of files that are installed for those modules. 53388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## NOTE: this won't return reliable results until after all 53488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## sub-makefiles have been included. 53588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): target list 53688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 53788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 53888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-installed-files 53988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach module,$(1),$(ALL_MODULES.$(module).INSTALLED)) 54088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 54188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 54288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 54364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Convert a list of short modules names (e.g., "framework", "Browser") 54464d85d0d827489c514f6aec075482563c80cda73Joe Onorato## into the list of files that should be used when linking 54564d85d0d827489c514f6aec075482563c80cda73Joe Onorato## against that module as a public API. 54664d85d0d827489c514f6aec075482563c80cda73Joe Onorato## TODO: Allow this for more than JAVA_LIBRARIES modules 54764d85d0d827489c514f6aec075482563c80cda73Joe Onorato## NOTE: this won't return reliable results until after all 54864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## sub-makefiles have been included. 54964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): target list 55064d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 55164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 55264d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine module-stubs-files 55364d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(foreach module,$(1),$(ALL_MODULES.$(module).STUBS)) 55464d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 55564d85d0d827489c514f6aec075482563c80cda73Joe Onorato 55664d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 55764d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Evaluates to the timestamp file for a doc module, which 55864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## is the dependency that should be used. 55964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): doc module 56064d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 56164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 56264d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine doc-timestamp-for 56364d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(OUT_DOCS)/$(strip $(1))-timestamp 56464d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 56564d85d0d827489c514f6aec075482563c80cda73Joe Onorato 56664d85d0d827489c514f6aec075482563c80cda73Joe Onorato 56764d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 568912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang## Convert "core ext framework" to "out/.../javalib.jar ..." 56988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): library list 57088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(2): Non-empty if IS_HOST_MODULE 57188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 57288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 57388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 57488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 57588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-dir 57688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call intermediates-dir-for, \ 577912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang JAVA_LIBRARIES,$(1),$(2),COMMON) 57888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 57988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 58088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 58188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 58288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-full-classes.jar 583912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang$(call _java-lib-dir,$(1),$(2))/classes$(COMMON_JAVA_PACKAGE_SUFFIX) 58488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 58588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 58688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name list 58788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 58888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine java-lib-files 58988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach lib,$(1),$(call _java-lib-full-classes.jar,$(lib),$(2))) 59088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 59188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 59288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 59388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 59488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-full-dep 59545150f8b895d3256e83bc53219e393ab91d2ef20Ying Wang$(call _java-lib-dir,$(1),$(2))/$(if $(2),javalib,classes)$(COMMON_JAVA_PACKAGE_SUFFIX) 59688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 59788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 59888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name list 59988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 60088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine java-lib-deps 60188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach lib,$(1),$(call _java-lib-full-dep,$(lib),$(2))) 60288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 60388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 60488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 6058dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## Run rot13 on a string 6068dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## $(1): the string. Must be one line. 6078dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 6088dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratodefine rot13 6098dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato$(shell echo $(1) | tr 'a-zA-Z' 'n-za-mN-ZA-M') 6108dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratoendef 6118dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 6128dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 6138dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 6148dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## Returns true if $(1) and $(2) are equal. Returns 6158dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## the empty string if they are not equal. 6168dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 6178dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratodefine streq 6188dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato$(strip $(if $(strip $(1)),\ 6198dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(strip $(2)),\ 6208dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(filter-out __,_$(subst $(strip $(1)),,$(strip $(2)))$(subst $(strip $(2)),,$(strip $(1)))_),,true), \ 6218dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato ),\ 6228dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(strip $(2)),\ 6238dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato ,\ 6248dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato true)\ 6258dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato )) 6268dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratoendef 6278dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 6288dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 62988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "a b c" into "a:b:c" 63088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 63188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-path-list 63288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(subst $(space),:,$(strip $(1))) 63388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 63488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 63588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 63664d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Read the word out of a colon-separated list of words. 63764d85d0d827489c514f6aec075482563c80cda73Joe Onorato## This has the same behavior as the built-in function 63864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(word n,str). 63964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 64064d85d0d827489c514f6aec075482563c80cda73Joe Onorato## The individual words may not contain spaces. 64164d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 64264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): 1 based index 64364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(2): value of the form a:b:c... 64464d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 64564d85d0d827489c514f6aec075482563c80cda73Joe Onorato 64664d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine word-colon 64764d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(word $(1),$(subst :,$(space),$(2))) 64864d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 64964d85d0d827489c514f6aec075482563c80cda73Joe Onorato 65064d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 65188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "a=b c= d e = f" into "a=b c=d e=f" 65288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 65388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): list to collapse 65488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(2): if set, separator word; usually "=", ":", or ":=" 65588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Defaults to "=" if not set. 65688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 65788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 65888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine collapse-pairs 65988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(eval _cpSEP := $(strip $(if $(2),$(2),=)))\ 66088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(subst $(space)$(_cpSEP)$(space),$(_cpSEP),$(strip \ 66188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(subst $(_cpSEP), $(_cpSEP) ,$(1)))) 66288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 66388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 66488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 6657e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## Given a list of pairs, if multiple pairs have the same 6667e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## first components, keep only the first pair. 6677e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## 6687e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## $(1): list of pairs 6697e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## $(2): the separator word, such as ":", "=", etc. 6707e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wangdefine uniq-pairs-by-first-component 6717e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _upbfc_fc_set :=)\ 6727e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(strip $(foreach w,$(1), $(eval _first := $(word 1,$(subst $(2),$(space),$(w))))\ 6737e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang $(if $(filter $(_upbfc_fc_set),$(_first)),,$(w)\ 6747e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang $(eval _upbfc_fc_set += $(_first)))))\ 6757e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _upbfc_fc_set :=)\ 6767e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _first:=) 6777e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wangendef 6787e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang 6797e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang########################################################### 68088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## MODULE_TAG set operations 68188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 68288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 68388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given a list of tags, return the targets that specify 68488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any of those tags. 68588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): tag list 68688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine modules-for-tag-list 68788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(sort $(foreach tag,$(1),$(ALL_MODULE_TAGS.$(tag)))) 68888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 68988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 69088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Same as modules-for-tag-list, but operates on 69188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ALL_MODULE_NAME_TAGS. 69288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): tag list 69388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-names-for-tag-list 69488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(sort $(foreach tag,$(1),$(ALL_MODULE_NAME_TAGS.$(tag)))) 69588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 69688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 69788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given an accept and reject list, find the matching 69888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# set of targets. If a target has multiple tags and 69988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any of them are rejected, the target is rejected. 70088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Reject overrides accept. 70188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): list of tags to accept 70288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): list of tags to reject 70388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO(dbort): do $(if $(strip $(1)),$(1),$(ALL_MODULE_TAGS)) 70475127b769e20490f3348802e6b708d67c60c2b04Jean-Baptiste Queru#TODO(jbq): as of 20100106 nobody uses the second parameter 70588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine get-tagged-modules 70688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out \ 70788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call modules-for-tag-list,$(2)), \ 70888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call modules-for-tag-list,$(1))) 70988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 71088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 71164d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 71264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Append a leaf to a base path. Properly deals with 71364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## base paths ending in /. 71464d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 71564d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): base path 71664d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(2): leaf path 71764d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 71864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 71964d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine append-path 72064d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(subst //,/,$(1)/$(2)) 72164d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 72264d85d0d827489c514f6aec075482563c80cda73Joe Onorato 72388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 72488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 72588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Package filtering 72688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 72788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 72888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given a list of installed modules (short or long names) 72988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# return a list of the packages (yes, .apk packages, not 73088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# modules in general) that are overridden by this list and, 73188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# therefore, should not be installed. 73288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): mixed list of installed modules 73388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: This is fragile; find a reliable way to get this information. 73488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _get-package-overrides 73588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Discard any words containing slashes, unless they end in .apk, \ 73688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### in which case trim off the directory component and the suffix. \ 73788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### If there are no slashes, keep the entire word.) 73888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(subst /,@@@ @@@,$(1))) 73988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := \ 74088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(filter %.apk,$(_gpo_names)) \ 74188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(filter-out %@@@ @@@%,$(_gpo_names))) 74288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(patsubst %.apk,%,$(_gpo_names))) 74388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(patsubst @@@%,%,$(_gpo_names))) 74488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 74588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Remove any remaining words that contain dots.) 74688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(subst .,@@@ @@@,$(_gpo_names))) 74788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(filter-out %@@@ @@@%,$(_gpo_names))) 74888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 74988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Now we have a list of any words that could possibly refer to \ 75088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### packages, although there may be words that do not. Only \ 75188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### real packages will be present under PACKAGES.*, though.) 75288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(foreach _gpo_name,$(_gpo_names),$(PACKAGES.$(_gpo_name).OVERRIDES)) 75388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 75488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 75588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine get-package-overrides 756d7a1a9b49b9d6e8331bcc5b2ece84903a94553deConley Owens$(sort $(strip $(call _get-package-overrides,$(1)))) 75788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 75888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 75988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 76088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Output the command lines, or not 76188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 76288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 76388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(strip $(SHOW_COMMANDS)),) 76488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine pretty 76588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo $1 76688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 76788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecthide := @ 76888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 76988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine pretty 77088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 77188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecthide := 77288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 77388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 77488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 77588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Dump the variables that are associated with targets 77688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 77788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 77888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine dump-module-variables 77988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo all_dependencies=$^ 78088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_YACCFLAGS=$(PRIVATE_YACCFLAGS); 78188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_CFLAGS=$(PRIVATE_CFLAGS); 78288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_CPPFLAGS=$(PRIVATE_CPPFLAGS); 78388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_DEBUG_CFLAGS=$(PRIVATE_DEBUG_CFLAGS); 78488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_C_INCLUDES=$(PRIVATE_C_INCLUDES); 78588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_LDFLAGS=$(PRIVATE_LDFLAGS); 78688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_LDLIBS=$(PRIVATE_LDLIBS); 78788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ARFLAGS=$(PRIVATE_ARFLAGS); 78888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_AAPT_FLAGS=$(PRIVATE_AAPT_FLAGS); 78988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_DX_FLAGS=$(PRIVATE_DX_FLAGS); 790f184a0f26db350693902ab623c414974978f4ac4Brian Carlstrom@echo PRIVATE_JAVACFLAGS=$(PRIVATE_JAVACFLAGS); 79188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_JAVA_LIBRARIES=$(PRIVATE_JAVA_LIBRARIES); 79288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_SHARED_LIBRARIES=$(PRIVATE_ALL_SHARED_LIBRARIES); 79388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_STATIC_LIBRARIES=$(PRIVATE_ALL_STATIC_LIBRARIES); 79488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_WHOLE_STATIC_LIBRARIES=$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES); 79588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_OBJECTS=$(PRIVATE_ALL_OBJECTS); 796703e7c6d50a5bddf0fb057a1a26618e2f7138c31Jeff Brown@echo PRIVATE_NO_CRT=$(PRIVATE_NO_CRT); 79788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 79888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 79988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 80088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for using sed to replace given variable values 80188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 80288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 80388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-variables 80488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 80588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Sed: $(if $(PRIVATE_MODULE),$(PRIVATE_MODULE),$@) <= $<" 80688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) sed $(foreach var,$(REPLACE_VARS),-e "s/{{$(var)}}/$(subst /,\/,$(PWD)/$($(var)))/g") $< >$@ 80788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ "$(suffix $@)" = ".sh" ]; then chmod a+rx $@; fi 80888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 80988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 81088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 81188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 81288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for munging the dependency files GCC generates 81388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 814c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang# $(1): the input .d file 815c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang# $(2): the output .P file 816c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wangdefine transform-d-to-p-args 817c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang$(hide) cp $(1) $(2); \ 818c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 819c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang -e '/^$$/ d' -e 's/$$/ :/' < $(1) >> $(2); \ 820c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang rm -f $(1) 821c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wangendef 82288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 82388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-d-to-p 824c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang$(call transform-d-to-p-args,$(@:%.o=%.d),$(@:%.o=%.P)) 82588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 82688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 82788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 82888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running lex 82988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 83088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 83188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-l-to-cpp 83288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 83388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Lex: $(PRIVATE_MODULE) <= $<" 83488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(LEX) -o$@ $< 83588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 83688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 83788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 83888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running yacc 83988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 84088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Because the extension of c++ files can change, the 84188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## extension must be specified in $1. 84288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## E.g, "$(call transform-y-to-cpp,.cpp)" 84388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 84488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 84588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-y-to-cpp 84688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 84788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Yacc: $(PRIVATE_MODULE) <= $<" 84888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(YACC) $(PRIVATE_YACCFLAGS) -o $@ $< 84988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecttouch $(@:$1=$(YACC_HEADER_SUFFIX)) 85088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#ifndef '$(@F:$1=_h) > $(@:$1=.h) 85188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#define '$(@F:$1=_h) >> $(@:$1=.h) 85288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectcat $(@:$1=$(YACC_HEADER_SUFFIX)) >> $(@:$1=.h) 85388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#endif' >> $(@:$1=.h) 85488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 85588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8560bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 857a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray## Commands to compile RenderScript to Java 8580bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 8590bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 8600bd59a0a58f9891926ff6faf74a78307230d705bYing Wangdefine transform-renderscripts-to-java-and-bc 8610bd59a0a58f9891926ff6faf74a78307230d705bYing Wang@echo "RenderScript: $(PRIVATE_MODULE) <= $(PRIVATE_RS_SOURCE_FILES)" 8620bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) rm -rf $(PRIVATE_RS_OUTPUT_DIR) 8630bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(PRIVATE_RS_OUTPUT_DIR)/res/raw 8640bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(PRIVATE_RS_OUTPUT_DIR)/src 8657d83ef8ff7679239063bb8484f0c1fdcf31abf8bYing Wang$(hide) $(PRIVATE_RS_CC) \ 866ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang -o $(PRIVATE_RS_OUTPUT_DIR)/res/raw \ 867ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang -p $(PRIVATE_RS_OUTPUT_DIR)/src \ 86824e1c018ba83ce6465aa9faf0347071f271d2425Ying Wang -d $(PRIVATE_RS_OUTPUT_DIR) \ 86924e1c018ba83ce6465aa9faf0347071f271d2425Ying Wang -a $@ -MD \ 870c963eae72ca502ac847fa03e87644c660b868295Stephen Hines $(addprefix -target-api , $(PRIVATE_RS_TARGET_API)) \ 871914f7a2990ef0e02d4632dd77076c6c7bb11e6ddStephen Hines $(PRIVATE_RS_FLAGS) \ 872512802772a2516b817ab463659b62c2e6fa7442cYing Wang $(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \ 873ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang $(PRIVATE_RS_SOURCE_FILES) 8740bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(dir $@) 8750bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) touch $@ 8760bd59a0a58f9891926ff6faf74a78307230d705bYing Wangendef 8770bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 878e719f28d938d3290ac591769a15b0b5e9e64fabbStephen Hinesdefine transform-bc-to-so 8799ac9b53dc6ef05797619fb1ae65613e929914959Stephen Hines@echo "Renderscript compatibility: $(notdir $@) <= $(notdir $<)" 880e719f28d938d3290ac591769a15b0b5e9e64fabbStephen Hines$(hide) mkdir -p $(dir $@) 881f692513071705e6ea28b3edd47898e12fa67a6ffStephen Hines$(hide) $(BCC_COMPAT) -O3 -o $(dir $@)/$(notdir $(<:.bc=.o)) -fPIC -shared \ 88252626d2a7b4767905e8a369ddc8316c1290ad156Stephen Hines -rt-path $(RS_PREBUILT_CLCORE) -mtriple $(RS_COMPAT_TRIPLE) $< 8837d6ec719653d2e26e2845944f6a46fd950c1ddf9Stephen Hines$(hide) $(PRIVATE_CXX) -shared -Wl,-soname,$(notdir $@) -nostdlib \ 884f692513071705e6ea28b3edd47898e12fa67a6ffStephen Hines -Wl,-rpath,\$$ORIGIN/../lib \ 8859541f5864d2f9c11fe3e06fcee8e1ca2bdd2082fStephen Hines $(dir $@)/$(notdir $(<:.bc=.o)) \ 8861a6f09a48c2047a6611b3f01088530b2ec895f7bTim Murray $(RS_PREBUILT_COMPILER_RT) \ 887903e2dd014bd479816e5b11fe5f985068549edc9Ying Wang -o $@ $(TARGET_GLOBAL_LDFLAGS) -L prebuilts/gcc/ \ 8881a6f09a48c2047a6611b3f01088530b2ec895f7bTim Murray -L $(TARGET_OUT_INTERMEDIATE_LIBRARIES) $(RS_PREBUILT_LIBPATH) \ 8898db4ccea4aa95d80c7c16b9f49d96d07a63c3945Stephen Hines -lRSSupport -lm -lc 890e719f28d938d3290ac591769a15b0b5e9e64fabbStephen Hinesendef 891e719f28d938d3290ac591769a15b0b5e9e64fabbStephen Hines 892a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray########################################################### 893a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray## Commands to compile RenderScript to C++ 894a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray########################################################### 895a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray 896a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murraydefine transform-renderscripts-to-cpp-and-bc 897a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray@echo "RenderScript: $(PRIVATE_MODULE) <= $(PRIVATE_RS_SOURCE_FILES)" 898a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(hide) rm -rf $(PRIVATE_RS_OUTPUT_DIR) 899a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(hide) mkdir -p $(PRIVATE_RS_OUTPUT_DIR)/ 900a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(hide) $(PRIVATE_RS_CC) \ 901a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray -o $(PRIVATE_RS_OUTPUT_DIR)/ \ 902a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray -d $(PRIVATE_RS_OUTPUT_DIR) \ 903a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray -a $@ -MD \ 904a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray -reflect-c++ \ 905a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray $(PRIVATE_RS_FLAGS) \ 90681ab8339feea95db1caaaa57cc8b3bfa0852dc26Ying Wang $(addprefix -I , $(PRIVATE_RS_INCLUDES)) \ 907a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray $(PRIVATE_RS_SOURCE_FILES) 908a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(hide) mkdir -p $(dir $@) 909a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray$(hide) touch $@ 910a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murrayendef 911a7aa8005d28e3e7e5a6a4f7b9ad2c94097436d6aTim Murray 91288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 91388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 91488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running aidl 91588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 91688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 91788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-aidl-to-java 91888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 91988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Aidl: $(PRIVATE_MODULE) <= $<" 92088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(AIDL) -d$(patsubst %.java,%.P,$@) $(PRIVATE_AIDL_FLAGS) $< $@ 92188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 92288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#$(AIDL) $(PRIVATE_AIDL_FLAGS) $< - | indent -nut -br -npcs -l1000 > $@ 92388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 92488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 9259bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker########################################################### 9269bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker## Commands for running java-event-log-tags.py 9279bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker########################################################### 9289bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker 9299bd4962af87257c6a97e9026af7e4764394412c2Doug Zongkerdefine transform-logtags-to-java 9309bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker@mkdir -p $(dir $@) 9319bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker@echo "logtags: $@ <= $<" 932abfbbe2e1dc0d8dc01b87492427c670dab70f81fDoug Zongker$(hide) $(JAVATAGS) -o $@ $^ 9339bd4962af87257c6a97e9026af7e4764394412c2Doug Zongkerendef 9349bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker 93588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 93688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 937a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Commands for running protoc to compile .proto into .java 938a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 939a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 940a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine transform-proto-to-java 941a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(dir $@) 942a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@echo "Protoc: $@ <= $(PRIVATE_PROTO_SRC_FILES)" 943a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@rm -rf $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) 944a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) 945fc2bad5c36c72f8c2f0bfb869e642b85ccd1b2a1Ben Murdoch$(hide) for f in $(PRIVATE_PROTO_SRC_FILES); do \ 946fc2bad5c36c72f8c2f0bfb869e642b85ccd1b2a1Ben Murdoch $(PROTOC) \ 94728b46fc16c026365378909f1cc88fad0d3b2395cUlas Kirazci $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ 9486e485b545adc2476fed23eedaec8f121fad191b2Ulas Kirazci $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)="$(PRIVATE_PROTO_JAVA_OUTPUT_PARAMS):$(PRIVATE_PROTO_JAVA_OUTPUT_DIR)" \ 949fc2bad5c36c72f8c2f0bfb869e642b85ccd1b2a1Ben Murdoch $(PRIVATE_PROTOC_FLAGS) \ 950fc2bad5c36c72f8c2f0bfb869e642b85ccd1b2a1Ben Murdoch $$f || exit 33; \ 951fc2bad5c36c72f8c2f0bfb869e642b85ccd1b2a1Ben Murdoch done 952a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(hide) touch $@ 953a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 954a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 955a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###################################################################### 956a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Commands for running protoc to compile .proto into .pb.cc and .pb.h 957a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###################################################################### 958a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine transform-proto-to-cc 959a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(dir $@) 960a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@echo "Protoc: $@ <= $<" 961a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(hide) $(PROTOC) \ 962a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ 96333c0d952fcba713f00c1cafc8213274e642aee4cYing Wang $(PRIVATE_PROTOC_FLAGS) \ 964a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang --cpp_out=$(PRIVATE_PROTO_CC_OUTPUT_DIR) $< 965a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 966a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 967a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 968a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 96988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a C++ file 97088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 97188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 97288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-cpp-to-o 97388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 97488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target $(PRIVATE_ARM_MODE) C++: $(PRIVATE_MODULE) <= $<" 97588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CXX) \ 976ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 97785f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 9784761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(addprefix -isystem ,\ 9794761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 9804761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 981ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(PRIVATE_TARGET_PROJECT_INCLUDES) \ 9824761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(PRIVATE_TARGET_C_INCLUDES)))) \ 98388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 98488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 9851a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CFLAGS) \ 9861a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CPPFLAGS) \ 98788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ARM_CFLAGS) \ 98888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 9899a8ecf970bf53f7f43a8722212ff4b217a6bb403Doug Kwan $(PRIVATE_RTTI_FLAG) \ 99088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 99188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CPPFLAGS) \ 99288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 99360fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 9943a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 99588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 99688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 99788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 99888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 99988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a C file 100088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 100188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 100288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): extra flags 100388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-or-s-to-o-no-deps 100488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 100588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CC) \ 1006ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 100785f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 10084761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(addprefix -isystem ,\ 10094761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 10104761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 1011ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(PRIVATE_TARGET_PROJECT_INCLUDES) \ 10124761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(PRIVATE_TARGET_C_INCLUDES)))) \ 101388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 101488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 10151a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CFLAGS) \ 101688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ARM_CFLAGS) \ 101788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 101865d785274e7898d2dc89e7fffb26715f081ff284Ying Wang $(1) \ 101960fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 102088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 102188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 102288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-to-o-no-deps 102388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target $(PRIVATE_ARM_MODE) C: $(PRIVATE_MODULE) <= $<" 10247429e21c2e64c1b27787e3768c30207532b56296Ying Wang$(call transform-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_CONLYFLAGS) $(PRIVATE_DEBUG_CFLAGS)) 102588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 102688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 102788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-s-to-o-no-deps 102888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target asm: $(PRIVATE_MODULE) <= $<" 102988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-c-or-s-to-o-no-deps, $(PRIVATE_ASFLAGS)) 103088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 103188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 103288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-to-o 103388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-c-to-o-no-deps) 10343a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 103588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 103688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 103788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-s-to-o 103888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-s-to-o-no-deps) 10393a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 104088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 104188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 10427b913ce6fa5030519121757bf5b258efba51cc06Ying Wang# YASM compilation 10437b913ce6fa5030519121757bf5b258efba51cc06Ying Wangdefine transform-asm-to-o 10447b913ce6fa5030519121757bf5b258efba51cc06Ying Wang@mkdir -p $(dir $@) 10457b913ce6fa5030519121757bf5b258efba51cc06Ying Wang$(hide) $(YASM) \ 10467b913ce6fa5030519121757bf5b258efba51cc06Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 10477b913ce6fa5030519121757bf5b258efba51cc06Ying Wang -f elf32 -m x86 \ 10487b913ce6fa5030519121757bf5b258efba51cc06Ying Wang $(PRIVATE_ASFLAGS) \ 10497b913ce6fa5030519121757bf5b258efba51cc06Ying Wang -o $@ $< 10507b913ce6fa5030519121757bf5b258efba51cc06Ying Wangendef 10517b913ce6fa5030519121757bf5b258efba51cc06Ying Wang 105288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 10535dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## Commands for running gcc to compile an Objective-C file 10545dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## This should never happen for target builds but this 10555dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## will error at build time. 10565dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 10575dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10585dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-m-to-o-no-deps 10595dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner@echo "target ObjC: $(PRIVATE_MODULE) <= $<" 106065d785274e7898d2dc89e7fffb26715f081ff284Ying Wang$(call transform-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS)) 10615dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 10625dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10635dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-m-to-o 10645dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-m-to-o-no-deps) 10653a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 10665dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 10675dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10685dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 106988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a host C++ file 107088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 107188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 107288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-cpp-to-o 107388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 107488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host C++: $(PRIVATE_MODULE) <= $<" 107588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CXX) \ 1076ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 107785f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 1078ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -isystem ,\ 107988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1080ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 1081ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_PROJECT_INCLUDES) \ 1082e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_C_INCLUDES)))) \ 108388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 108488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1085e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_GLOBAL_CFLAGS) \ 1086e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_GLOBAL_CPPFLAGS) \ 108788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 108888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 108988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CPPFLAGS) \ 109088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 109160fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 109288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 109388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 109488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 109588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 109688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 109788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a host C file 109888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 109988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 110088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): extra flags 110188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-or-s-to-o-no-deps 110288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 110388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CC) \ 1104ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 110585f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 1106ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -isystem ,\ 110788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1108ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 1109ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_PROJECT_INCLUDES) \ 1110e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_C_INCLUDES)))) \ 111188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 111288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1113e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_GLOBAL_CFLAGS) \ 111488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 111588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(1) \ 111660fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 111788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 111888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 111988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-to-o-no-deps 112088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host C: $(PRIVATE_MODULE) <= $<" 11217429e21c2e64c1b27787e3768c30207532b56296Ying Wang$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_CONLYFLAGS) $(PRIVATE_DEBUG_CFLAGS)) 112288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 112388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 112488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-s-to-o-no-deps 112588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host asm: $(PRIVATE_MODULE) <= $<" 112688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_ASFLAGS)) 112788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 112888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 112988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-to-o 113088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-host-c-to-o-no-deps) 113188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 113288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 113388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 113488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-s-to-o 113588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-host-s-to-o-no-deps) 113688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 11375dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 11385dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 11395dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 11405dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## Commands for running gcc to compile a host Objective-C file 11415dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 11425dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 11435dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-host-m-to-o-no-deps 11445dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner@echo "host ObjC: $(PRIVATE_MODULE) <= $<" 114565d785274e7898d2dc89e7fffb26715f081ff284Ying Wang$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_CFLAGS) $(PRIVATE_DEBUG_CFLAGS)) 11465dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 11475dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 11485ca286d58bc2f8e2445ae77d7ca8b4046a016988David 'Digit' Turnerdefine transform-host-m-to-o 11495dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-host-m-to-o-no-deps) 11505dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-d-to-p) 115188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 115288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 115388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 115488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running ar 115588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 115688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1157e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangdefine _concat-if-arg2-not-empty 1158e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(if $(2),$(hide) $(1) $(2)) 1159e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangendef 1160e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang 1161e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# Split long argument list into smaller groups and call the command repeatedly 1162bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)# Call the command at least once even if there are no arguments, as otherwise 1163bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)# the output file won't be created. 1164e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# 1165e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# $(1): the command without arguments 1166e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# $(2): the arguments 1167e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangdefine split-long-arguments 1168bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)$(hide) $(1) $(wordlist 1,500,$(2)) 1169e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 501,1000,$(2))) 1170e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1001,1500,$(2))) 1171e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1501,2000,$(2))) 1172e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 2001,2500,$(2))) 1173e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 2501,3000,$(2))) 1174e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 3001,99999,$(2))) 1175e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangendef 1176e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang 1177a02d3d9f746a0cd267bd793fca256f355111484bYing Wang# $(1): the full path of the source static library. 1178a02d3d9f746a0cd267bd793fca256f355111484bYing Wangdefine _extract-and-include-single-target-whole-static-lib 1179a02d3d9f746a0cd267bd793fca256f355111484bYing Wang@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(1)]" 1180a02d3d9f746a0cd267bd793fca256f355111484bYing Wang$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\ 1181a02d3d9f746a0cd267bd793fca256f355111484bYing Wang rm -rf $$ldir; \ 1182a02d3d9f746a0cd267bd793fca256f355111484bYing Wang mkdir -p $$ldir; \ 1183a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist=; \ 11846feb6d5607ce86a446645564212043964628f540Ying Wang for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) t $(1)`; do \ 118561d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) p $(1) $$f > $$ldir/$$f; \ 1186a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist="$$filelist $$ldir/$$f"; \ 1187a02d3d9f746a0cd267bd793fca256f355111484bYing Wang done ; \ 118861d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ 118961d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang $(PRIVATE_ARFLAGS) $@ $$filelist 1190a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 1191a02d3d9f746a0cd267bd793fca256f355111484bYing Wangendef 1192a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 11933d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteindefine extract-and-include-target-whole-static-libs 119446e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \ 1195a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(call _extract-and-include-single-target-whole-static-lib, $(lib))) 119646e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavinendef 119746e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin 119888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Explicitly delete the archive first so that ar doesn't 119988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# try to add to an existing archive. 120088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-lib 120188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 120288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@rm -f $@ 12033d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(extract-and-include-target-whole-static-libs) 120446e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin@echo "target StaticLib: $(PRIVATE_MODULE) ($@)" 12056feb6d5607ce86a446645564212043964628f540Ying Wang$(call split-long-arguments,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) \ 12066feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ 120761d499b965e3314308b9510f6b6d4c8919bb0b3aYing Wang $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) 120888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 120988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 121088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 121188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running host ar 121288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 121388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1214a02d3d9f746a0cd267bd793fca256f355111484bYing Wang# $(1): the full path of the source static library. 1215a02d3d9f746a0cd267bd793fca256f355111484bYing Wangdefine _extract-and-include-single-host-whole-static-lib 1216a02d3d9f746a0cd267bd793fca256f355111484bYing Wang@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(1)]" 1217a02d3d9f746a0cd267bd793fca256f355111484bYing Wang$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\ 1218a02d3d9f746a0cd267bd793fca256f355111484bYing Wang rm -rf $$ldir; \ 1219a02d3d9f746a0cd267bd793fca256f355111484bYing Wang mkdir -p $$ldir; \ 1220a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist=; \ 12216feb6d5607ce86a446645564212043964628f540Ying Wang for f in `$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) t $(1) | \grep '\.o$$'`; do \ 12226feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) p $(1) $$f > $$ldir/$$f; \ 1223a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist="$$filelist $$ldir/$$f"; \ 1224a02d3d9f746a0cd267bd793fca256f355111484bYing Wang done ; \ 12256feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \ 12266feb6d5607ce86a446645564212043964628f540Ying Wang $(PRIVATE_ARFLAGS) $@ $$filelist 1227a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 1228a02d3d9f746a0cd267bd793fca256f355111484bYing Wangendef 1229a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 12303d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteindefine extract-and-include-host-whole-static-libs 12313d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \ 1232a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(call _extract-and-include-single-host-whole-static-lib, $(lib))) 12333d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteinendef 12343d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein 123588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Explicitly delete the archive first so that ar doesn't 123688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# try to add to an existing archive. 123788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-static-lib 123888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 123988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@rm -f $@ 12403d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(extract-and-include-host-whole-static-libs) 12416bffc91c5d85ee828b37fa56efb7d87a76214747Dan Bornstein@echo "host StaticLib: $(PRIVATE_MODULE) ($@)" 12426feb6d5607ce86a446645564212043964628f540Ying Wang$(call split-long-arguments,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_AR) \ 12436feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_ARFLAGS) \ 12446feb6d5607ce86a446645564212043964628f540Ying Wang $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) 124588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 124688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 124788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 124888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 124988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a shared library or package 125088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 125188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 125288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ld just seems to be so finicky with command order that we allow 125388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# it to be overriden en-masse see combo/linux-arm.make for an example. 125488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(HOST_CUSTOM_LD_COMMAND),true) 125588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-shared-lib-inner 12563a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 12576feb6d5607ce86a446645564212043964628f540Ying Wang -Wl,-rpath-link=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATE_LIBRARIES) \ 12586feb6d5607ce86a446645564212043964628f540Ying Wang -Wl,-rpath,\$$ORIGIN/../$(notdir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)) \ 125988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -shared -Wl,-soname,$(notdir $@) \ 12606feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LD_DIRS) \ 126188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1262e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ 126388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 1264a424bf781c1abd946acbc46aeb31bc1b1ef3e62eTorne (Richard Coles) $(PRIVATE_LDFLAGS) \ 126588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 126688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 126788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 126888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1269fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 127088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1271fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 127288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 127388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 127488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 127588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 127688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 127788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 127888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-shared-lib 127988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 128088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host SharedLib: $(PRIVATE_MODULE) ($@)" 12813a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-shared-lib-inner) 128288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 128388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 128488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-package 128588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 128688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Package: $(PRIVATE_MODULE) ($@)" 12873a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-shared-lib-inner) 128888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 128988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 129088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 129188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 129288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a shared library or package 129388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 129488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 129588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >$@.vers "{"; \ 129688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " global:"; \ 129788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#$(BUILD_SYSTEM)/filter_symbols.sh $(TARGET_NM) " " ";" $(filter %.o,$^) | sort -u >>$@.vers; \ 129888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " local:"; \ 129988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " *;"; \ 130088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers "};"; \ 130188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 130288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -Wl,--version-script=$@.vers \ 130388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 130488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ld just seems to be so finicky with command order that we allow 130588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# it to be overriden en-masse see combo/linux-arm.make for an example. 130688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 130788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-shared-lib-inner 13083a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 13091a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 13109fb3526648a08d8d8c1e6325aeb3c6500bcd44c2Ying Wang -Wl,-rpath-link=$(PRIVATE_TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 131188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath,\$$ORIGIN/../lib \ 131204cf31597021af3cd045dd9c50d94a87d0394023Dan Albert -Wl,-shared -Wl,-soname,$(notdir $@) \ 131388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDFLAGS) \ 13141a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 131588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 131688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 131780e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 131888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1319fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 132088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1321fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 132288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 132388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 132488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 132588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 132688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 132788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 132888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-shared-lib 132988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 133088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target SharedLib: $(PRIVATE_MODULE) ($@)" 1331791fa6a9094dced42b4b292c163708838a8d059eYing Wang$($(PRIVATE_2ND_ARCH_VAR_PREFIX)transform-o-to-shared-lib-inner) 133288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 133388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 133488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 133588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 133688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for filtering a target executable or library 133788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 133888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1339ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wangifneq ($(TARGET_BUILD_VARIANT),user) 1340ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang TARGET_STRIP_EXTRA = && $(PRIVATE_OBJCOPY) --add-gnu-debuglink=$< $@ 1341ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang TARGET_STRIP_KEEP_SYMBOLS_EXTRA = --add-gnu-debuglink=$< 1342ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wangendif 1343ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang 134488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-to-stripped 134588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 134688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Strip: $(PRIVATE_MODULE) ($@)" 1347ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang$(hide) $(PRIVATE_STRIP) --strip-all $< -o $@ $(TARGET_STRIP_EXTRA) 134888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 134988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1350a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferrisdefine transform-to-stripped-keep-symbols 1351a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferris@mkdir -p $(dir $@) 1352a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferris@echo "target Strip (keep symbols): $(PRIVATE_MODULE) ($@)" 1353ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang$(hide) $(PRIVATE_OBJCOPY) \ 1354ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang `$(PRIVATE_READELF) -S $< | awk '/.debug_/ {print "-R " $$2}' | xargs` \ 1355ce1c596e1507295f3037e9fa7bf163fb2ab95a11Ying Wang $(TARGET_STRIP_KEEP_SYMBOLS_EXTRA) $< $@ 1356a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferrisendef 1357a6e2f9322c47ac02546aa436341fa42afd0000c5Christopher Ferris 135888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 135988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 136088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link an executable 136188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 136288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 136388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 136488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-executable-inner 13653a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 1366c6ffc00b9fa7898564139558a025d865bac37a38Ying Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 1367c6ffc00b9fa7898564139558a025d865bac37a38Ying Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 13689fb3526648a08d8d8c1e6325aeb3c6500bcd44c2Ying Wang -Wl,-rpath-link=$(PRIVATE_TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 136988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath,\$$ORIGIN/../lib \ 137088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDFLAGS) \ 137188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 137288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 137388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 137488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1375fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 137688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1377fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 137888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 137988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 138088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 138188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 138288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 138388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 138488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-executable 138588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 138688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Executable: $(PRIVATE_MODULE) ($@)" 138772b01d6121d7a80315df996690d4efde5219b899Ying Wang$($(PRIVATE_2ND_ARCH_VAR_PREFIX)transform-o-to-executable-inner) 138888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 138988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 139088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 139188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 139288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a statically linked 139388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## executable. In practice, we only use this on arm, so 139488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## the other platforms don't have the 139588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## transform-o-to-static-executable defined 139688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 139788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 139888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 139988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-executable-inner 140088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 140188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 140288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 140388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-executable 140488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 140588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target StaticExecutable: $(PRIVATE_MODULE) ($@)" 140672b01d6121d7a80315df996690d4efde5219b899Ying Wang$($(PRIVATE_2ND_ARCH_VAR_PREFIX)transform-o-to-static-executable-inner) 140788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 140888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 140988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 141088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 141188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a host executable 141288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 1413faf3d5ed0fe24acef0b14a1297d78058bcedb016Ying Wangifdef BUILD_HOST_static 1414faf3d5ed0fe24acef0b14a1297d78058bcedb016Ying WangHOST_FPIE_FLAGS := 1415faf3d5ed0fe24acef0b14a1297d78058bcedb016Ying Wangelse 1416908ab54fda172baa9a646259fafd8af35290f0a6Dan AlbertHOST_FPIE_FLAGS := -pie 1417a503fb362918363b28637b487eba83e9ad647cebStephen Hines# Force the correct entry point to workaround a bug in binutils that manifests with -pie 1418a503fb362918363b28637b487eba83e9ad647cebStephen Hinesifeq ($(HOST_OS),windows) 1419a503fb362918363b28637b487eba83e9ad647cebStephen HinesHOST_FPIE_FLAGS += -Wl,-e_mainCRTStartup 1420a503fb362918363b28637b487eba83e9ad647cebStephen Hinesendif 1421faf3d5ed0fe24acef0b14a1297d78058bcedb016Ying Wangendif 142288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 142388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(HOST_CUSTOM_LD_COMMAND),true) 142488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-executable-inner 14253a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 142688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 142788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 142888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 142988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1430fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 143188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1432fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 143388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 14346feb6d5607ce86a446645564212043964628f540Ying Wang -Wl,-rpath-link=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATE_LIBRARIES) \ 14356feb6d5607ce86a446645564212043964628f540Ying Wang -Wl,-rpath,\$$ORIGIN/../$(notdir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)) \ 14366feb6d5607ce86a446645564212043964628f540Ying Wang $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LD_DIRS) \ 1437d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1438e6f65438a45f0e1b519fb3cd2799f44ca87911a7Logan Chien $(PRIVATE_HOST_GLOBAL_LDFLAGS) \ 1439faf3d5ed0fe24acef0b14a1297d78058bcedb016Ying Wang $(HOST_FPIE_FLAGS) \ 1440d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens ) \ 1441a424bf781c1abd946acbc46aeb31bc1b1ef3e62eTorne (Richard Coles) $(PRIVATE_LDFLAGS) \ 144288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 144388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 144488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 144588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 144688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 144788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-executable 144888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 144988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Executable: $(PRIVATE_MODULE) ($@)" 14503a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-executable-inner) 145188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 145288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 145388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 145488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 145588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running javac to make .class files 145688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 145788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 145888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#@echo "Source intermediates dir: $(PRIVATE_SOURCE_INTERMEDIATES_DIR)" 145988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#@echo "Source intermediates: $$(find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java')" 146088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 146188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: Right now we generate the asset resources twice, first as part 146288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# of generating the Java classes, then at the end when packaging the final 146388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# assets. This should be changed to do one of two things: (1) Don't generate 146488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any resource files the first time, only create classes during that stage; 146588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# or (2) Don't use the -c flag with the second stage, instead taking the 146688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# resource files from the first stage as additional input. My original intent 146788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# was to use approach (2), but this requires a little more work in the tool. 146888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Maybe we should just use approach (1). 146988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 147088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# This rule creates the R.java and Manifest.java files, both of which 14714f1ab92aac00a73276793ed25af669d112618a32Ying Wang# are PRODUCT-neutral. Don't pass PRIVATE_PRODUCT_AAPT_CONFIG to this invocation. 147288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine create-resource-java-files 147388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(PRIVATE_SOURCE_INTERMEDIATES_DIR) 147488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $(PRIVATE_RESOURCE_PUBLICS_OUTPUT)) 1475c61d5932d3b1014352dd5cbcb2684a95b3e172a3Ying Wang$(hide) $(AAPT) package $(PRIVATE_AAPT_FLAGS) -m \ 14764f1ab92aac00a73276793ed25af669d112618a32Ying Wang $(eval # PRIVATE_PRODUCT_AAPT_CONFIG is intentionally missing-- see comment.) \ 147788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -J , $(PRIVATE_SOURCE_INTERMEDIATES_DIR)) \ 147888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \ 147988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -P , $(PRIVATE_RESOURCE_PUBLICS_OUTPUT)) \ 148088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -S , $(PRIVATE_RESOURCE_DIR)) \ 148188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -A , $(PRIVATE_ASSET_DIR)) \ 14829bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn $(addprefix -I , $(PRIVATE_AAPT_INCLUDES)) \ 14832daa2b3b059ac755e8280741b23d65360ae233bcJoe Onorato $(addprefix -G , $(PRIVATE_PROGUARD_OPTIONS_FILE)) \ 1484bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --min-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1485bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --target-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 14861ae607add31de4708e732c7139e68d425b920595Ying Wang $(if $(filter --version-code,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-code , $(PLATFORM_SDK_VERSION))) \ 14878f5069b1be9af316c948e9cd7bae2abdc33da5bcYing Wang $(if $(filter --version-name,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-name , $(PLATFORM_VERSION)-$(BUILD_NUMBER))) \ 14888c254825a062fd240566404d9d6ecc7cc56b30baYing Wang $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \ 14893dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) 149088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 149188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 149288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(HOST_OS),windows) 149388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectxlint_unchecked := 149488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 14957adbf97d110ebe137579e1078e3846aa4f3c6c2cJeffrey Chyanxlint_unchecked := -Xlint:unchecked 149688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 149788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1498bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromifeq (true, $(ENABLE_INCREMENTALJAVAC)) 1499bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromincremental_dex := --incremental 1500bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromelse 1501bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromincremental_dex := 1502bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromendif 1503bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom 150488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# emit-line, <word list>, <output file> 150588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine emit-line 150688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(1),echo -n '$(strip $(1)) ' >> $(2)) 150788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 150888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 150988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# dump-words-to-file, <word list>, <output file> 151088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine dump-words-to-file 151188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @rm -f $(2) 151288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1,200,$(1)),$(2)) 151388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 201,400,$(1)),$(2)) 151488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 401,600,$(1)),$(2)) 151588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 601,800,$(1)),$(2)) 151688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 801,1000,$(1)),$(2)) 151788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1001,1200,$(1)),$(2)) 151888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1201,1400,$(1)),$(2)) 151988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1401,1600,$(1)),$(2)) 152088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1601,1800,$(1)),$(2)) 152188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1801,2000,$(1)),$(2)) 152288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2001,2200,$(1)),$(2)) 152388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2201,2400,$(1)),$(2)) 152488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2401,2600,$(1)),$(2)) 152588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2601,2800,$(1)),$(2)) 152688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2801,3000,$(1)),$(2)) 152788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3001,3200,$(1)),$(2)) 152888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3201,3400,$(1)),$(2)) 152988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3401,3600,$(1)),$(2)) 153088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3601,3800,$(1)),$(2)) 153188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3801,4000,$(1)),$(2)) 153272c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4001,4200,$(1)),$(2)) 153372c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4201,4400,$(1)),$(2)) 153472c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4401,4600,$(1)),$(2)) 153572c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4601,4800,$(1)),$(2)) 153672c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4801,5000,$(1)),$(2)) 153772c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(if $(wordlist 5001,5002,$(1)),$(error Too many words ($(words $(1))))) 153888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 153988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 154088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# For a list of jar files, unzip them to a specified directory, 154188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# but make sure that no META-INF files come along for the ride. 154288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 154388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): files to unzip 154488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination directory 154588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine unzip-jar-files 154688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) for f in $(1); \ 154788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project do \ 154888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if [ ! -f $$f ]; then \ 154988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project echo Missing file $$f; \ 155088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project exit 1; \ 155188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi; \ 1552f1a55f8bfbaa1a68d96e229b4e73c9e9209d82cfSriram Raman unzip -qo $$f -d $(2); \ 15533a6f7589e8fcc691ec768b1fdcbf0364ff4596f2Ying Wang done \ 15543a6f7589e8fcc691ec768b1fdcbf0364ff4596f2Ying Wang $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,;rm -rf $(2)/META-INF) 155588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 155688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1557782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Common definition to invoke javac on the host and target. 1558782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# 1559782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Some historical notes: 1560782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# - below we write the list of java files to java-source-list to avoid argument 1561782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# list length problems with Cygwin 1562782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# - we filter out duplicate java file names because eclipse's compiler 1563782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# doesn't like them. 1564782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# 1565782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# $(1): javac 1566782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# $(2): bootclasspath 1567782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromdefine compile-java 156864d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) rm -f $@ 156964d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1570782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(hide) mkdir -p $(dir $@) 157164d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1572782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(call unzip-jar-files,$(PRIVATE_STATIC_JAVA_LIBRARIES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)) 1573015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call dump-words-to-file,$(PRIVATE_JAVA_SOURCES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list) 157464d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ 1575a3b759354612424e07e957716de2845396c0d80aYing Wang find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' >> $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list; \ 157688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfi 1577015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) tr ' ' '\n' < $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list \ 1578015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang | sort -u > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1579e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang$(hide) if [ -s $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq ] ; then \ 1580e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang $(1) -encoding UTF-8 \ 1581782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) \ 1582057eba07b8fdb30f27c9dd1889a74a053bc6ea1bYing Wang $(if $(findstring true,$(PRIVATE_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1583782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(2) \ 158488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -classpath ,$(strip \ 158588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-path-list,$(PRIVATE_ALL_JAVA_LIBRARIES)))) \ 1586057eba07b8fdb30f27c9dd1889a74a053bc6ea1bYing Wang $(if $(findstring true,$(PRIVATE_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 158788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1588782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(PRIVATE_JAVACFLAGS) \ 1589015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang \@$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq \ 1590e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang || ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 ) \ 1591e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wangfi 15920eccce99d7c23b403c6047738d88c616213ad7d7Joe Onorato$(if $(PRIVATE_JAVA_LAYERS_FILE), $(hide) build/tools/java-layers.py \ 15930eccce99d7c23b403c6047738d88c616213ad7d7Joe Onorato $(PRIVATE_JAVA_LAYERS_FILE) \@$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq,) 1594015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list 1595015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 15965758b8ed96783861c72b94a822c0ed581f414388Ying Wang$(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 15975758b8ed96783861c72b94a822c0ed581f414388Ying Wang -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ 15985758b8ed96783861c72b94a822c0ed581f414388Ying Wang $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ 15995758b8ed96783861c72b94a822c0ed581f414388Ying Wang | xargs rm -rf) 16004c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown$(if $(PRIVATE_JAR_PACKAGES), \ 16014c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -mindepth 1 -type f \ 16024c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(foreach pkg, $(PRIVATE_JAR_PACKAGES), \ 16034c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown -not -path $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg))/\*) -delete ; \ 16044c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -empty -delete) 16054c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown$(if $(PRIVATE_JAR_EXCLUDE_PACKAGES), $(hide) rm -rf \ 16064c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(foreach pkg, $(PRIVATE_JAR_EXCLUDE_PACKAGES), \ 16074c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg)))) 1608a3b759354612424e07e957716de2845396c0d80aYing Wang$(if $(PRIVATE_RMTYPEDEFS), $(hide) $(RMTYPEDEFS) -v $(PRIVATE_CLASS_INTERMEDIATES_DIR)) 16095c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu$(if $(PRIVATE_JAR_MANIFEST), \ 16105c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu $(hide) sed -e 's/%BUILD_NUMBER%/$(BUILD_NUMBER)/' \ 16115c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf && \ 16125c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu jar -cfm $@ $(dir $@)/manifest.mf \ 16135c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) ., \ 16145c9a1a40642cb5954f60865661d3b78904f7354aGuang Zhu $(hide) jar -cf $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) .) 1615782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromendef 1616782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom 1617782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromdefine transform-java-to-classes.jar 1618782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom@echo "target Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1619782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(call compile-java,$(TARGET_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 162088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 162188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1622015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang# Override the above definitions if we want to do incremetal javac 1623015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangifeq (true, $(ENABLE_INCREMENTALJAVAC)) 1624015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangdefine compile-java 1625015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mkdir -p $(dir $@) 1626015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1627015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) touch $(PRIVATE_CLASS_INTERMEDIATES_DIR)/newstamp 1628015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call unzip-jar-files,$(PRIVATE_STATIC_JAVA_LIBRARIES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)) 1629015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) if [ -e $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp ] ; then \ 1630015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang newerFlag=$$(echo -n "-newer $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp") ; \ 1631015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang fi ; \ 1632015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang find $(PRIVATE_JAVA_SOURCES) $$newerFlag > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list ; \ 1633015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ 1634015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' $$newerFlag >> $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list; \ 1635015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang fi 1636015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) tr ' ' '\n' < $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list \ 1637015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang | sort -u > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1638015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@echo "(Incremental) build source files:" 1639015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@cat $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1640015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) if [ -s $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq ] ; then \ 1641149dd914b8799d67b8c4a6fb502b44058a3e14b8Joe Onorato $(1) -encoding UTF-8 \ 1642015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) \ 1643057eba07b8fdb30f27c9dd1889a74a053bc6ea1bYing Wang $(if $(findstring true,$(PRIVATE_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1644015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(2) \ 1645015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(addprefix -classpath ,$(strip \ 1646015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(call normalize-path-list,$(PRIVATE_ALL_JAVA_LIBRARIES) $(PRIVATE_CLASS_INTERMEDIATES_DIR)))) \ 1647057eba07b8fdb30f27c9dd1889a74a053bc6ea1bYing Wang $(if $(findstring true,$(PRIVATE_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1648015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang -extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1649015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(PRIVATE_JAVACFLAGS) \ 1650015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang \@$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq \ 1651015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang || ( exit 41 ) \ 1652015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangfi 1653015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list 1654015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1655015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $@ 1656ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang$(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1657ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ 1658ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ 1659ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang | xargs rm -rf) 16604c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown$(if $(PRIVATE_JAR_PACKAGES), \ 16614c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -mindepth 1 -type f \ 16624c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(foreach pkg, $(PRIVATE_JAR_PACKAGES), \ 16634c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown -not -path $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg))/\*) -delete ; \ 16644c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -empty -delete) 16654c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown$(if $(PRIVATE_JAR_EXCLUDE_PACKAGES), $(hide) rm -rf \ 16664c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(foreach pkg, $(PRIVATE_JAR_EXCLUDE_PACKAGES), \ 16674c4aa99ced05fcf3d965660160ab8bda9db0405cJeff Brown $(PRIVATE_CLASS_INTERMEDIATES_DIR)/$(subst .,/,$(pkg)))) 1668a3b759354612424e07e957716de2845396c0d80aYing Wang$(if $(PRIVATE_RMTYPEDEFS), $(hide) $(RMTYPEDEFS) -v $(PRIVATE_CLASS_INTERMEDIATES_DIR)) 166965ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu$(if $(PRIVATE_JAR_MANIFEST), \ 167065ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu $(hide) sed -e 's/%BUILD_NUMBER%/$(BUILD_NUMBER)/' \ 167165ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu $(PRIVATE_JAR_MANIFEST) > $(dir $@)/manifest.mf && \ 167265ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu jar -cfm $@ $(dir $@)/manifest.mf \ 167365ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) ., \ 167465ca9e6f02652cb80f050dd03984ab9631683756Guang Zhu $(hide) jar -cf $@ -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) .) 1675015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mv $(PRIVATE_CLASS_INTERMEDIATES_DIR)/newstamp $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp 1676015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendef 1677015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang 1678015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangdefine transform-java-to-classes.jar 1679015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@echo "target Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1680015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call compile-java,$(TARGET_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 1681015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendef 1682015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendif # ENABLE_INCREMENTALJAVAC 1683015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang 168488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-classes.jar-to-emma 168588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) java -classpath $(EMMA_JAR) emma instr -outmode fullcopy -outfile \ 1686155afe393faa0aae47d517fa687a7e4ab3cae91bGuang Zhu $(PRIVATE_EMMA_COVERAGE_FILE) -ip $< -d $(PRIVATE_EMMA_INTERMEDIATES_DIR) \ 16879cd3d8c6543ffb2eef7935d8f832f99675dc630eGuang Zhu $(addprefix -ix , $(PRIVATE_EMMA_COVERAGE_FILTER)) 168888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 168988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 169088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: use a smaller -Xmx value for most libraries; 169188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# only core.jar and framework.jar need a heap this big. 1692f6ff4c5acf428d4b0cba828b836f1e11fa1442b4Raphael# Avoid the memory arguments on Windows, dx fails to load for some reason with them. 169388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-classes.jar-to-dex 169488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Dex: $(PRIVATE_MODULE)" 169588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 1696af9757e84940a3d3f4a4b88d2f1ed259d4f43c02Ying Wang$(hide) rm -f $(dir $@)classes*.dex 1697f6ff4c5acf428d4b0cba828b836f1e11fa1442b4Raphael$(hide) $(DX) \ 169829b3afaf79e89e5707c6a28e7ed55d3c04810352Wink Saville $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx2048M) \ 16998ffe9c3e7967ec9c6c6e9a03095454dc1b073c3bYohann Roussel --dex --output=$(dir $@) \ 1700bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom $(incremental_dex) \ 170188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(NO_OPTIMIZE_DX), \ 170288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --no-optimize) \ 170388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(GENERATE_DEX_DEBUG), \ 170488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --debug --verbose \ 170588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --dump-to=$(@:.dex=.lst) \ 170688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --dump-width=1000) \ 170788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DX_FLAGS) \ 170888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $< 170988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 171088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 171188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Create a mostly-empty .jar file that we'll add to later. 171288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The MacOS jar tool doesn't like creating empty jar files, 171388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# so we need to give it something. 171488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine create-empty-package 171588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 171636142f64aef3da56a6e70589dad634b5babc0c31Ying Wang$(hide) touch $(dir $@)dummy 171788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) (cd $(dir $@) && jar cf $(notdir $@) dummy) 171888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) zip -qd $@ dummy 171936142f64aef3da56a6e70589dad634b5babc0c31Ying Wang$(hide) rm $(dir $@)dummy 172088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 172188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 172288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: we kinda want to build different asset packages for 172388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# different configurations, then combine them later (or something). 172488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Per-locale, etc. 172588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# A list of dynamic and static parameters; build layers for 172688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# dynamic params that lay over the static ones. 172788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: update the manifest to point to the package file 17289bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#Note that the version numbers are given to aapt as simple default 17299bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#values; applications can override these by explicitly stating 17309bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#them in their manifest. 173188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-assets-to-package 1732c61d5932d3b1014352dd5cbcb2684a95b3e172a3Ying Wang$(hide) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \ 17334f1ab92aac00a73276793ed25af669d112618a32Ying Wang $(addprefix -c , $(PRIVATE_PRODUCT_AAPT_CONFIG)) \ 17342d1718aaeac27a6ff4ef5bd992a68574fc55d0c1Adam Lesinski $(addprefix --preferred-density , $(PRIVATE_PRODUCT_AAPT_PREF_CONFIG)) \ 173588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \ 173688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -S , $(PRIVATE_RESOURCE_DIR)) \ 173788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -A , $(PRIVATE_ASSET_DIR)) \ 173888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -I , $(PRIVATE_AAPT_INCLUDES)) \ 1739bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --min-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1740bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --target-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1741f39752e99b4e5083f1e91c46722f87def8143b49Ying Wang $(if $(filter --product,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --product , $(TARGET_AAPT_CHARACTERISTICS))) \ 17421ae607add31de4708e732c7139e68d425b920595Ying Wang $(if $(filter --version-code,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-code , $(PLATFORM_SDK_VERSION))) \ 17438f5069b1be9af316c948e9cd7bae2abdc33da5bcYing Wang $(if $(filter --version-name,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-name , $(PLATFORM_VERSION)-$(BUILD_NUMBER))) \ 1744bb67d21337f8d87628fbc09585be6cfe6ab0336cJeff Hamilton $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \ 17453dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) \ 174688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -F $@ 174788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 174888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17498e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang# We need the extra blank line, so that the command will be on a separate line. 17508e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang# $(1): the ABI name 17518e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang# $(2): the list of shared libraies 17528e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wangdefine _add-jni-shared-libs-to-package-per-abi 17538e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang$(hide) cp $(2) $(dir $@)lib/$(1) 17548e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang 17558e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wangendef 17568e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang 175788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-jni-shared-libs-to-package 175888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) rm -rf $(dir $@)lib 17598e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang$(hide) mkdir -p $(addprefix $(dir $@)lib/,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI)) 17608e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang$(foreach abi,$(PRIVATE_JNI_SHARED_LIBRARIES_ABI),\ 17618e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang $(call _add-jni-shared-libs-to-package-per-abi,$(abi),\ 17628e20ef6205b3c96135b1c1e4484d523dbecb1b98Ying Wang $(patsubst $(abi):%,%,$(filter $(abi):%,$(PRIVATE_JNI_SHARED_LIBRARIES))))) 176388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) (cd $(dir $@) && zip -r $(notdir $@) lib) 176488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) rm -rf $(dir $@)lib 176588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 176688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 176788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: update the manifest to point to the dex file 176888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-dex-to-package 1769af9757e84940a3d3f4a4b88d2f1ed259d4f43c02Ying Wang$(hide) zip -qj $@ $(dir $(PRIVATE_DEX_FILE))classes*.dex 177088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 177188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 177285480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang# Add java resources added by the current module. 177385480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang# 177488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-java-resources-to-package 1775194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(call dump-words-to-file, $(PRIVATE_EXTRA_JAR_ARGS), $(dir $@)jar-arg-list) 1776194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(hide) jar uf $@ @$(dir $@)jar-arg-list 1777194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang@rm -f $(dir $@)jar-arg-list 177888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 177988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 178085480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang# Add java resources carried by static Java libraries. 178185480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang# 178285480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wangdefine add-carried-java-resources 178385480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang$(hide) if [ -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) ] ; then \ 178485480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang java_res_jar_flags=$$(find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -type f -a -not -name "*.class" \ 178585480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang | sed -e "s?^$(PRIVATE_CLASS_INTERMEDIATES_DIR)/? -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) ?"); \ 178685480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang if [ -n "$$java_res_jar_flags" ] ; then \ 178785480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang echo $$java_res_jar_flags >$(dir $@)java_res_jar_flags; \ 178885480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang jar uf $@ $$java_res_jar_flags; \ 178985480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang fi; \ 179085480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wangfi 179185480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wangendef 179285480629220c9afb0d138ff1ce5ea1ccbe66c7f7Ying Wang 179388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Sign a package using the specified key/cert. 179488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 179588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine sign-package 179688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@ $@.unsigned 179788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) java -jar $(SIGNAPK_JAR) \ 179831df068b38729c5bc04a859b9216f539bc22c29eYing Wang $(PRIVATE_CERTIFICATE) $(PRIVATE_PRIVATE_KEY) \ 179931df068b38729c5bc04a859b9216f539bc22c29eYing Wang $(PRIVATE_ADDITIONAL_CERTIFICATES) $@.unsigned $@.signed 180088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@.signed $@ 180188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 180288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 180388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Align STORED entries of a package on 4-byte boundaries 180488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to make them easier to mmap. 180588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 180688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine align-package 180788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@ $@.unaligned 180888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(ZIPALIGN) -f 4 $@.unaligned $@.aligned 180988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@.aligned $@ 181088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 181188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 181288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine install-dex-debug 181388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ -f "$(PRIVATE_INTERMEDIATES_DIR)/classes.dex" ]; then \ 181488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mkdir -p $(TOP)/dalvik/DEBUG-FILES; \ 181588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(ACP) $(PRIVATE_INTERMEDIATES_DIR)/classes.dex \ 181688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(TOP)/dalvik/DEBUG-FILES/$(PRIVATE_MODULE).dex; \ 181788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi 181888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ -f "$(PRIVATE_INTERMEDIATES_DIR)/classes.lst" ]; then \ 181988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mkdir -p $(TOP)/dalvik/DEBUG-FILES; \ 182088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(ACP) $(PRIVATE_INTERMEDIATES_DIR)/classes.lst \ 182188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(TOP)/dalvik/DEBUG-FILES/$(PRIVATE_MODULE).lst; \ 182288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi 182388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 182488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 182588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO(joeo): If we can ever upgrade to post 3.81 make and get the 182688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# new prebuilt rules to work, we should change this to copy the 182788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# resources to the out directory and then copy the resources. 182888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1829782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Note: we intentionally don't clean PRIVATE_CLASS_INTERMEDIATES_DIR 1830782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# in transform-java-to-classes for the sake of vm-tests. 183188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-java-to-package 183288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1833015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call compile-java,$(HOST_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 1834194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(if $(PRIVATE_EXTRA_JAR_ARGS), $(call add-java-resources-to-package)) 183588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 183688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 183788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 183888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for copying files 183988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 184088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 184188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Define a rule to copy a header. Used via $(eval) by copy_headers.make. 184288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): source header 184388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination header 184488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-one-header 184588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(2): $(1) 184688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @echo "Header: $$@" 184788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $$(copy-file-to-new-target-with-cp) 184888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 184988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 185088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Define a rule to copy a file. For use via $(eval). 185188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): source file 185288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination file 185388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-one-file 185488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(2): $(1) | $(ACP) 185588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @echo "Copy: $$@" 185688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $$(copy-file-to-target) 185788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 185888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1859e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# Copies many files. 1860e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# $(1): The files to copy. Each entry is a ':' separated src:dst pair 1861e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# Evaluates to the list of the dst files (ie suitable for a dependency list) 1862e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onoratodefine copy-many-files 1863e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato$(foreach f, $(1), $(strip \ 1864e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_tuple := $(subst :, ,$(f))) \ 1865e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_src := $(word 1,$(_cmf_tuple))) \ 1866e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_dest := $(word 2,$(_cmf_tuple))) \ 1867e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval $(call copy-one-file,$(_cmf_src),$(_cmf_dest))) \ 1868e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(_cmf_dest))) 1869e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onoratoendef 1870e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato 18713ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# Copy the file only if it's a well-formed xml file. For use via $(eval). 18723ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# $(1): source file 18733ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# $(2): destination file, must end with .xml. 18743ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wangdefine copy-xml-file-checked 18753ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang$(2): $(1) | $(ACP) 18763ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang @echo "Copy xml: $$@" 18773ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang $(hide) xmllint $$< >/dev/null # Don't print the xml file to stdout. 18783ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang $$(copy-file-to-target) 18793ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wangendef 18803ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang 188188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The -t option to acp and the -p option to cp is 188288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# required for OSX. OSX has a ridiculous restriction 188388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# where it's an error for a .a file's modification time 188488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to disagree with an internal timestamp, and this 188588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# macro is used to install .a files (among other things). 188688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 188788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copy a single file from one place to another, 188888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# preserving permissions and overwriting any existing 188988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# file. 189076a6dc3a191e8800211eb49398d37deae731094eIan Rogers# We disable the "-t" option for acp cannot handle 189184ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang# high resolution timestamp correctly on file systems like ext4. 189284ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang# Therefore copy-file-to-target is the same as copy-file-to-new-target. 189388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-target 189488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 189584ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang$(hide) $(ACP) -fp $< $@ 189688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 189788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 189888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-target, but use the local 189988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp command instead of acp. 190088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-target-with-cp 190188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 190288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) cp -fp $< $@ 190388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 190488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19059c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn# The same as copy-file-to-target, but use the zipalign tool to do so. 19069c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborndefine copy-file-to-target-with-zipalign 19079c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn@mkdir -p $(dir $@) 19089c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn$(hide) $(ZIPALIGN) -f 4 $< $@ 19099c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackbornendef 19109c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn 19111046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# The same as copy-file-to-target, but strip out "# comment"-style 19121046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# comments (for config files and such). 19131046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerdefine copy-file-to-target-strip-comments 19141046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker@mkdir -p $(dir $@) 19151046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker$(hide) sed -e 's/#.*$$//' -e 's/[ \t]*$$//' -e '/^$$/d' < $< > $@ 19161046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerendef 19171046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker 191888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-target, but don't preserve 191988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# the old modification time. 192088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-new-target 192188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 192288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(ACP) -fp $< $@ 192388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 192488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 192588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-new-target, but use the local 192688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp command instead of acp. 192788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-new-target-with-cp 192888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 192988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) cp -f $< $@ 193088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 193188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 193288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copy a prebuilt file to a target location. 193388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-prebuilt-to-target 193488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt: $(PRIVATE_MODULE) ($@)" 193588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(copy-file-to-target) 193688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 193788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19389c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn# Copy a prebuilt file to a target location, using zipalign on it. 19399c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborndefine transform-prebuilt-to-target-with-zipalign 19409c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt APK: $(PRIVATE_MODULE) ($@)" 19419c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn$(copy-file-to-target-with-zipalign) 19429c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackbornendef 19439c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn 19441046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# Copy a prebuilt file to a target location, stripping "# comment" comments. 19451046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerdefine transform-prebuilt-to-target-strip-comments 19461046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt: $(PRIVATE_MODULE) ($@)" 19471046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker$(copy-file-to-target-strip-comments) 19481046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerendef 19491046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker 195088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 195188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## On some platforms (MacOS), after copying a static 195288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## library, ranlib must be run to update an internal 195388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## timestamp!?!?! 195488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 195588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 195688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(HOST_RUN_RANLIB_AFTER_COPYING),true) 195788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-ranlib-copy-hack 195888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) ranlib $@ || true 195988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 196088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 196188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-ranlib-copy-hack 19620e27dff167faede2d13dae5d488866bce85c28bcPatrick Scott@true 196388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 196488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 196588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 196688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(TARGET_RUN_RANLIB_AFTER_COPYING),true) 196788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-ranlib-copy-hack 196888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) ranlib $@ 196988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 197088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 197188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-ranlib-copy-hack 19720e27dff167faede2d13dae5d488866bce85c28bcPatrick Scott@true 197388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 197488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 197588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 197688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 197788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 19783b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang## Commands to call Proguard 19793b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang########################################################### 19803b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangdefine transform-jar-to-proguard 19817311a344bed507062e781ba70331d85652c217d8Ying Wang@echo Proguard: $@ 19824df82b3e30794a3652a5dda773a74f486fec3325Mihail Dumitrescu$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS) \ 19834df82b3e30794a3652a5dda773a74f486fec3325Mihail Dumitrescu $(addprefix -injars , $(PRIVATE_EXTRA_INPUT_JAR)) 19843b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangendef 19853b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 19863b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang########################################################### 198788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Stuff source generated from one-off tools 198888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 198988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 199088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-generated-source 199188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Generated: $(PRIVATE_MODULE) <= $<" 199288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 199388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CUSTOM_TOOL) 199488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 199588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 199688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 199788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 199888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Assertions about attributes of the target 199988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 200088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 200188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): The file to check 200288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifndef get-file-size 200388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(error HOST_OS must define get-file-size) 200488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 200588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 20064647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# Convert a partition data size (eg, as reported in /proc/mtd) to the 20074647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# size of the image used to flash that partition (which includes a 20089cb8c2835232c8dc99cecca85a7e99bdee7109a9Lars Svensson# spare area for each page). 20094647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# $(1): the partition data size 20104647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongkerdefine image-size-from-data-size 20114a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(strip $(eval _isfds_value := $$(shell echo $$$$(($(1) / $(BOARD_NAND_PAGE_SIZE) * \ 20124a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang ($(BOARD_NAND_PAGE_SIZE)+$(BOARD_NAND_SPARE_SIZE))))))\ 20134a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(if $(filter 0, $(_isfds_value)),$(shell echo $$(($(BOARD_NAND_PAGE_SIZE)+$(BOARD_NAND_SPARE_SIZE)))),$(_isfds_value))\ 20144a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(eval _isfds_value :=)) 20154647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongkerendef 20164647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker 20174647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# $(1): The file(s) to check (often $@) 20180ed7cec97a894ae8daf9586f2bac6e09826a6c2aJP Abgrall# $(2): The maximum total image size, in decimal bytes. 20190ed7cec97a894ae8daf9586f2bac6e09826a6c2aJP Abgrall# Make sure to take into account any reserved space needed for the FS. 202088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 202188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# If $(2) is empty, evaluates to "true" 202288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 202388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Reserve bad blocks. Make sure that MAX(1% of partition size, 2 blocks) 202488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# is left over after the image has been flashed. Round the 1% up to the 202588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# next whole flash block size. 202688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine assert-max-file-size 202788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(if $(2), \ 2028742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker size=$$(for i in $(1); do $(call get-file-size,$$i); echo +; done; echo 0); \ 2029742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker total=$$(( $$( echo "$$size" ) )); \ 20304647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker printname=$$(echo -n "$(1)" | tr " " +); \ 20314647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker img_blocksize=$(call image-size-from-data-size,$(BOARD_FLASH_BLOCK_SIZE)); \ 20324647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker twoblocks=$$((img_blocksize * 2)); \ 20334647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker onepct=$$((((($(2) / 100) - 1) / img_blocksize + 1) * img_blocksize)); \ 20340ed7cec97a894ae8daf9586f2bac6e09826a6c2aJP Abgrall reserve=$$((twoblocks > onepct ? twoblocks : onepct)); \ 20354647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker maxsize=$$(($(2) - reserve)); \ 203699bcbeb355959d073e24dc5da9f858ee24cf7baaYing Wang echo "$$printname maxsize=$$maxsize blocksize=$$img_blocksize total=$$total reserve=$$reserve"; \ 20374647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker if [ "$$total" -gt "$$maxsize" ]; then \ 20384647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker echo "error: $$printname too large ($$total > [$(2) - $$reserve])"; \ 20394647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker false; \ 2040742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker elif [ "$$total" -gt $$((maxsize - 32768)) ]; then \ 20414647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker echo "WARNING: $$printname approaching size limit ($$total now; limit $$maxsize)"; \ 204288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi \ 204388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project , \ 204488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project true \ 204588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 204688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 204788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 20488510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# Like assert-max-file-size, but the second argument is a partition 20498510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# size, which we'll convert to a max image size before checking it 20508510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# against the files. 20518510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# 20528510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# $(1): The file(s) to check (often $@) 20538510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# $(2): The partition size. 20548510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongkerdefine assert-max-image-size 20558510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker$(if $(2), \ 20560ed7cec97a894ae8daf9586f2bac6e09826a6c2aJP Abgrall $(call assert-max-file-size,$(1),$(call image-size-from-data-size,$(2)))) 20578510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongkerendef 20588510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker 2059e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 2060e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker########################################################### 2061e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker## Define device-specific radio files 2062e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker########################################################### 206394de1eba0e87297421789b339c5f26bf3e48eeb1Ying WangINSTALLED_RADIOIMAGE_TARGET := 2064e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 2065e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# Copy a radio image file to the output location, and add it to 2066e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# INSTALLED_RADIOIMAGE_TARGET. 2067e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# $(1): filename 2068e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerdefine add-radio-file 206914833605d26bf970cd5335c02af4354b68d93348Doug Zongker $(eval $(call add-radio-file-internal,$(1),$(notdir $(1)))) 2070e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerendef 2071e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerdefine add-radio-file-internal 207214833605d26bf970cd5335c02af4354b68d93348Doug ZongkerINSTALLED_RADIOIMAGE_TARGET += $$(PRODUCT_OUT)/$(2) 207314833605d26bf970cd5335c02af4354b68d93348Doug Zongker$$(PRODUCT_OUT)/$(2) : $$(LOCAL_PATH)/$(1) | $$(ACP) 2074e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker $$(transform-prebuilt-to-target) 2075e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerendef 2076e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 20779296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# Version of add-radio-file that also arranges for the version of the 20789296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# file to be checked against the contents of 20799296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(TARGET_BOARD_INFO_FILE). 20809296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(1): filename 20819296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(2): name of version variable in board-info (eg, "version-baseband") 20829296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerdefine add-radio-file-checked 20839296f092771a0261404f51bcbc1b62ba20654947Doug Zongker $(eval $(call add-radio-file-checked-internal,$(1),$(notdir $(1)),$(2))) 20849296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerendef 20859296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerdefine add-radio-file-checked-internal 20869296f092771a0261404f51bcbc1b62ba20654947Doug ZongkerINSTALLED_RADIOIMAGE_TARGET += $$(PRODUCT_OUT)/$(2) 20879296f092771a0261404f51bcbc1b62ba20654947Doug ZongkerBOARD_INFO_CHECK += $(3):$(LOCAL_PATH)/$(1) 20889296f092771a0261404f51bcbc1b62ba20654947Doug Zongker$$(PRODUCT_OUT)/$(2) : $$(LOCAL_PATH)/$(1) | $$(ACP) 20899296f092771a0261404f51bcbc1b62ba20654947Doug Zongker $$(transform-prebuilt-to-target) 20909296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerendef 20919296f092771a0261404f51bcbc1b62ba20654947Doug Zongker 2092e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 209388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 2094899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Override the package defined in $(1), setting the 2095899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# variables listed below differently. 2096899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# 2097899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(1): The makefile to override (relative to the source 2098899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# tree root) 2099899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(2): Old LOCAL_PACKAGE_NAME value. 2100899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(3): New LOCAL_PACKAGE_NAME value. 21013dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(4): New LOCAL_MANIFEST_PACKAGE_NAME value. 21023dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(5): New LOCAL_CERTIFICATE value. 21033dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(6): New LOCAL_INSTRUMENTATION_FOR value. 21043dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(7): New LOCAL_MANIFEST_INSTRUMENTATION_FOR value. 2105899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# 2106899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Note that LOCAL_PACKAGE_OVERRIDES is NOT cleared in 2107899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# clear_vars.mk. 2108899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato########################################################### 2109899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine inherit-package 21103dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(eval $(call inherit-package-internal,$(1),$(2),$(3),$(4),$(5),$(6),$(7))) 2111899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2112899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2113899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine inherit-package-internal 2114899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato LOCAL_PACKAGE_OVERRIDES \ 21153dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang := $(strip $(1))||$(strip $(2))||$(strip $(3))||$(strip $(4))||&&$(strip $(5))||&&$(strip $(6))||&&$(strip $(7)) $(LOCAL_PACKAGE_OVERRIDES) 2116899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato include $(1) 2117899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato LOCAL_PACKAGE_OVERRIDES \ 2118899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato := $(wordlist 1,$(words $(LOCAL_PACKAGE_OVERRIDES)), $(LOCAL_PACKAGE_OVERRIDES)) 2119899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2120899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2121899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# To be used with inherit-package above 2122899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Evalutes to true if the package was overridden 2123899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine set-inherited-package-variables 2124899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato$(strip $(call set-inherited-package-variables-internal)) 2125899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2126899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2127899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine keep-or-override 2128899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato$(eval $(1) := $(if $(2),$(2),$($(1)))) 2129899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2130899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2131899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine set-inherited-package-variables-internal 2132899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval _o := $(subst ||, ,$(lastword $(LOCAL_PACKAGE_OVERRIDES)))) 2133899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval _n := $(subst ||, ,$(firstword $(LOCAL_PACKAGE_OVERRIDES)))) 2134899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(if $(filter $(word 2,$(_n)),$(LOCAL_PACKAGE_NAME)), \ 2135899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_PACKAGE_NAME := $(word 3,$(_o))) \ 2136899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_MANIFEST_PACKAGE_NAME := $(word 4,$(_o))) \ 21373dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_CERTIFICATE,$(patsubst &&%,%,$(word 5,$(_o)))) \ 21383dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_INSTRUMENTATION_FOR,$(patsubst &&%,%,$(word 6,$(_o)))) \ 21393dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_MANIFEST_INSTRUMENTATION_FOR,$(patsubst &&%,%,$(word 7,$(_o)))) \ 2140899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_OVERRIDES_PACKAGES := $(sort $(LOCAL_OVERRIDES_PACKAGES) $(word 2,$(_o)))) \ 2141899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato true \ 2142899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato ,) 2143899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2144899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2145000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang########################################################### 2146c065da230762acd1cba7714827c2d588ab32a7fbYing Wang## API Check 2147c065da230762acd1cba7714827c2d588ab32a7fbYing Wang########################################################### 2148c065da230762acd1cba7714827c2d588ab32a7fbYing Wang 2149c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# eval this to define a rule that runs apicheck. 2150c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# 2151c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# Args: 2152c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# $(1) target 2153c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# $(2) stable api file 2154c065da230762acd1cba7714827c2d588ab32a7fbYing Wang# $(3) api file to be tested 2155ec21c58574798d05693d053deb17778cf23d0050Hui Shu# $(4) stable removed api file 2156e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu# $(5) removed api file to be tested 2157e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu# $(6) arguments for apicheck 2158e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu# $(7) command to run if apicheck failed 2159e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu# $(8) target dependent on this api check 2160e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu# $(9) additional dependencies 2161c065da230762acd1cba7714827c2d588ab32a7fbYing Wangdefine check-api 2162ec21c58574798d05693d053deb17778cf23d0050Hui Shu$(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(strip $(1))-timestamp: $(2) $(3) $(4) $(APICHECK) $(9) 2163c065da230762acd1cba7714827c2d588ab32a7fbYing Wang @echo "Checking API:" $(1) 2164e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu $(hide) ( $(APICHECK_COMMAND) $(6) $(2) $(3) $(4) $(5) || ( $(7) ; exit 38 ) ) 2165c065da230762acd1cba7714827c2d588ab32a7fbYing Wang $(hide) mkdir -p $$(dir $$@) 2166c065da230762acd1cba7714827c2d588ab32a7fbYing Wang $(hide) touch $$@ 2167e8af17eb27ff85963788ac1e2237026d68b6f955Hui Shu$(8): $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/$(strip $(1))-timestamp 2168c065da230762acd1cba7714827c2d588ab32a7fbYing Wangendef 2169c065da230762acd1cba7714827c2d588ab32a7fbYing Wang 217063d94fa3056066ba7be6754356975af6a1c82981Ying Wang## Whether to build from source if prebuilt alternative exists 217163d94fa3056066ba7be6754356975af6a1c82981Ying Wang########################################################### 217263d94fa3056066ba7be6754356975af6a1c82981Ying Wang# $(1): module name 217363d94fa3056066ba7be6754356975af6a1c82981Ying Wang# $(2): LOCAL_PATH 217463d94fa3056066ba7be6754356975af6a1c82981Ying Wang# Expands to empty string if not from source. 217563d94fa3056066ba7be6754356975af6a1c82981Ying Wangifeq (true,$(ANDROID_BUILD_FROM_SOURCE)) 217663d94fa3056066ba7be6754356975af6a1c82981Ying Wangdefine if-build-from-source 217763d94fa3056066ba7be6754356975af6a1c82981Ying Wangtrue 217863d94fa3056066ba7be6754356975af6a1c82981Ying Wangendef 217963d94fa3056066ba7be6754356975af6a1c82981Ying Wangelse 218063d94fa3056066ba7be6754356975af6a1c82981Ying Wangdefine if-build-from-source 218163d94fa3056066ba7be6754356975af6a1c82981Ying Wang$(if $(filter $(ANDROID_NO_PREBUILT_MODULES),$(1))$(filter \ 218263d94fa3056066ba7be6754356975af6a1c82981Ying Wang $(addsuffix %,$(ANDROID_NO_PREBUILT_PATHS)),$(2)),true) 218363d94fa3056066ba7be6754356975af6a1c82981Ying Wangendef 218463d94fa3056066ba7be6754356975af6a1c82981Ying Wangendif 218563d94fa3056066ba7be6754356975af6a1c82981Ying Wang 218663d94fa3056066ba7be6754356975af6a1c82981Ying Wang# Include makefile $(1) if build from source for module $(2) 218763d94fa3056066ba7be6754356975af6a1c82981Ying Wang# $(1): the makefile to include 218863d94fa3056066ba7be6754356975af6a1c82981Ying Wang# $(2): module name 218963d94fa3056066ba7be6754356975af6a1c82981Ying Wang# $(3): LOCAL_PATH 219063d94fa3056066ba7be6754356975af6a1c82981Ying Wangdefine include-if-build-from-source 219163d94fa3056066ba7be6754356975af6a1c82981Ying Wang$(if $(call if-build-from-source,$(2),$(3)),$(eval include $(1))) 219263d94fa3056066ba7be6754356975af6a1c82981Ying Wangendef 219363d94fa3056066ba7be6754356975af6a1c82981Ying Wang 2194a6a6c35c3afdf9c4bcd05ea5e4c40983e7e49246Ying Wang# Return the arch for the source file of a prebuilt 2195a6a6c35c3afdf9c4bcd05ea5e4c40983e7e49246Ying Wang# Return "none" if no matching arch found, so the result can be passed to 2196a6a6c35c3afdf9c4bcd05ea5e4c40983e7e49246Ying Wang# LOCAL_MODULE_TARGET_ARCH. 2197c0adfb76cdae425b4c03d85de184364edc33338fYing Wang# $(1) the list of archs supported by the prebuilt 2198c0adfb76cdae425b4c03d85de184364edc33338fYing Wangdefine get-prebuilt-src-arch 2199c0adfb76cdae425b4c03d85de184364edc33338fYing Wang$(strip $(if $(filter $(TARGET_ARCH),$(1)),$(TARGET_ARCH),\ 2200a6a6c35c3afdf9c4bcd05ea5e4c40983e7e49246Ying Wang $(if $(filter $(TARGET_2ND_ARCH),$(1)),$(TARGET_2ND_ARCH),none))) 2201c0adfb76cdae425b4c03d85de184364edc33338fYing Wangendef 2202c0adfb76cdae425b4c03d85de184364edc33338fYing Wang 2203c065da230762acd1cba7714827c2d588ab32a7fbYing Wang########################################################### 220488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Other includes 220588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 220688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 220788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ----------------------------------------------------------------- 220888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Rules and functions to help copy important files to DIST_DIR 220988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# when requested. 221088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinclude $(BUILD_SYSTEM)/distdir.mk 221188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22129e5efceff9d759827c90007e011caa83ec5d622aMarie Lennerhagen# Include any vendor specific definitions.mk file 22139e5efceff9d759827c90007e011caa83ec5d622aMarie Lennerhagen-include $(TOPDIR)vendor/*/build/core/definitions.mk 22149e5efceff9d759827c90007e011caa83ec5d622aMarie Lennerhagen 221588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# broken: 221688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(foreach file,$^,$(if $(findstring,.a,$(suffix $file)),-l$(file),$(file))) 221788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 221888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 221988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Misc notes 222088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 222188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 222288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#DEPDIR = .deps 222388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#df = $(DEPDIR)/$(*F) 222488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 222588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#SRCS = foo.c bar.c ... 222688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 222788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#%.o : %.c 222888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# @$(MAKEDEPEND); \ 222988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp $(df).d $(df).P; \ 223088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 223188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -e '/^$$/ d' -e 's/$$/ :/' < $(df).d >> $(df).P; \ 223288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# rm -f $(df).d 223388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(COMPILE.c) -o $@ $< 223488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 223588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#-include $(SRCS:%.c=$(DEPDIR)/%.P) 223688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 223788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 223888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#%.o : %.c 223988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(COMPILE.c) -MD -o $@ $< 224088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# @cp $*.d $*.P; \ 224188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 224288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \ 224388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# rm -f $*.d 2244