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 58f85cb7c936db4b7a6b39b1163591a61e166d9e11Joe Onorato# All host modules are automatically installed (i.e. outside 59f85cb7c936db4b7a6b39b1163591a61e166d9e11Joe Onorato# of the product configuration scheme). This is a list of the 60f85cb7c936db4b7a6b39b1163591a61e166d9e11Joe Onorato# install targets (LOCAL_INSTALLED_MODULE). 61f85cb7c936db4b7a6b39b1163591a61e166d9e11Joe OnoratoALL_HOST_INSTALLED_FILES:= 62f85cb7c936db4b7a6b39b1163591a61e166d9e11Joe Onorato 6388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full paths to all prebuilt files that will be copied 6488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# (used to make the dependency on acp) 6588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_PREBUILT:= 6688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 6788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full path to all files that are made by some tool 6888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_GENERATED_SOURCES:= 6988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Full path to all asm, C, C++, lex and yacc generated C files. 7188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# These all have an order-only dependency on the copied headers 7288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_C_CPP_ETC_OBJECTS:= 7388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 74b375e71d306f2fd356b9b356b636e568c4581fa1Iliyan Malchev# The list of dynamic binaries that haven't been stripped/compressed/etc. 7588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_ORIGINAL_DYNAMIC_BINARIES:= 7688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 7788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# These files go into the SDK 7888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_SDK_FILES:= 7988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Files for dalvik. This is often build without building the rest of the OS. 8188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectINTERNAL_DALVIK_MODULES:= 8288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# All findbugs xml files 8488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source ProjectALL_FINDBUGS_FILES:= 8588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 86fd626f2d21a55aec9133424f4303d5450ad9622eYing Wang# GPL module license files 87fd626f2d21a55aec9133424f4303d5450ad9622eYing WangALL_GPL_MODULE_LICENSE_FILES:= 88fd626f2d21a55aec9133424f4303d5450ad9622eYing Wang 89ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang# Generated class file names for Android resource. 90ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang# They are escaped and quoted so can be passed safely to a bash command. 91ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing WangANDROID_RESOURCE_GENERATED_CLASSES := 'R.class' 'R$$*.class' 'Manifest.class' 'Manifest$$*.class' 92ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang 9388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 9488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Debugging; prints a variable list to stdout 9588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 9688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 9788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): variable name list, not variable values 9888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine print-vars 9988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach var,$(1), \ 10088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(info $(var):) \ 10188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(foreach word,$($(var)), \ 10288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(info $(space)$(space)$(word)) \ 10388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 10488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 10588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 10688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 10788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 10864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Evaluates to true if the string contains the word true, 10964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## and empty otherwise 11064d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): a var to test 11164d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 11264d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11364d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine true-or-empty 11464d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(filter true, $(1)) 11564d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 11664d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11764d85d0d827489c514f6aec075482563c80cda73Joe Onorato 11864d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 11988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve the directory of the current makefile 12088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 12188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 12288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Figure out where we are. 12388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine my-dir 124b392641d9b07d6321aed828c983af04115da8aabDave Bort$(strip \ 12568f1c77a8db3ee6f92194cbaeeb1bf559bb79afdYing Wang $(eval LOCAL_MODULE_MAKEFILE := $$(lastword $$(MAKEFILE_LIST))) \ 12668f1c77a8db3ee6f92194cbaeeb1bf559bb79afdYing Wang $(if $(filter $(CLEAR_VARS),$(LOCAL_MODULE_MAKEFILE)), \ 127b392641d9b07d6321aed828c983af04115da8aabDave Bort $(error LOCAL_PATH must be set before including $$(CLEAR_VARS)) \ 128b392641d9b07d6321aed828c983af04115da8aabDave Bort , \ 12968f1c77a8db3ee6f92194cbaeeb1bf559bb79afdYing Wang $(patsubst %/,%,$(dir $(LOCAL_MODULE_MAKEFILE))) \ 130b392641d9b07d6321aed828c983af04115da8aabDave Bort ) \ 131b392641d9b07d6321aed828c983af04115da8aabDave Bort ) 13288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 13388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 13588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve a list of all makefiles immediately below some directory 13688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 13788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 13888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-makefiles-under 13988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(wildcard $(1)/*/Android.mk) 14088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 14188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 14388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Look under a directory for makefiles that don't have parent 14488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## makefiles. 14588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 14688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 14788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): directory to search under 14888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Ignores $(1)/Android.mk 14988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine first-makefiles-under 150dc1a728fb89677589bf3b5e3a5aab58164c9be6bJoe Onorato$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git \ 151dc1a728fb89677589bf3b5e3a5aab58164c9be6bJoe Onorato --mindepth=2 $(1) Android.mk) 15288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 15388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 15588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Retrieve a list of all makefiles immediately below your directory 15688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 15788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 15888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-makefiles 15988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-makefiles-under,$(call my-dir)) 16088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 16188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 16388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Look in the named list of directories for makefiles, 16488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## relative to the current directory. 16588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 16688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): List of directories to look for under this directory 16888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-named-subdir-makefiles 169e73c4bbc509f414cb8fbf487b7f44ab94af9cbb9Chih-Wei Huang$(wildcard $(addsuffix /Android.mk, $(addprefix $(call my-dir)/,$(1)))) 17088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 17188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 17388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the java files under the named directories. 17488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Meant to be used like: 17588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-java-files-under,src tests) 17688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 17788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-java-files-under 17988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 18088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 18188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project find $(1) -name "*.java" -and -not -name ".*") \ 18288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 18388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 18488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 18588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 18688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the java files from here. Meant to be used like: 18788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-java-files) 18888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 18988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-java-files 19188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-java-files-under,.) 19288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 19388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 19588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the c files under the named directories. 19688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Meant to be used like: 19788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-c-files-under,src tests) 19888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 19988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 20088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-c-files-under 20188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 20288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 20388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project find $(1) -name "*.c" -and -not -name ".*") \ 20488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 20588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 20688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 20788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 20888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the c files from here. Meant to be used like: 20988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-c-files) 21088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 21188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 21288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-c-files 21388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-c-files-under,.) 21488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 21588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 21688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 21788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all files named "I*.aidl" under the named directories, 21888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## which must be relative to $(LOCAL_PATH). The returned list 21988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## is relative to $(LOCAL_PATH). 22088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 22188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-Iaidl-files-under 22388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%, \ 22488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(shell cd $(LOCAL_PATH) ; \ 22588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project find $(1) -name "I*.aidl" -and -not -name ".*") \ 22688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 22788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 22888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 22988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 23088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the "I*.aidl" files under $(LOCAL_PATH). 23188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 23288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-Iaidl-files 23488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call all-Iaidl-files-under,.) 23588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 23688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 23788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 238a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## Find all of the logtags files under the named directories. 239a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## Meant to be used like: 240a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert## SRC_FILES := $(call all-logtags-files-under,src) 241a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert########################################################### 242a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert 243a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringertdefine all-logtags-files-under 244a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert$(patsubst ./%,%, \ 245a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert $(shell cd $(LOCAL_PATH) ; \ 246a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert find $(1) -name "*.logtags" -and -not -name ".*") \ 247a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert ) 248a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringertendef 249a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert 250a89c990e31b39e58adecd1f72b517d47284b275aBjorn Bringert########################################################### 251a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Find all of the .proto files under the named directories. 252a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Meant to be used like: 253a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## SRC_FILES := $(call all-proto-files-under,src) 254a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 255a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 256a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine all-proto-files-under 257a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(patsubst ./%,%, \ 258a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang $(shell cd $(LOCAL_PATH) ; \ 259a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang find $(1) -name "*.proto" -and -not -name ".*") \ 260a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang ) 261a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 262a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 263a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 2640bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## Find all of the RenderScript files under the named directories. 2650bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## Meant to be used like: 2660bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## SRC_FILES := $(call all-renderscript-files-under,src) 2670bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 2680bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 2690bd59a0a58f9891926ff6faf74a78307230d705bYing Wangdefine all-renderscript-files-under 2700bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(patsubst ./%,%, \ 2710bd59a0a58f9891926ff6faf74a78307230d705bYing Wang $(shell cd $(LOCAL_PATH) ; \ 2720ab6e3e6e62bed00f300fd60110a00ed4ee397cbStephen Hines find $(1) \( -name "*.rs" -or -name "*.fs" \) -and -not -name ".*") \ 2730bd59a0a58f9891926ff6faf74a78307230d705bYing Wang ) 2740bd59a0a58f9891926ff6faf74a78307230d705bYing Wangendef 2750bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 2760bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 2770a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## Find all of the html files under the named directories. 2780a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## Meant to be used like: 2790a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru## SRC_FILES := $(call all-html-files-under,src tests) 2800a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru########################################################### 2810a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru 2820a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Querudefine all-html-files-under 2830a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru$(patsubst ./%,%, \ 2840a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru $(shell cd $(LOCAL_PATH) ; \ 2850a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru find $(1) -name "*.html" -and -not -name ".*") \ 2860a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru ) 2870a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queruendef 2880a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru 2890a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru########################################################### 29088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the html files from here. Meant to be used like: 29188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-html-files) 29288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 29388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 29488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine all-subdir-html-files 2950a3cfdc853efb7a57b06def3bd95127398366acbJean-Baptiste Queru$(call all-html-files-under,.) 29688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 29788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 29888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 29988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the files matching pattern 30088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call find-subdir-files, <pattern>) 30188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 30288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 30388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-files 30488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) ; find $(1))) 30588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 30688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 30788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 30888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# find the files in the subdirectory $1 of LOCAL_DIR 30988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# matching pattern $2, filtering out files $3 31088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# e.g. 31188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# SRC_FILES += $(call find-subdir-subdir-files, \ 31288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# css, *.cpp, DontWantThis.cpp) 31388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 31488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 31588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-subdir-files 31688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out $(patsubst %,$(1)/%,$(3)),$(patsubst ./%,%,$(shell cd \ 31788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(LOCAL_PATH) ; find $(1) -maxdepth 1 -name $(2)))) 31888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 31988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 32088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 32188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find all of the files matching pattern 32288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## SRC_FILES := $(call all-subdir-java-files) 32388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 32488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 32588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-subdir-assets 32688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(if $(1),$(patsubst ./%,%, \ 3276ab5d6aa166f14c79f31240d2902b5b539253af3Ying Wang $(shell if [ -d $(1) ] ; then cd $(1) ; find ./ -not -name '.*' -and -type f -and -not -type l ; fi)), \ 32888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(warning Empty argument supplied to find-subdir-assets) \ 32988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 33088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 33188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 33288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 33388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Find various file types in a list of directories relative to $(LOCAL_PATH) 33488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 33588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 33688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-other-java-files 33788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-subdir-files,$(1) -name "*.java" -and -not -name ".*") 33888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 33988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 34088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-other-html-files 34188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-subdir-files,$(1) -name "*.html" -and -not -name ".*") 34288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 34388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 34488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 34588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Scan through each directory of $(1) looking for files 34688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## that match $(2) using $(wildcard). Useful for seeing if 34788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a given directory or one of its parents contains 34888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a particular file. Returns the first match found, 34988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## starting furthest from the root. 35088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 35188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 35288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine find-parent-file 35388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 354a67ce69e9a1ff267cb3c01bdd3214b6c68aa6f63Ying Wang $(eval _fpf := $(wildcard $(foreach f, $(2), $(strip $(1))/$(f)))) \ 35588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_fpf),$(_fpf), \ 35688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(filter-out ./ .,$(1)), \ 35788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call find-parent-file,$(patsubst %/,%,$(dir $(1))),$(2)) \ 35888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 35988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 36088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 36188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 36288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 36388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 36488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Function we can evaluate to introduce a dynamic dependency 36588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 36688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 36788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-dependency 36888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(1): $(2) 36988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 37088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 37188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 37288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Set up the dependencies for a prebuilt target 37388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(call add-prebuilt-file, srcfile, [targetclass]) 37488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 37588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 37688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-prebuilt-file 37788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval $(include-prebuilt)) 37888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 37988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 38088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine include-prebuilt 38188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project include $$(CLEAR_VARS) 38288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project LOCAL_SRC_FILES := $(1) 38388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project LOCAL_BUILT_MODULE_STEM := $(1) 38488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project LOCAL_MODULE_SUFFIX := $$(suffix $(1)) 38588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project LOCAL_MODULE := $$(basename $(1)) 38688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project LOCAL_MODULE_CLASS := $(2) 38788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project include $$(BUILD_PREBUILT) 38888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 38988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 39088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 39188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## do multiple prebuilts 39288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(call target class, files ...) 39388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 39488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 39588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-prebuilt-files 39688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(foreach f,$(2),$(call add-prebuilt-file,$f,$(1))) 39788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 39888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 39988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 40088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 40188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 40288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## The intermediates directory. Where object files go for 40388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## a given target. We could technically get away without 40488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## the "_intermediates" suffix on the directory, but it's 40588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## nice to be able to grep for that string to find out if 40688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## anyone's abusing the system. 40788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 40888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 40988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): target class, like "APPS" 41088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): target name, like "NotePad" 41188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(3): if non-empty, this is a HOST target. 41288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(4): if non-empty, force the intermediates to be COMMON 41388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine intermediates-dir-for 41488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 41588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfClass := $(strip $(1))) \ 41688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_idfClass),, \ 41788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): Class not defined in call to intermediates-dir-for)) \ 41888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfName := $(strip $(2))) \ 41988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(_idfName),, \ 42088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): Name not defined in call to intermediates-dir-for)) \ 42188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfPrefix := $(if $(strip $(3)),HOST,TARGET)) \ 422a83940fa7851b35712e559be2246b56b5666b805Ying Wang $(if $(filter $(_idfPrefix)-$(_idfClass),$(COMMON_MODULE_CLASSES))$(4), \ 42388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfIntBase := $($(_idfPrefix)_OUT_COMMON_INTERMEDIATES)) \ 42488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project , \ 42588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _idfIntBase := $($(_idfPrefix)_OUT_INTERMEDIATES)) \ 42688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 42788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(_idfIntBase)/$(_idfClass)/$(_idfName)_intermediates \ 42888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 42988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 43088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 43188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Uses LOCAL_MODULE_CLASS, LOCAL_MODULE, and LOCAL_IS_HOST_MODULE 43288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to determine the intermediates directory. 43388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 43488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): if non-empty, force the intermediates to be COMMON 43588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine local-intermediates-dir 43688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(strip \ 43788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(strip $(LOCAL_MODULE_CLASS)),, \ 43888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined before call to local-intermediates-dir)) \ 43988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(strip $(LOCAL_MODULE)),, \ 44088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(error $(LOCAL_PATH): LOCAL_MODULE not defined before call to local-intermediates-dir)) \ 44188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),$(LOCAL_IS_HOST_MODULE),$(1)) \ 44288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project) 44388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 44488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 44588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 44688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "path/to/libXXX.so" to "-lXXX". 44788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Any "path/to/libXXX.a" elements pass through unchanged. 44888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 44988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 45088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-libraries 45188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach so,$(filter %.so,$(1)),-l$(patsubst lib%.so,%,$(notdir $(so))))\ 45288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out %.so,$(1)) 45388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 45488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 45588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: change users to call the common version. 45688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-host-libraries 45788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call normalize-libraries,$(1)) 45888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 45988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 46088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-target-libraries 46188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call normalize-libraries,$(1)) 46288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 46388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 46488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 46588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert a list of short module names (e.g., "framework", "Browser") 46688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## into the list of files that are built for those modules. 46788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## NOTE: this won't return reliable results until after all 46888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## sub-makefiles have been included. 46988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): target list 47088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 47188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 47288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-built-files 47388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach module,$(1),$(ALL_MODULES.$(module).BUILT)) 47488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 47588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 47688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 47788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert a list of short modules names (e.g., "framework", "Browser") 47888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## into the list of files that are installed for those modules. 47988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## NOTE: this won't return reliable results until after all 48088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## sub-makefiles have been included. 48188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): target list 48288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 48388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 48488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-installed-files 48588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach module,$(1),$(ALL_MODULES.$(module).INSTALLED)) 48688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 48788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 48888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 48964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Convert a list of short modules names (e.g., "framework", "Browser") 49064d85d0d827489c514f6aec075482563c80cda73Joe Onorato## into the list of files that should be used when linking 49164d85d0d827489c514f6aec075482563c80cda73Joe Onorato## against that module as a public API. 49264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## TODO: Allow this for more than JAVA_LIBRARIES modules 49364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## NOTE: this won't return reliable results until after all 49464d85d0d827489c514f6aec075482563c80cda73Joe Onorato## sub-makefiles have been included. 49564d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): target list 49664d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 49764d85d0d827489c514f6aec075482563c80cda73Joe Onorato 49864d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine module-stubs-files 49964d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(foreach module,$(1),$(ALL_MODULES.$(module).STUBS)) 50064d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 50164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 50264d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 50364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Evaluates to the timestamp file for a doc module, which 50464d85d0d827489c514f6aec075482563c80cda73Joe Onorato## is the dependency that should be used. 50564d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): doc module 50664d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 50764d85d0d827489c514f6aec075482563c80cda73Joe Onorato 50864d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine doc-timestamp-for 50964d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(OUT_DOCS)/$(strip $(1))-timestamp 51064d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 51164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 51264d85d0d827489c514f6aec075482563c80cda73Joe Onorato 51364d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 514912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang## Convert "core ext framework" to "out/.../javalib.jar ..." 51588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): library list 51688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(2): Non-empty if IS_HOST_MODULE 51788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 51888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 51988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 52088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 52188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-dir 52288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call intermediates-dir-for, \ 523912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang JAVA_LIBRARIES,$(1),$(2),COMMON) 52488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 52588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 52688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 52788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 52888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-full-classes.jar 529912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang$(call _java-lib-dir,$(1),$(2))/classes$(COMMON_JAVA_PACKAGE_SUFFIX) 53088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 53188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 53288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name list 53388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 53488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine java-lib-files 53588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach lib,$(1),$(call _java-lib-full-classes.jar,$(lib),$(2))) 53688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 53788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 53888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name 53988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 54088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _java-lib-full-dep 541912f8286056586da76f1dd03ccfca2990ea5d258Ying Wang$(call _java-lib-dir,$(1),$(2))/javalib$(COMMON_JAVA_PACKAGE_SUFFIX) 54288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 54388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 54488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): library name list 54588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): Non-empty if IS_HOST_MODULE 54688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine java-lib-deps 54788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(foreach lib,$(1),$(call _java-lib-full-dep,$(lib),$(2))) 54888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 54988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 55088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 5518dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## Run rot13 on a string 5528dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## $(1): the string. Must be one line. 5538dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 5548dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratodefine rot13 5558dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato$(shell echo $(1) | tr 'a-zA-Z' 'n-za-mN-ZA-M') 5568dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratoendef 5578dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 5588dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 5598dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 5608dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## Returns true if $(1) and $(2) are equal. Returns 5618dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato## the empty string if they are not equal. 5628dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 5638dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratodefine streq 5648dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato$(strip $(if $(strip $(1)),\ 5658dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(strip $(2)),\ 5668dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(filter-out __,_$(subst $(strip $(1)),,$(strip $(2)))$(subst $(strip $(2)),,$(strip $(1)))_),,true), \ 5678dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato ),\ 5688dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato $(if $(strip $(2)),\ 5698dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato ,\ 5708dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato true)\ 5718dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato )) 5728dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onoratoendef 5738dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato 5748dc8faaaeadf83353b8144cc0db58972f19f5c7eJoe Onorato########################################################### 57588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "a b c" into "a:b:c" 57688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 57788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine normalize-path-list 57888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(subst $(space),:,$(strip $(1))) 57988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 58088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 58188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 58264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Read the word out of a colon-separated list of words. 58364d85d0d827489c514f6aec075482563c80cda73Joe Onorato## This has the same behavior as the built-in function 58464d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(word n,str). 58564d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 58664d85d0d827489c514f6aec075482563c80cda73Joe Onorato## The individual words may not contain spaces. 58764d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 58864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): 1 based index 58964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(2): value of the form a:b:c... 59064d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 59164d85d0d827489c514f6aec075482563c80cda73Joe Onorato 59264d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine word-colon 59364d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(word $(1),$(subst :,$(space),$(2))) 59464d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 59564d85d0d827489c514f6aec075482563c80cda73Joe Onorato 59664d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 59788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Convert "a=b c= d e = f" into "a=b c=d e=f" 59888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 59988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(1): list to collapse 60088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## $(2): if set, separator word; usually "=", ":", or ":=" 60188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Defaults to "=" if not set. 60288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 60388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 60488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine collapse-pairs 60588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(eval _cpSEP := $(strip $(if $(2),$(2),=)))\ 60688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(subst $(space)$(_cpSEP)$(space),$(_cpSEP),$(strip \ 60788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(subst $(_cpSEP), $(_cpSEP) ,$(1)))) 60888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 60988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 61088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 6117e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## Given a list of pairs, if multiple pairs have the same 6127e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## first components, keep only the first pair. 6137e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## 6147e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## $(1): list of pairs 6157e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang## $(2): the separator word, such as ":", "=", etc. 6167e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wangdefine uniq-pairs-by-first-component 6177e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _upbfc_fc_set :=)\ 6187e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(strip $(foreach w,$(1), $(eval _first := $(word 1,$(subst $(2),$(space),$(w))))\ 6197e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang $(if $(filter $(_upbfc_fc_set),$(_first)),,$(w)\ 6207e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang $(eval _upbfc_fc_set += $(_first)))))\ 6217e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _upbfc_fc_set :=)\ 6227e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang$(eval _first:=) 6237e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wangendef 6247e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang 6257e8d442ca4f716dd3a67a63ae59779a1e1a6b45fYing Wang########################################################### 62688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## MODULE_TAG set operations 62788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 62888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 62988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given a list of tags, return the targets that specify 63088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any of those tags. 63188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): tag list 63288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine modules-for-tag-list 63388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(sort $(foreach tag,$(1),$(ALL_MODULE_TAGS.$(tag)))) 63488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 63588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 63688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Same as modules-for-tag-list, but operates on 63788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ALL_MODULE_NAME_TAGS. 63888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): tag list 63988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine module-names-for-tag-list 64088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(sort $(foreach tag,$(1),$(ALL_MODULE_NAME_TAGS.$(tag)))) 64188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 64288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 64388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given an accept and reject list, find the matching 64488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# set of targets. If a target has multiple tags and 64588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any of them are rejected, the target is rejected. 64688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Reject overrides accept. 64788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): list of tags to accept 64888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): list of tags to reject 64988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO(dbort): do $(if $(strip $(1)),$(1),$(ALL_MODULE_TAGS)) 65075127b769e20490f3348802e6b708d67c60c2b04Jean-Baptiste Queru#TODO(jbq): as of 20100106 nobody uses the second parameter 65188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine get-tagged-modules 65288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(filter-out \ 65388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call modules-for-tag-list,$(2)), \ 65488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call modules-for-tag-list,$(1))) 65588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 65688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 65764d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 65864d85d0d827489c514f6aec075482563c80cda73Joe Onorato## Append a leaf to a base path. Properly deals with 65964d85d0d827489c514f6aec075482563c80cda73Joe Onorato## base paths ending in /. 66064d85d0d827489c514f6aec075482563c80cda73Joe Onorato## 66164d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(1): base path 66264d85d0d827489c514f6aec075482563c80cda73Joe Onorato## $(2): leaf path 66364d85d0d827489c514f6aec075482563c80cda73Joe Onorato########################################################### 66464d85d0d827489c514f6aec075482563c80cda73Joe Onorato 66564d85d0d827489c514f6aec075482563c80cda73Joe Onoratodefine append-path 66664d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(subst //,/,$(1)/$(2)) 66764d85d0d827489c514f6aec075482563c80cda73Joe Onoratoendef 66864d85d0d827489c514f6aec075482563c80cda73Joe Onorato 66988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 67088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 67188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Package filtering 67288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 67388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 67488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Given a list of installed modules (short or long names) 67588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# return a list of the packages (yes, .apk packages, not 67688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# modules in general) that are overridden by this list and, 67788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# therefore, should not be installed. 67888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): mixed list of installed modules 67988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: This is fragile; find a reliable way to get this information. 68088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine _get-package-overrides 68188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Discard any words containing slashes, unless they end in .apk, \ 68288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### in which case trim off the directory component and the suffix. \ 68388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### If there are no slashes, keep the entire word.) 68488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(subst /,@@@ @@@,$(1))) 68588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := \ 68688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(filter %.apk,$(_gpo_names)) \ 68788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(filter-out %@@@ @@@%,$(_gpo_names))) 68888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(patsubst %.apk,%,$(_gpo_names))) 68988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(patsubst @@@%,%,$(_gpo_names))) 69088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 69188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Remove any remaining words that contain dots.) 69288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(subst .,@@@ @@@,$(_gpo_names))) 69388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval _gpo_names := $(filter-out %@@@ @@@%,$(_gpo_names))) 69488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 69588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(eval ### Now we have a list of any words that could possibly refer to \ 69688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### packages, although there may be words that do not. Only \ 69788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ### real packages will be present under PACKAGES.*, though.) 69888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(foreach _gpo_name,$(_gpo_names),$(PACKAGES.$(_gpo_name).OVERRIDES)) 69988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 70088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 70188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine get-package-overrides 702d7a1a9b49b9d6e8331bcc5b2ece84903a94553deConley Owens$(sort $(strip $(call _get-package-overrides,$(1)))) 70388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 70488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 70588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 70688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Output the command lines, or not 70788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 70888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 70988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(strip $(SHOW_COMMANDS)),) 71088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine pretty 71188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo $1 71288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 71388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecthide := @ 71488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 71588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine pretty 71688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 71788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecthide := 71888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 71988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 72088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 72188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Dump the variables that are associated with targets 72288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 72388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 72488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine dump-module-variables 72588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo all_dependencies=$^ 72688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_YACCFLAGS=$(PRIVATE_YACCFLAGS); 72788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_CFLAGS=$(PRIVATE_CFLAGS); 72888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_CPPFLAGS=$(PRIVATE_CPPFLAGS); 72988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_DEBUG_CFLAGS=$(PRIVATE_DEBUG_CFLAGS); 73088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_C_INCLUDES=$(PRIVATE_C_INCLUDES); 73188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_LDFLAGS=$(PRIVATE_LDFLAGS); 73288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_LDLIBS=$(PRIVATE_LDLIBS); 73388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ARFLAGS=$(PRIVATE_ARFLAGS); 73488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_AAPT_FLAGS=$(PRIVATE_AAPT_FLAGS); 73588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_DX_FLAGS=$(PRIVATE_DX_FLAGS); 736f184a0f26db350693902ab623c414974978f4ac4Brian Carlstrom@echo PRIVATE_JAVACFLAGS=$(PRIVATE_JAVACFLAGS); 73788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_JAVA_LIBRARIES=$(PRIVATE_JAVA_LIBRARIES); 73888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_SHARED_LIBRARIES=$(PRIVATE_ALL_SHARED_LIBRARIES); 73988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_STATIC_LIBRARIES=$(PRIVATE_ALL_STATIC_LIBRARIES); 74088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_WHOLE_STATIC_LIBRARIES=$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES); 74188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo PRIVATE_ALL_OBJECTS=$(PRIVATE_ALL_OBJECTS); 742703e7c6d50a5bddf0fb057a1a26618e2f7138c31Jeff Brown@echo PRIVATE_NO_CRT=$(PRIVATE_NO_CRT); 74388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 74488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 74588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 74688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for using sed to replace given variable values 74788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 74888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 74988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-variables 75088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 75188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Sed: $(if $(PRIVATE_MODULE),$(PRIVATE_MODULE),$@) <= $<" 75288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) sed $(foreach var,$(REPLACE_VARS),-e "s/{{$(var)}}/$(subst /,\/,$(PWD)/$($(var)))/g") $< >$@ 75388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ "$(suffix $@)" = ".sh" ]; then chmod a+rx $@; fi 75488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 75588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 75688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 75788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 75888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for munging the dependency files GCC generates 75988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 760c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang# $(1): the input .d file 761c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang# $(2): the output .P file 762c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wangdefine transform-d-to-p-args 763c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang$(hide) cp $(1) $(2); \ 764c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 765c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang -e '/^$$/ d' -e 's/$$/ :/' < $(1) >> $(2); \ 766c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang rm -f $(1) 767c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wangendef 76888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 76988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-d-to-p 770c23f4efdbbb8ce76fd5027ef4e2b6ee316ffeb2bYing Wang$(call transform-d-to-p-args,$(@:%.o=%.d),$(@:%.o=%.P)) 77188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 77288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 77388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 77488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running lex 77588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 77688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 77788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-l-to-cpp 77888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 77988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Lex: $(PRIVATE_MODULE) <= $<" 78088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(LEX) -o$@ $< 78188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 78288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 78388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 78488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running yacc 78588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## 78688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Because the extension of c++ files can change, the 78788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## extension must be specified in $1. 78888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## E.g, "$(call transform-y-to-cpp,.cpp)" 78988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 79088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 79188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-y-to-cpp 79288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 79388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Yacc: $(PRIVATE_MODULE) <= $<" 79488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(YACC) $(PRIVATE_YACCFLAGS) -o $@ $< 79588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projecttouch $(@:$1=$(YACC_HEADER_SUFFIX)) 79688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#ifndef '$(@F:$1=_h) > $(@:$1=.h) 79788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#define '$(@F:$1=_h) >> $(@:$1=.h) 79888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectcat $(@:$1=$(YACC_HEADER_SUFFIX)) >> $(@:$1=.h) 79988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectecho '#endif' >> $(@:$1=.h) 80088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectrm -f $(@:$1=$(YACC_HEADER_SUFFIX)) 80188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 80288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8030bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 8040bd59a0a58f9891926ff6faf74a78307230d705bYing Wang## Commands to compile RenderScript 8050bd59a0a58f9891926ff6faf74a78307230d705bYing Wang########################################################### 8060bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 8070bd59a0a58f9891926ff6faf74a78307230d705bYing Wangdefine transform-renderscripts-to-java-and-bc 8080bd59a0a58f9891926ff6faf74a78307230d705bYing Wang@echo "RenderScript: $(PRIVATE_MODULE) <= $(PRIVATE_RS_SOURCE_FILES)" 8090bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) rm -rf $(PRIVATE_RS_OUTPUT_DIR) 8100bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(PRIVATE_RS_OUTPUT_DIR)/res/raw 8110bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(PRIVATE_RS_OUTPUT_DIR)/src 8127d83ef8ff7679239063bb8484f0c1fdcf31abf8bYing Wang$(hide) $(PRIVATE_RS_CC) \ 813ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang -o $(PRIVATE_RS_OUTPUT_DIR)/res/raw \ 814ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang -p $(PRIVATE_RS_OUTPUT_DIR)/src \ 81524e1c018ba83ce6465aa9faf0347071f271d2425Ying Wang -d $(PRIVATE_RS_OUTPUT_DIR) \ 81624e1c018ba83ce6465aa9faf0347071f271d2425Ying Wang -a $@ -MD \ 817c963eae72ca502ac847fa03e87644c660b868295Stephen Hines $(addprefix -target-api , $(PRIVATE_RS_TARGET_API)) \ 818914f7a2990ef0e02d4632dd77076c6c7bb11e6ddStephen Hines $(PRIVATE_RS_FLAGS) \ 819512802772a2516b817ab463659b62c2e6fa7442cYing Wang $(foreach inc,$(PRIVATE_RS_INCLUDES),$(addprefix -I , $(inc))) \ 820ebfddaa55bfcc981c767ea9e3ddbf2f30b6046d1Ying Wang $(PRIVATE_RS_SOURCE_FILES) 821c656030f7d97ef86b4b99ab860cf70a283df7924Shih-wei Liao#$(hide) $(LLVM_RS_LINK) \ 822c656030f7d97ef86b4b99ab860cf70a283df7924Shih-wei Liao# $(PRIVATE_RS_OUTPUT_DIR)/res/raw/*.bc 8230bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) mkdir -p $(dir $@) 8240bd59a0a58f9891926ff6faf74a78307230d705bYing Wang$(hide) touch $@ 8250bd59a0a58f9891926ff6faf74a78307230d705bYing Wangendef 8260bd59a0a58f9891926ff6faf74a78307230d705bYing Wang 82788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 82888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 82988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running aidl 83088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 83188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 83288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-aidl-to-java 83388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 83488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Aidl: $(PRIVATE_MODULE) <= $<" 83588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(AIDL) -d$(patsubst %.java,%.P,$@) $(PRIVATE_AIDL_FLAGS) $< $@ 83688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 83788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#$(AIDL) $(PRIVATE_AIDL_FLAGS) $< - | indent -nut -br -npcs -l1000 > $@ 83888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 83988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 8409bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker########################################################### 8419bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker## Commands for running java-event-log-tags.py 8429bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker########################################################### 8439bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker 8449bd4962af87257c6a97e9026af7e4764394412c2Doug Zongkerdefine transform-logtags-to-java 8459bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker@mkdir -p $(dir $@) 8469bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker@echo "logtags: $@ <= $<" 847abfbbe2e1dc0d8dc01b87492427c670dab70f81fDoug Zongker$(hide) $(JAVATAGS) -o $@ $^ 8489bd4962af87257c6a97e9026af7e4764394412c2Doug Zongkerendef 8499bd4962af87257c6a97e9026af7e4764394412c2Doug Zongker 85088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 85188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 852a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Commands for running protoc to compile .proto into .java 853a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 854a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 855a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine transform-proto-to-java 856a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(dir $@) 857a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@echo "Protoc: $@ <= $(PRIVATE_PROTO_SRC_FILES)" 858a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@rm -rf $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) 859a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(PRIVATE_PROTO_JAVA_OUTPUT_DIR) 86020f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert$(hide) for f in $(PRIVATE_PROTO_SRC_FILES); do \ 86120f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert $(PROTOC) \ 86220f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ 86320f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert $(PRIVATE_PROTO_JAVA_OUTPUT_OPTION)=$(PRIVATE_PROTO_JAVA_OUTPUT_DIR) \ 86420f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert $(PRIVATE_PROTOC_FLAGS) \ 865707328a3efcf9362bfff87c75831436006140d17Ying Wang $$f || exit 33; \ 86620f5efd82caf038697c03daa230345cdda9ae31dBjorn Bringert done 867a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(hide) touch $@ 868a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 869a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 870a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###################################################################### 871a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang## Commands for running protoc to compile .proto into .pb.cc and .pb.h 872a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang###################################################################### 873a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangdefine transform-proto-to-cc 874a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@mkdir -p $(dir $@) 875a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang@echo "Protoc: $@ <= $<" 876a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang$(hide) $(PROTOC) \ 877a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang $(addprefix --proto_path=, $(PRIVATE_PROTO_INCLUDES)) \ 87833c0d952fcba713f00c1cafc8213274e642aee4cYing Wang $(PRIVATE_PROTOC_FLAGS) \ 879a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang --cpp_out=$(PRIVATE_PROTO_CC_OUTPUT_DIR) $< 880a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wangendef 881a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 882a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang 883a5fc87a93713b1976c5bfdd602d1c6bd285e7533Ying Wang########################################################### 88488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a C++ file 88588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 88688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 88788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-cpp-to-o 88888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 88988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target $(PRIVATE_ARM_MODE) C++: $(PRIVATE_MODULE) <= $<" 89088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CXX) \ 891ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 89285f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 8934761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(addprefix -isystem ,\ 8944761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 8954761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 896ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(PRIVATE_TARGET_PROJECT_INCLUDES) \ 8974761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(PRIVATE_TARGET_C_INCLUDES)))) \ 89888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 89988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 9001a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CFLAGS) \ 9011a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CPPFLAGS) \ 90288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ARM_CFLAGS) \ 90388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 9049a8ecf970bf53f7f43a8722212ff4b217a6bb403Doug Kwan $(PRIVATE_RTTI_FLAG) \ 90588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 90688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CPPFLAGS) \ 90788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 90860fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 9093a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 91088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 91188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 91288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 91388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 91488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a C file 91588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 91688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 91788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): extra flags 91888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-or-s-to-o-no-deps 91988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 92088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CC) \ 921ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 92285f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 9234761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(addprefix -isystem ,\ 9244761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 9254761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 926ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(PRIVATE_TARGET_PROJECT_INCLUDES) \ 9274761e56a7175db89b98b6ac07a978f54dcc78213Ying Wang $(PRIVATE_TARGET_C_INCLUDES)))) \ 92888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 92988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 9301a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_CFLAGS) \ 93188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ARM_CFLAGS) \ 93288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 93388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 93488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(1) \ 93588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 93660fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 93788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 93888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 93988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-to-o-no-deps 94088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target $(PRIVATE_ARM_MODE) C: $(PRIVATE_MODULE) <= $<" 94188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-c-or-s-to-o-no-deps, ) 94288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 94388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 94488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-s-to-o-no-deps 94588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target asm: $(PRIVATE_MODULE) <= $<" 94688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-c-or-s-to-o-no-deps, $(PRIVATE_ASFLAGS)) 94788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 94888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 94988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-c-to-o 95088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-c-to-o-no-deps) 9513a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 95288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 95388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 95488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-s-to-o 95588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-s-to-o-no-deps) 9563a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 95788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 95888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 95988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 9605dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## Commands for running gcc to compile an Objective-C file 9615dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## This should never happen for target builds but this 9625dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## will error at build time. 9635dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 9645dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 9655dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-m-to-o-no-deps 9665dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner@echo "target ObjC: $(PRIVATE_MODULE) <= $<" 9675dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(call transform-c-or-s-to-o-no-deps) 9685dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 9695dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 9705dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-m-to-o 9715dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-m-to-o-no-deps) 9723a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-d-to-p) 9735dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 9745dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 9755dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 97688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a host C++ file 97788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 97888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 97988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-cpp-to-o 98088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 98188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host C++: $(PRIVATE_MODULE) <= $<" 98288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CXX) \ 983ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 98485f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 985ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -isystem ,\ 98688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 987ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 988ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_PROJECT_INCLUDES) \ 989ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_C_INCLUDES)))) \ 99088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 99188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 99288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(HOST_GLOBAL_CFLAGS) \ 99388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(HOST_GLOBAL_CPPFLAGS) \ 99488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 99588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 99688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CPPFLAGS) \ 99788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 99860fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 99988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 100088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 100188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 100288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 100388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 100488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to compile a host C file 100588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 100688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 100788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): extra flags 100888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-or-s-to-o-no-deps 100988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 101088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CC) \ 1011ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -I , $(PRIVATE_C_INCLUDES)) \ 101285f3b219719657150c5bb63663983ea5a18be662Andrew Boie $(shell cat $(PRIVATE_IMPORT_INCLUDES)) \ 1013ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(addprefix -isystem ,\ 101488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1015ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(filter-out $(PRIVATE_C_INCLUDES), \ 1016ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_PROJECT_INCLUDES) \ 1017ddbcad8c852980aabd2c7b02b909726d5c697182Ying Wang $(HOST_C_INCLUDES)))) \ 101888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -c \ 101988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 102088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(HOST_GLOBAL_CFLAGS) \ 102188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 102288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CFLAGS) \ 102388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(1) \ 102488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DEBUG_CFLAGS) \ 102560fe963c63c1b98255ad1cf40573b81b5d90d9c3Atte Peltomaki -MD -MF $(patsubst %.o,%.d,$@) -o $@ $< 102688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 102788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 102888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-to-o-no-deps 102988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host C: $(PRIVATE_MODULE) <= $<" 103088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-host-c-or-s-to-o-no-deps, ) 103188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 103288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 103388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-s-to-o-no-deps 103488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host asm: $(PRIVATE_MODULE) <= $<" 103588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(call transform-host-c-or-s-to-o-no-deps, $(PRIVATE_ASFLAGS)) 103688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 103788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 103888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-c-to-o 103988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-host-c-to-o-no-deps) 104088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 104188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 104288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 104388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-s-to-o 104488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-host-s-to-o-no-deps) 104588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(transform-d-to-p) 10465dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 10475dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10485dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 10495dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner## Commands for running gcc to compile a host Objective-C file 10505dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner########################################################### 10515dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10525dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerdefine transform-host-m-to-o-no-deps 10535dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner@echo "host ObjC: $(PRIVATE_MODULE) <= $<" 10545dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(call transform-host-c-or-s-to-o-no-deps) 10555dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turnerendef 10565dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner 10575ca286d58bc2f8e2445ae77d7ca8b4046a016988David 'Digit' Turnerdefine transform-host-m-to-o 10585dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-host-m-to-o-no-deps) 10595dbb529de9f84e731e26b83525f3f599f1914acaDavid 'Digit' Turner$(transform-d-to-p) 106088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 106188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 106288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 106388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running ar 106488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 106588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1066e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangdefine _concat-if-arg2-not-empty 1067e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(if $(2),$(hide) $(1) $(2)) 1068e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangendef 1069e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang 1070e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# Split long argument list into smaller groups and call the command repeatedly 1071bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)# Call the command at least once even if there are no arguments, as otherwise 1072bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)# the output file won't be created. 1073e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# 1074e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# $(1): the command without arguments 1075e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang# $(2): the arguments 1076e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangdefine split-long-arguments 1077bffaef246a5b838eb40a642463b1186935424faeTorne (Richard Coles)$(hide) $(1) $(wordlist 1,500,$(2)) 1078e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 501,1000,$(2))) 1079e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1001,1500,$(2))) 1080e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 1501,2000,$(2))) 1081e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 2001,2500,$(2))) 1082e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 2501,3000,$(2))) 1083e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call _concat-if-arg2-not-empty,$(1),$(wordlist 3001,99999,$(2))) 1084e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wangendef 1085e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang 1086a02d3d9f746a0cd267bd793fca256f355111484bYing Wang# $(1): the full path of the source static library. 1087a02d3d9f746a0cd267bd793fca256f355111484bYing Wangdefine _extract-and-include-single-target-whole-static-lib 1088a02d3d9f746a0cd267bd793fca256f355111484bYing Wang@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(1)]" 1089a02d3d9f746a0cd267bd793fca256f355111484bYing Wang$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\ 1090a02d3d9f746a0cd267bd793fca256f355111484bYing Wang rm -rf $$ldir; \ 1091a02d3d9f746a0cd267bd793fca256f355111484bYing Wang mkdir -p $$ldir; \ 1092a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist=; \ 1093a02d3d9f746a0cd267bd793fca256f355111484bYing Wang for f in `$(TARGET_AR) t $(1)`; do \ 1094a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(TARGET_AR) p $(1) $$f > $$ldir/$$f; \ 1095a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist="$$filelist $$ldir/$$f"; \ 1096a02d3d9f746a0cd267bd793fca256f355111484bYing Wang done ; \ 1097a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $$filelist 1098a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 1099a02d3d9f746a0cd267bd793fca256f355111484bYing Wangendef 1100a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 11013d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteindefine extract-and-include-target-whole-static-libs 110246e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \ 1103a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(call _extract-and-include-single-target-whole-static-lib, $(lib))) 110446e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavinendef 110546e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin 110688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Explicitly delete the archive first so that ar doesn't 110788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# try to add to an existing archive. 110888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-lib 110988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 111088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@rm -f $@ 11113d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(extract-and-include-target-whole-static-libs) 111246e9beca50057bd4ff375b35fd5958c05ce5bcb7Dima Zavin@echo "target StaticLib: $(PRIVATE_MODULE) ($@)" 1113e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call split-long-arguments,$(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) 111488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 111588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 111688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 111788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running host ar 111888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 111988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1120a02d3d9f746a0cd267bd793fca256f355111484bYing Wang# $(1): the full path of the source static library. 1121a02d3d9f746a0cd267bd793fca256f355111484bYing Wangdefine _extract-and-include-single-host-whole-static-lib 1122a02d3d9f746a0cd267bd793fca256f355111484bYing Wang@echo "preparing StaticLib: $(PRIVATE_MODULE) [including $(1)]" 1123a02d3d9f746a0cd267bd793fca256f355111484bYing Wang$(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs;\ 1124a02d3d9f746a0cd267bd793fca256f355111484bYing Wang rm -rf $$ldir; \ 1125a02d3d9f746a0cd267bd793fca256f355111484bYing Wang mkdir -p $$ldir; \ 1126a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist=; \ 1127293f9392ba39115a9429b5c8f98a5ca4054b3e21Jeff Hamilton for f in `$(HOST_AR) t $(1) | \grep '\.o$$'`; do \ 1128a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(HOST_AR) p $(1) $$f > $$ldir/$$f; \ 1129a02d3d9f746a0cd267bd793fca256f355111484bYing Wang filelist="$$filelist $$ldir/$$f"; \ 1130a02d3d9f746a0cd267bd793fca256f355111484bYing Wang done ; \ 1131a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(HOST_AR) $(HOST_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $$filelist 1132a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 1133a02d3d9f746a0cd267bd793fca256f355111484bYing Wangendef 1134a02d3d9f746a0cd267bd793fca256f355111484bYing Wang 11353d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteindefine extract-and-include-host-whole-static-libs 11363d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(foreach lib,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES), \ 1137a02d3d9f746a0cd267bd793fca256f355111484bYing Wang $(call _extract-and-include-single-host-whole-static-lib, $(lib))) 11383d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornsteinendef 11393d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein 114088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Explicitly delete the archive first so that ar doesn't 114188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# try to add to an existing archive. 114288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-static-lib 114388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 114488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@rm -f $@ 11453d02eacbdef0c1a0c0725d10628bec13f4139be9Dan Bornstein$(extract-and-include-host-whole-static-libs) 11466bffc91c5d85ee828b37fa56efb7d87a76214747Dan Bornstein@echo "host StaticLib: $(PRIVATE_MODULE) ($@)" 1147e4b24ebab8757ce52a1bd3b3b9986e4d253f0166Ying Wang$(call split-long-arguments,$(HOST_AR) $(HOST_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) 114888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 114988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 115088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 115188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 115288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a shared library or package 115388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 115488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 115588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ld just seems to be so finicky with command order that we allow 115688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# it to be overriden en-masse see combo/linux-arm.make for an example. 115788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(HOST_CUSTOM_LD_COMMAND),true) 115888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-shared-lib-inner 11593a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 116080e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang -Wl,-rpath-link=$(HOST_OUT_INTERMEDIATE_LIBRARIES) \ 116188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath,\$$ORIGIN/../lib \ 116288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -shared -Wl,-soname,$(notdir $@) \ 116388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDFLAGS) \ 116488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(HOST_GLOBAL_LD_DIRS) \ 116588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 116688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(HOST_GLOBAL_LDFLAGS) \ 116788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) \ 116888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 116988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 117088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 117188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1172fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 117388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1174fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 117588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 117688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 117788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 117888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 117988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 118088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 118188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-shared-lib 118288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 118388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host SharedLib: $(PRIVATE_MODULE) ($@)" 11843a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-shared-lib-inner) 118588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 118688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 118788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-package 118888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 118988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Package: $(PRIVATE_MODULE) ($@)" 11903a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-shared-lib-inner) 119188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 119288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 119388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 119488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 119588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a shared library or package 119688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 119788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 119888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >$@.vers "{"; \ 119988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " global:"; \ 120088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#$(BUILD_SYSTEM)/filter_symbols.sh $(TARGET_NM) " " ";" $(filter %.o,$^) | sort -u >>$@.vers; \ 120188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " local:"; \ 120288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers " *;"; \ 120388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#echo >>$@.vers "};"; \ 120488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 120588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -Wl,--version-script=$@.vers \ 120688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 120788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ld just seems to be so finicky with command order that we allow 120888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# it to be overriden en-masse see combo/linux-arm.make for an example. 120988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 121088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-shared-lib-inner 12113a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 12121a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 121388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 121488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath,\$$ORIGIN/../lib \ 121588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -shared -Wl,-soname,$(notdir $@) \ 121688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDFLAGS) \ 12171a08100fa9d92c25de32ba4d13fd3958bbcab894Ying Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 121888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 121988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 122080e6cce93e36787be9123f9b5dc91da1a0d2f472Ying Wang $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 122188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1222fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 122388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1224fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 122588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 122688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 122788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 122888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 122988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 123088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 123188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-shared-lib 123288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 123388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target SharedLib: $(PRIVATE_MODULE) ($@)" 12343a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-o-to-shared-lib-inner) 123588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 123688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 123788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-package 123888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 123988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Package: $(PRIVATE_MODULE) ($@)" 12403a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-o-to-shared-lib-inner) 124188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 124288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 124388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 124488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 124588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for filtering a target executable or library 124688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 124788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 124888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-to-stripped 124988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 125088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Strip: $(PRIVATE_MODULE) ($@)" 125145ac4341515f7ff4d483cfb8e2fba8d3c2cb1f6eBruce Beare$(hide) $(TARGET_STRIP_COMMAND) 125288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 125388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 125488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 125588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 125688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link an executable 125788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 125888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 125988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 126088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-executable-inner 12613a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 126257ddcb1bbce7a980e677dfd212ce76229fe33f55Ying Wang $(PRIVATE_TARGET_GLOBAL_LDFLAGS) \ 126357ddcb1bbce7a980e677dfd212ce76229fe33f55Ying Wang $(PRIVATE_TARGET_GLOBAL_LD_DIRS) \ 126488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 126588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,-rpath,\$$ORIGIN/../lib \ 126688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDFLAGS) \ 126788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 126888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 126988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 127088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1271fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 127288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1273fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 127488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 127588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 127688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 127788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 127888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 127988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 128088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-executable 128188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 128288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Executable: $(PRIVATE_MODULE) ($@)" 12833a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-o-to-executable-inner) 128488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 128588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 128688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 128788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 128888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a statically linked 128988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## executable. In practice, we only use this on arm, so 129088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## the other platforms don't have the 129188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## transform-o-to-static-executable defined 129288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 129388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 129488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(TARGET_CUSTOM_LD_COMMAND),true) 129588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-executable-inner 129688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 129788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 129888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 129988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-o-to-static-executable 130088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 130188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target StaticExecutable: $(PRIVATE_MODULE) ($@)" 13023a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-o-to-static-executable-inner) 130388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 130488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 130588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 130688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 130788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running gcc to link a host executable 130888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 130988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 131088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifneq ($(HOST_CUSTOM_LD_COMMAND),true) 131188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-executable-inner 13123a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(hide) $(PRIVATE_CXX) \ 131388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_ALL_OBJECTS) \ 131488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--whole-archive \ 131588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 131688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -Wl,--no-whole-archive \ 1317fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--start-group) \ 131888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 1319fcdabd4bdbb347399e77d2fd4b1aefd6281d75f8Ying Wang $(if $(PRIVATE_GROUP_STATIC_LIBRARIES),-Wl$(comma)--end-group) \ 132088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 1321d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens -Wl,-rpath-link=$(HOST_OUT_INTERMEDIATE_LIBRARIES) \ 1322d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens -Wl,-rpath,\$$ORIGIN/../lib \ 1323d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens $(HOST_GLOBAL_LD_DIRS) \ 1324d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens $(PRIVATE_LDFLAGS) \ 1325d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens $(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \ 1326d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens $(HOST_GLOBAL_LDFLAGS) \ 1327d9e7d257416a4c85f575161c10c589b3656db3e9Conley Owens ) \ 132888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -o $@ \ 132988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_LDLIBS) 133088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 133188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 133288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 133388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-o-to-executable 133488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 133588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Executable: $(PRIVATE_MODULE) ($@)" 13363a7e4ccad9c910ac798a8c324f7718d137bd7692Ying Wang$(transform-host-o-to-executable-inner) 133788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 133888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 133988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 134088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 134188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for running javac to make .class files 134288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 134388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 134488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#@echo "Source intermediates dir: $(PRIVATE_SOURCE_INTERMEDIATES_DIR)" 134588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#@echo "Source intermediates: $$(find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java')" 134688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 134788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO: Right now we generate the asset resources twice, first as part 134888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# of generating the Java classes, then at the end when packaging the final 134988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# assets. This should be changed to do one of two things: (1) Don't generate 135088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# any resource files the first time, only create classes during that stage; 135188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# or (2) Don't use the -c flag with the second stage, instead taking the 135288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# resource files from the first stage as additional input. My original intent 135388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# was to use approach (2), but this requires a little more work in the tool. 135488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Maybe we should just use approach (1). 135588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 135688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# This rule creates the R.java and Manifest.java files, both of which 13574f1ab92aac00a73276793ed25af669d112618a32Ying Wang# are PRODUCT-neutral. Don't pass PRIVATE_PRODUCT_AAPT_CONFIG to this invocation. 135888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine create-resource-java-files 135988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(PRIVATE_SOURCE_INTERMEDIATES_DIR) 136088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $(PRIVATE_RESOURCE_PUBLICS_OUTPUT)) 1361c61d5932d3b1014352dd5cbcb2684a95b3e172a3Ying Wang$(hide) $(AAPT) package $(PRIVATE_AAPT_FLAGS) -m \ 13624f1ab92aac00a73276793ed25af669d112618a32Ying Wang $(eval # PRIVATE_PRODUCT_AAPT_CONFIG is intentionally missing-- see comment.) \ 136388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -J , $(PRIVATE_SOURCE_INTERMEDIATES_DIR)) \ 136488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \ 136588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -P , $(PRIVATE_RESOURCE_PUBLICS_OUTPUT)) \ 136688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -S , $(PRIVATE_RESOURCE_DIR)) \ 136788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -A , $(PRIVATE_ASSET_DIR)) \ 13689bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn $(addprefix -I , $(PRIVATE_AAPT_INCLUDES)) \ 13692daa2b3b059ac755e8280741b23d65360ae233bcJoe Onorato $(addprefix -G , $(PRIVATE_PROGUARD_OPTIONS_FILE)) \ 1370bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --min-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1371bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --target-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 13721ae607add31de4708e732c7139e68d425b920595Ying Wang $(if $(filter --version-code,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-code , $(PLATFORM_SDK_VERSION))) \ 13738f5069b1be9af316c948e9cd7bae2abdc33da5bcYing Wang $(if $(filter --version-name,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-name , $(PLATFORM_VERSION)-$(BUILD_NUMBER))) \ 13748c254825a062fd240566404d9d6ecc7cc56b30baYing Wang $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \ 13753dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) 137688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 137788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 137888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(HOST_OS),windows) 137988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectxlint_unchecked := 138088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 13817adbf97d110ebe137579e1078e3846aa4f3c6c2cJeffrey Chyanxlint_unchecked := -Xlint:unchecked 138288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 138388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1384bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromifeq (true, $(ENABLE_INCREMENTALJAVAC)) 1385bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromincremental_dex := --incremental 1386bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromelse 1387bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromincremental_dex := 1388bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstromendif 1389bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom 139088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# emit-line, <word list>, <output file> 139188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine emit-line 139288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(1),echo -n '$(strip $(1)) ' >> $(2)) 139388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 139488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 139588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# dump-words-to-file, <word list>, <output file> 139688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine dump-words-to-file 139788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @rm -f $(2) 139888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1,200,$(1)),$(2)) 139988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 201,400,$(1)),$(2)) 140088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 401,600,$(1)),$(2)) 140188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 601,800,$(1)),$(2)) 140288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 801,1000,$(1)),$(2)) 140388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1001,1200,$(1)),$(2)) 140488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1201,1400,$(1)),$(2)) 140588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1401,1600,$(1)),$(2)) 140688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1601,1800,$(1)),$(2)) 140788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 1801,2000,$(1)),$(2)) 140888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2001,2200,$(1)),$(2)) 140988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2201,2400,$(1)),$(2)) 141088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2401,2600,$(1)),$(2)) 141188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2601,2800,$(1)),$(2)) 141288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 2801,3000,$(1)),$(2)) 141388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3001,3200,$(1)),$(2)) 141488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3201,3400,$(1)),$(2)) 141588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3401,3600,$(1)),$(2)) 141688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3601,3800,$(1)),$(2)) 141788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(call emit-line,$(wordlist 3801,4000,$(1)),$(2)) 141872c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4001,4200,$(1)),$(2)) 141972c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4201,4400,$(1)),$(2)) 142072c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4401,4600,$(1)),$(2)) 142172c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4601,4800,$(1)),$(2)) 142272c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(call emit-line,$(wordlist 4801,5000,$(1)),$(2)) 142372c941a14757255a73f0bf31d689cc2b99fff6cfJesse Wilson @$(if $(wordlist 5001,5002,$(1)),$(error Too many words ($(words $(1))))) 142488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 142588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 142688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# For a list of jar files, unzip them to a specified directory, 142788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# but make sure that no META-INF files come along for the ride. 142888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 142988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): files to unzip 143088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination directory 143188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine unzip-jar-files 143288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) for f in $(1); \ 143388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project do \ 143488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project if [ ! -f $$f ]; then \ 143588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project echo Missing file $$f; \ 143688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project exit 1; \ 143788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi; \ 1438f1a55f8bfbaa1a68d96e229b4e73c9e9209d82cfSriram Raman unzip -qo $$f -d $(2); \ 14393a6f7589e8fcc691ec768b1fdcbf0364ff4596f2Ying Wang done \ 14403a6f7589e8fcc691ec768b1fdcbf0364ff4596f2Ying Wang $(if $(PRIVATE_DONT_DELETE_JAR_META_INF),,;rm -rf $(2)/META-INF) 144188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 144288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1443782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Common definition to invoke javac on the host and target. 1444782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# 1445782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Some historical notes: 1446782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# - below we write the list of java files to java-source-list to avoid argument 1447782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# list length problems with Cygwin 1448782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# - we filter out duplicate java file names because eclipse's compiler 1449782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# doesn't like them. 1450782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# 1451782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# $(1): javac 1452782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# $(2): bootclasspath 1453782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromdefine compile-java 145464d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) rm -f $@ 145564d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1456782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(hide) mkdir -p $(dir $@) 145764d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1458782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(call unzip-jar-files,$(PRIVATE_STATIC_JAVA_LIBRARIES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)) 1459015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call dump-words-to-file,$(PRIVATE_JAVA_SOURCES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list) 146064d85d0d827489c514f6aec075482563c80cda73Joe Onorato$(hide) if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ 1461015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' >> $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list; \ 146288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectfi 1463015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) tr ' ' '\n' < $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list \ 1464015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang | sort -u > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1465e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang$(hide) if [ -s $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq ] ; then \ 1466e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang $(1) -encoding UTF-8 \ 1467782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) \ 1468782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(if $(findstring true,$(LOCAL_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1469782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(2) \ 147088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -classpath ,$(strip \ 147188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(call normalize-path-list,$(PRIVATE_ALL_JAVA_LIBRARIES)))) \ 1472782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(if $(findstring true,$(LOCAL_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 147388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1474782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom $(PRIVATE_JAVACFLAGS) \ 1475015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang \@$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq \ 1476e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wang || ( rm -rf $(PRIVATE_CLASS_INTERMEDIATES_DIR) ; exit 41 ) \ 1477e109a1d08d27ad18cc6ac70d9742de636ccae67eYing Wangfi 1478015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list 1479015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 14805758b8ed96783861c72b94a822c0ed581f414388Ying Wang$(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 14815758b8ed96783861c72b94a822c0ed581f414388Ying Wang -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ 14825758b8ed96783861c72b94a822c0ed581f414388Ying Wang $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ 14835758b8ed96783861c72b94a822c0ed581f414388Ying Wang | xargs rm -rf) 148488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) jar $(if $(strip $(PRIVATE_JAR_MANIFEST)),-cfm,-cf) \ 148588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $@ $(PRIVATE_JAR_MANIFEST) -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) . 1486782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromendef 1487782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom 1488782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstromdefine transform-java-to-classes.jar 1489782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom@echo "target Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1490782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom$(call compile-java,$(TARGET_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 149188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 149288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1493015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang# Override the above definitions if we want to do incremetal javac 1494015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangifeq (true, $(ENABLE_INCREMENTALJAVAC)) 1495015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangdefine compile-java 1496015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mkdir -p $(dir $@) 1497015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mkdir -p $(PRIVATE_CLASS_INTERMEDIATES_DIR) 1498015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) touch $(PRIVATE_CLASS_INTERMEDIATES_DIR)/newstamp 1499015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call unzip-jar-files,$(PRIVATE_STATIC_JAVA_LIBRARIES),$(PRIVATE_CLASS_INTERMEDIATES_DIR)) 1500015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) if [ -e $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp ] ; then \ 1501015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang newerFlag=$$(echo -n "-newer $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp") ; \ 1502015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang fi ; \ 1503015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang find $(PRIVATE_JAVA_SOURCES) $$newerFlag > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list ; \ 1504015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang if [ -d "$(PRIVATE_SOURCE_INTERMEDIATES_DIR)" ]; then \ 1505015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name '*.java' $$newerFlag >> $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list; \ 1506015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang fi 1507015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) tr ' ' '\n' < $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list \ 1508015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang | sort -u > $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1509015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@echo "(Incremental) build source files:" 1510015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@cat $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1511015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) if [ -s $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq ] ; then \ 1512149dd914b8799d67b8c4a6fb502b44058a3e14b8Joe Onorato $(1) -encoding UTF-8 \ 1513015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(strip $(PRIVATE_JAVAC_DEBUG_FLAGS)) \ 1514015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(if $(findstring true,$(LOCAL_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1515015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(2) \ 1516015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(addprefix -classpath ,$(strip \ 1517015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(call normalize-path-list,$(PRIVATE_ALL_JAVA_LIBRARIES) $(PRIVATE_CLASS_INTERMEDIATES_DIR)))) \ 1518015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(if $(findstring true,$(LOCAL_WARNINGS_ENABLE)),$(xlint_unchecked),) \ 1519015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang -extdirs "" -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1520015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $(PRIVATE_JAVACFLAGS) \ 1521015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang \@$(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq \ 1522015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang || ( exit 41 ) \ 1523015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangfi 1524015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list 1525015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $(PRIVATE_CLASS_INTERMEDIATES_DIR)/java-source-list-uniq 1526015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) rm -f $@ 1527ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang$(if $(PRIVATE_JAR_EXCLUDE_FILES), $(hide) find $(PRIVATE_CLASS_INTERMEDIATES_DIR) \ 1528ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang -name $(word 1, $(PRIVATE_JAR_EXCLUDE_FILES)) \ 1529ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang $(addprefix -o -name , $(wordlist 2, 999, $(PRIVATE_JAR_EXCLUDE_FILES))) \ 1530ae25ec1bcdeb028a2db3103abdf1f22768928f0aYing Wang | xargs rm -rf) 1531015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) jar $(if $(strip $(PRIVATE_JAR_MANIFEST)),-cfm,-cf) \ 1532015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang $@ $(PRIVATE_JAR_MANIFEST) -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) . 1533015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(hide) mv $(PRIVATE_CLASS_INTERMEDIATES_DIR)/newstamp $(PRIVATE_CLASS_INTERMEDIATES_DIR)/stamp 1534015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendef 1535015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang 1536015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangdefine transform-java-to-classes.jar 1537015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang@echo "target Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1538015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call compile-java,$(TARGET_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 1539015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendef 1540015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wangendif # ENABLE_INCREMENTALJAVAC 1541015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang 154288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-classes.jar-to-emma 154388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) java -classpath $(EMMA_JAR) emma instr -outmode fullcopy -outfile \ 1544155afe393faa0aae47d517fa687a7e4ab3cae91bGuang Zhu $(PRIVATE_EMMA_COVERAGE_FILE) -ip $< -d $(PRIVATE_EMMA_INTERMEDIATES_DIR) \ 15459cd3d8c6543ffb2eef7935d8f832f99675dc630eGuang Zhu $(addprefix -ix , $(PRIVATE_EMMA_COVERAGE_FILTER)) 154688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 154788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 154888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: use a smaller -Xmx value for most libraries; 154988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# only core.jar and framework.jar need a heap this big. 1550f6ff4c5acf428d4b0cba828b836f1e11fa1442b4Raphael# Avoid the memory arguments on Windows, dx fails to load for some reason with them. 155188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-classes.jar-to-dex 155288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Dex: $(PRIVATE_MODULE)" 155388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 1554f6ff4c5acf428d4b0cba828b836f1e11fa1442b4Raphael$(hide) $(DX) \ 155529b3afaf79e89e5707c6a28e7ed55d3c04810352Wink Saville $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx2048M) \ 155688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --dex --output=$@ \ 1557bb7c6d88c6dd5ee48e8b8ec85ee04c0aa7bc5979Brian Carlstrom $(incremental_dex) \ 155888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(NO_OPTIMIZE_DX), \ 155988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --no-optimize) \ 156088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(if $(GENERATE_DEX_DEBUG), \ 156188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --debug --verbose \ 156288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --dump-to=$(@:.dex=.lst) \ 156388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project --dump-width=1000) \ 156488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_DX_FLAGS) \ 156588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $< 156688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 156788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 156888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Create a mostly-empty .jar file that we'll add to later. 156988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The MacOS jar tool doesn't like creating empty jar files, 157088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# so we need to give it something. 157188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine create-empty-package 157288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 157388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) touch $(dir $@)/dummy 157488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) (cd $(dir $@) && jar cf $(notdir $@) dummy) 157588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) zip -qd $@ dummy 157688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) rm $(dir $@)/dummy 157788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 157888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 157988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: we kinda want to build different asset packages for 158088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# different configurations, then combine them later (or something). 158188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Per-locale, etc. 158288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# A list of dynamic and static parameters; build layers for 158388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# dynamic params that lay over the static ones. 158488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: update the manifest to point to the package file 15859bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#Note that the version numbers are given to aapt as simple default 15869bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#values; applications can override these by explicitly stating 15879bd5404a9d30b82ba3d2750c0cb8cae88b33f82dDianne Hackborn#them in their manifest. 158888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-assets-to-package 1589c61d5932d3b1014352dd5cbcb2684a95b3e172a3Ying Wang$(hide) $(AAPT) package -u $(PRIVATE_AAPT_FLAGS) \ 15904f1ab92aac00a73276793ed25af669d112618a32Ying Wang $(addprefix -c , $(PRIVATE_PRODUCT_AAPT_CONFIG)) \ 1591a0f464a8e7f006177db084df7e925bbb8e5ffed3Dianne Hackborn $(addprefix --preferred-configurations , $(PRIVATE_PRODUCT_AAPT_PREF_CONFIG)) \ 159288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -M , $(PRIVATE_ANDROID_MANIFEST)) \ 159388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -S , $(PRIVATE_RESOURCE_DIR)) \ 159488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -A , $(PRIVATE_ASSET_DIR)) \ 159588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(addprefix -I , $(PRIVATE_AAPT_INCLUDES)) \ 1596bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --min-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1597bb9c230b68e9b57fe60f050e231f8437324f107aYing Wang $(addprefix --target-sdk-version , $(PRIVATE_DEFAULT_APP_TARGET_SDK)) \ 1598700b88e1451f216d137d8a356496bf51712512c6Joe Onorato $(addprefix --product , $(TARGET_AAPT_CHARACTERISTICS)) \ 15991ae607add31de4708e732c7139e68d425b920595Ying Wang $(if $(filter --version-code,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-code , $(PLATFORM_SDK_VERSION))) \ 16008f5069b1be9af316c948e9cd7bae2abdc33da5bcYing Wang $(if $(filter --version-name,$(PRIVATE_AAPT_FLAGS)),,$(addprefix --version-name , $(PLATFORM_VERSION)-$(BUILD_NUMBER))) \ 1601bb67d21337f8d87628fbc09585be6cfe6ab0336cJeff Hamilton $(addprefix --rename-manifest-package , $(PRIVATE_MANIFEST_PACKAGE_NAME)) \ 16023dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(addprefix --rename-instrumentation-target-package , $(PRIVATE_MANIFEST_INSTRUMENTATION_FOR)) \ 160388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -F $@ 160488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 160588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 160688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-jni-shared-libs-to-package 160788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) rm -rf $(dir $@)lib 1608a0ab29b986af30351efc2983faaf93bcbf040303Jack Palevich$(hide) mkdir -p $(dir $@)lib/$(PRIVATE_JNI_SHARED_LIBRARIES_ABI) 1609a0ab29b986af30351efc2983faaf93bcbf040303Jack Palevich$(hide) cp $(PRIVATE_JNI_SHARED_LIBRARIES) $(dir $@)lib/$(PRIVATE_JNI_SHARED_LIBRARIES_ABI) 161088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) (cd $(dir $@) && zip -r $(notdir $@) lib) 161188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) rm -rf $(dir $@)lib 161288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 161388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 161488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#TODO: update the manifest to point to the dex file 161588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-dex-to-package 1616957fea52f3f617299309b6f119a7c99fb869bab3Ying Wang$(if $(filter classes.dex,$(notdir $(PRIVATE_DEX_FILE))),\ 1617957fea52f3f617299309b6f119a7c99fb869bab3Ying Wang$(hide) $(AAPT) add -k $@ $(PRIVATE_DEX_FILE),\ 16186e7db38de7cfc905413e27cc8967909727db3022Ying Wang$(hide) _adtp_classes_dex=$(dir $(PRIVATE_DEX_FILE))classes.dex; \ 16196e7db38de7cfc905413e27cc8967909727db3022Ying Wangcp $(PRIVATE_DEX_FILE) $$_adtp_classes_dex && \ 16206e7db38de7cfc905413e27cc8967909727db3022Ying Wang$(AAPT) add -k $@ $$_adtp_classes_dex && rm -f $$_adtp_classes_dex) 162188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 162288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16233e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang# Add java resources added by the current module. 16243e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang# 162588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine add-java-resources-to-package 1626194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(call dump-words-to-file, $(PRIVATE_EXTRA_JAR_ARGS), $(dir $@)jar-arg-list) 1627194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(hide) jar uf $@ @$(dir $@)jar-arg-list 1628194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang@rm -f $(dir $@)jar-arg-list 162988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 163088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 16313e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang# Add java resources carried by static Java libraries. 16323e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang# 16333e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wangdefine add-carried-java-resources 16343e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang$(hide) if [ -d $(PRIVATE_CLASS_INTERMEDIATES_DIR) ] ; then \ 16353e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang java_res_jar_flags=$$(find $(PRIVATE_CLASS_INTERMEDIATES_DIR) -type f -a -not -name "*.class" \ 16363e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang | sed -e "s?^$(PRIVATE_CLASS_INTERMEDIATES_DIR)/? -C $(PRIVATE_CLASS_INTERMEDIATES_DIR) ?"); \ 16373e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang if [ -n "$$java_res_jar_flags" ] ; then \ 16383e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang echo $$java_res_jar_flags >$(dir $@)java_res_jar_flags; \ 16393e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang jar uf $@ $$java_res_jar_flags; \ 16403e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang fi; \ 16413e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wangfi 16423e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wangendef 16433e500c63563c9a2ed1ed7b1ae8a094493dbc65d2Ying Wang 164488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Sign a package using the specified key/cert. 164588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 164688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine sign-package 164788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@ $@.unsigned 164888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) java -jar $(SIGNAPK_JAR) \ 164988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_CERTIFICATE) $(PRIVATE_PRIVATE_KEY) $@.unsigned $@.signed 165088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@.signed $@ 165188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 165288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 165388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Align STORED entries of a package on 4-byte boundaries 165488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to make them easier to mmap. 165588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 165688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine align-package 165788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@ $@.unaligned 165888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(ZIPALIGN) -f 4 $@.unaligned $@.aligned 165988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) mv $@.aligned $@ 166088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 166188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 166288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine install-dex-debug 166388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ -f "$(PRIVATE_INTERMEDIATES_DIR)/classes.dex" ]; then \ 166488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mkdir -p $(TOP)/dalvik/DEBUG-FILES; \ 166588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(ACP) $(PRIVATE_INTERMEDIATES_DIR)/classes.dex \ 166688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(TOP)/dalvik/DEBUG-FILES/$(PRIVATE_MODULE).dex; \ 166788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi 166888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) if [ -f "$(PRIVATE_INTERMEDIATES_DIR)/classes.lst" ]; then \ 166988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project mkdir -p $(TOP)/dalvik/DEBUG-FILES; \ 167088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(ACP) $(PRIVATE_INTERMEDIATES_DIR)/classes.lst \ 167188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(TOP)/dalvik/DEBUG-FILES/$(PRIVATE_MODULE).lst; \ 167288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi 167388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 167488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 167588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# TODO(joeo): If we can ever upgrade to post 3.81 make and get the 167688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# new prebuilt rules to work, we should change this to copy the 167788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# resources to the out directory and then copy the resources. 167888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1679782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# Note: we intentionally don't clean PRIVATE_CLASS_INTERMEDIATES_DIR 1680782695112d42ea3b9992e7c5f10a76f1854343d4Brian Carlstrom# in transform-java-to-classes for the sake of vm-tests. 168188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-java-to-package 168288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "host Java: $(PRIVATE_MODULE) ($(PRIVATE_CLASS_INTERMEDIATES_DIR))" 1683015edd2c1b4a4300ccccee4036ec2ca7e9ad798aYing Wang$(call compile-java,$(HOST_JAVAC),$(PRIVATE_BOOTCLASSPATH)) 1684194a8ec8aee8511d90354c4b97fecfd0df52c837Ying Wang$(if $(PRIVATE_EXTRA_JAR_ARGS), $(call add-java-resources-to-package)) 168588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 168688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 168788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 168888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Obfuscate a jar file 168988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 169088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 169188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# PRIVATE_KEEP_FILE is a file containing a list of classes 169288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# PRIVATE_INTERMEDIATES_DIR is a directory we can use for temporary files 169388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The module using this must depend on 169488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar 169588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine obfuscate-jar 169688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "Obfuscate jar: $(notdir $@) ($@)" 169788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 169888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@rm -f $@ 169988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(PRIVATE_INTERMEDIATES_DIR) 170088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) sed -e 's/^/-keep class /' < $(PRIVATE_KEEP_FILE) > \ 170188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(PRIVATE_INTERMEDIATES_DIR)/keep.pro 170288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) java -Xmx512M -jar $(HOST_OUT_JAVA_LIBRARIES)/proguard-4.0.1.jar \ 170388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -injars $< \ 170488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -outjars $@ \ 170588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -target 1.5 \ 170688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -dontnote -dontwarn \ 170788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -printmapping $(PRIVATE_INTERMEDIATES_DIR)/out.map \ 170888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -forceprocessing \ 170988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -renamesourcefileattribute SourceFile \ 171088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod \ 171188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -repackageclasses \ 171288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project -keepclassmembers "class * { public protected *; }" \ 171388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @$(PRIVATE_INTERMEDIATES_DIR)/keep.pro 171488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 171588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 171688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 171788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Commands for copying files 171888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 171988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 172088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Define a rule to copy a header. Used via $(eval) by copy_headers.make. 172188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): source header 172288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination header 172388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-one-header 172488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(2): $(1) 172588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @echo "Header: $$@" 172688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $$(copy-file-to-new-target-with-cp) 172788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 172888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 172988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Define a rule to copy a file. For use via $(eval). 173088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): source file 173188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(2): destination file 173288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-one-file 173388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(2): $(1) | $(ACP) 173488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project @echo "Copy: $$@" 173588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $$(copy-file-to-target) 173688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 173788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 1738e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# Copies many files. 1739e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# $(1): The files to copy. Each entry is a ':' separated src:dst pair 1740e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato# Evaluates to the list of the dst files (ie suitable for a dependency list) 1741e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onoratodefine copy-many-files 1742e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato$(foreach f, $(1), $(strip \ 1743e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_tuple := $(subst :, ,$(f))) \ 1744e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_src := $(word 1,$(_cmf_tuple))) \ 1745e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval _cmf_dest := $(word 2,$(_cmf_tuple))) \ 1746e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(eval $(call copy-one-file,$(_cmf_src),$(_cmf_dest))) \ 1747e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato $(_cmf_dest))) 1748e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onoratoendef 1749e44705a86f80fe356ba83b3030864f5fcff3d394Joe Onorato 17503ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# Copy the file only if it's a well-formed xml file. For use via $(eval). 17513ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# $(1): source file 17523ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang# $(2): destination file, must end with .xml. 17533ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wangdefine copy-xml-file-checked 17543ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang$(2): $(1) | $(ACP) 17553ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang @echo "Copy xml: $$@" 17563ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang $(hide) xmllint $$< >/dev/null # Don't print the xml file to stdout. 17573ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang $$(copy-file-to-target) 17583ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wangendef 17593ceecfa3daeb187c0631a84e6ee6b4dd89f111f8Ying Wang 176088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The -t option to acp and the -p option to cp is 176188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# required for OSX. OSX has a ridiculous restriction 176288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# where it's an error for a .a file's modification time 176388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# to disagree with an internal timestamp, and this 176488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# macro is used to install .a files (among other things). 176588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 176688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copy a single file from one place to another, 176788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# preserving permissions and overwriting any existing 176888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# file. 176976a6dc3a191e8800211eb49398d37deae731094eIan Rogers# We disable the "-t" option for acp cannot handle 177084ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang# high resolution timestamp correctly on file systems like ext4. 177184ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang# Therefore copy-file-to-target is the same as copy-file-to-new-target. 177288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-target 177388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 177484ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang$(hide) $(ACP) -fp $< $@ 177588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 177688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 177788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-target, but use the local 177888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp command instead of acp. 177988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-target-with-cp 178088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 178188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) cp -fp $< $@ 178288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 178388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 17849c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn# The same as copy-file-to-target, but use the zipalign tool to do so. 17859c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborndefine copy-file-to-target-with-zipalign 17869c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn@mkdir -p $(dir $@) 17879c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn$(hide) $(ZIPALIGN) -f 4 $< $@ 17889c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackbornendef 17899c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn 17901046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# The same as copy-file-to-target, but strip out "# comment"-style 17911046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# comments (for config files and such). 17921046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerdefine copy-file-to-target-strip-comments 17931046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker@mkdir -p $(dir $@) 17941046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker$(hide) sed -e 's/#.*$$//' -e 's/[ \t]*$$//' -e '/^$$/d' < $< > $@ 17951046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerendef 17961046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker 179788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-target, but don't preserve 179888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# the old modification time. 179988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-new-target 180088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 180188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(ACP) -fp $< $@ 180288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 180388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 180488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# The same as copy-file-to-new-target, but use the local 180588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp command instead of acp. 180688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine copy-file-to-new-target-with-cp 180788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 180888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) cp -f $< $@ 180988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 181088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 181188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Copy a prebuilt file to a target location. 181288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-prebuilt-to-target 181388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt: $(PRIVATE_MODULE) ($@)" 181488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(copy-file-to-target) 181588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 181688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 18179c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn# Copy a prebuilt file to a target location, using zipalign on it. 18189c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborndefine transform-prebuilt-to-target-with-zipalign 18199c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt APK: $(PRIVATE_MODULE) ($@)" 18209c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn$(copy-file-to-target-with-zipalign) 18219c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackbornendef 18229c0c4b7a588b3afe80dc16c133921fee991f53d3Dianne Hackborn 18231046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker# Copy a prebuilt file to a target location, stripping "# comment" comments. 18241046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerdefine transform-prebuilt-to-target-strip-comments 18251046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker@echo "$(if $(PRIVATE_IS_HOST_MODULE),host,target) Prebuilt: $(PRIVATE_MODULE) ($@)" 18261046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker$(copy-file-to-target-strip-comments) 18271046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongkerendef 18281046d20624318563aba92cfdd7eb7d39ecc44703Doug Zongker 182988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 183088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## On some platforms (MacOS), after copying a static 183188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## library, ranlib must be run to update an internal 183288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## timestamp!?!?! 183388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 183488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 183588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(HOST_RUN_RANLIB_AFTER_COPYING),true) 183688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-ranlib-copy-hack 183788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) ranlib $@ || true 183888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 183988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 184088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-host-ranlib-copy-hack 18410e27dff167faede2d13dae5d488866bce85c28bcPatrick Scott@true 184288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 184388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 184488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 184588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifeq ($(TARGET_RUN_RANLIB_AFTER_COPYING),true) 184688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-ranlib-copy-hack 184788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project $(hide) ranlib $@ 184888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 184988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectelse 185088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-ranlib-copy-hack 18510e27dff167faede2d13dae5d488866bce85c28bcPatrick Scott@true 185288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 185388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 185488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 185588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 185688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 18573b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang## Commands to call Proguard 18583b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang########################################################### 18593b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18603b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang# Command to copy the file with acp, if proguard is disabled. 18613b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangdefine proguard-disabled-commands 18623b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang@echo Copying: $@ 186384ed6fa27b883de8ba7b41ddecaa2179e7f4b321Ying Wang$(hide) $(ACP) -fp $< $@ 18643b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangendef 18653b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18663b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang# Command to call Proguard 18673b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang# $(1): extra flags for instrumentation. 18683b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangdefine proguard-enabled-commands 18693b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang@echo Proguard: $@ 18703b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(hide) $(PROGUARD) -injars $< -outjars $@ $(PRIVATE_PROGUARD_FLAGS) $(1) 18713b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangendef 18723b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18733b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang# Figure out the proguard dictionary file of the module that is instrumentationed for. 18743b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangdefine get-instrumentation-proguard-flags 18753b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(if $(PRIVATE_INSTRUMENTATION_FOR),$(if $(ALL_MODULES.$(PRIVATE_INSTRUMENTATION_FOR).PROGUARD_ENABLED),-applymapping $(call intermediates-dir-for,APPS,$(PRIVATE_INSTRUMENTATION_FOR),,COMMON)/proguard_dictionary)) 18763b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangendef 18773b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18783b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangdefine transform-jar-to-proguard 18793b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(eval _instrumentation_proguard_flags:=$(call get-instrumentation-proguard-flags)) 18803b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(eval _enable_proguard:=$(PRIVATE_PROGUARD_ENABLED)$(_instrumentation_proguard_flags)) 18813b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(if $(_enable_proguard),$(call proguard-enabled-commands,$(_instrumentation_proguard_flags)),$(call proguard-disabled-commands)) 18823b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(eval _instrumentation_proguard_flags:=) 18833b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang$(eval _enable_proguard:=) 18843b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wangendef 18853b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18863b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang 18873b2bdf10338fb048fc749ce9f65a77f917f7d304Ying Wang########################################################### 188888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Stuff source generated from one-off tools 188988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 189088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 189188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine transform-generated-source 189288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@echo "target Generated: $(PRIVATE_MODULE) <= $<" 189388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project@mkdir -p $(dir $@) 189488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(hide) $(PRIVATE_CUSTOM_TOOL) 189588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 189688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 189788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 189888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 189988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Assertions about attributes of the target 190088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 190188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 190288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(1): The file to check 190388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectifndef get-file-size 190488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(error HOST_OS must define get-file-size) 190588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendif 190688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19074647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# Convert a partition data size (eg, as reported in /proc/mtd) to the 19084647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# size of the image used to flash that partition (which includes a 19099cb8c2835232c8dc99cecca85a7e99bdee7109a9Lars Svensson# spare area for each page). 19104647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# $(1): the partition data size 19114647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongkerdefine image-size-from-data-size 19124a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(strip $(eval _isfds_value := $$(shell echo $$$$(($(1) / $(BOARD_NAND_PAGE_SIZE) * \ 19134a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang ($(BOARD_NAND_PAGE_SIZE)+$(BOARD_NAND_SPARE_SIZE))))))\ 19144a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(if $(filter 0, $(_isfds_value)),$(shell echo $$(($(BOARD_NAND_PAGE_SIZE)+$(BOARD_NAND_SPARE_SIZE)))),$(_isfds_value))\ 19154a2ecaf5dc7434dd06a1fbcf14c56e6a7c7b383bYing Wang$(eval _isfds_value :=)) 19164647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongkerendef 19174647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker 19184647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# $(1): The file(s) to check (often $@) 19194647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker# $(2): The maximum total image size, in decimal bytes 19206dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker# $(3): the type of filesystem "yaffs" or "raw" 192188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 192288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# If $(2) is empty, evaluates to "true" 192388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# 192488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Reserve bad blocks. Make sure that MAX(1% of partition size, 2 blocks) 192588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# is left over after the image has been flashed. Round the 1% up to the 192688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# next whole flash block size. 192788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectdefine assert-max-file-size 192888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project$(if $(2), \ 1929742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker size=$$(for i in $(1); do $(call get-file-size,$$i); echo +; done; echo 0); \ 1930742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker total=$$(( $$( echo "$$size" ) )); \ 19314647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker printname=$$(echo -n "$(1)" | tr " " +); \ 19324647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker img_blocksize=$(call image-size-from-data-size,$(BOARD_FLASH_BLOCK_SIZE)); \ 19336dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker if [ "$(3)" == "yaffs" ]; then \ 193493d9ff44ce700c770fd78b9e15467be2af587559Doug Zongker reservedblocks=8; \ 19356dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker else \ 19364ac1ba61075190fa9ced594c85285beff6293184Doug Zongker reservedblocks=0; \ 19376dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker fi; \ 19384647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker twoblocks=$$((img_blocksize * 2)); \ 19394647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker onepct=$$((((($(2) / 100) - 1) / img_blocksize + 1) * img_blocksize)); \ 19406dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker reserve=$$(((twoblocks > onepct ? twoblocks : onepct) + \ 19416dd2ae02c1a117f7494d8b880fdc6c35572adaa8Doug Zongker reservedblocks * img_blocksize)); \ 19424647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker maxsize=$$(($(2) - reserve)); \ 194399bcbeb355959d073e24dc5da9f858ee24cf7baaYing Wang echo "$$printname maxsize=$$maxsize blocksize=$$img_blocksize total=$$total reserve=$$reserve"; \ 19444647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker if [ "$$total" -gt "$$maxsize" ]; then \ 19454647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker echo "error: $$printname too large ($$total > [$(2) - $$reserve])"; \ 19464647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker false; \ 1947742fa575d09272f1e06616fc208a1e08830c8f82Doug Zongker elif [ "$$total" -gt $$((maxsize - 32768)) ]; then \ 19484647f12a4ff9dc54247184f17ff3de1cc423f213Doug Zongker echo "WARNING: $$printname approaching size limit ($$total now; limit $$maxsize)"; \ 194988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project fi \ 195088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project , \ 195188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project true \ 195288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project ) 195388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectendef 195488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 19558510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# Like assert-max-file-size, but the second argument is a partition 19568510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# size, which we'll convert to a max image size before checking it 19578510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# against the files. 19588510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# 19598510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# $(1): The file(s) to check (often $@) 19608510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker# $(2): The partition size. 19618510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongkerdefine assert-max-image-size 19628510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker$(if $(2), \ 19638510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker $(call assert-max-file-size,$(1),$(call image-size-from-data-size,$(2))), \ 19648510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker true) 19658510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongkerendef 19668510a1e0d7d45179e5fa19bebf26d022ec4c4e91Doug Zongker 1967e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 1968e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker########################################################### 1969e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker## Define device-specific radio files 1970e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker########################################################### 1971e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 1972e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# Copy a radio image file to the output location, and add it to 1973e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# INSTALLED_RADIOIMAGE_TARGET. 1974e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker# $(1): filename 1975e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerdefine add-radio-file 197614833605d26bf970cd5335c02af4354b68d93348Doug Zongker $(eval $(call add-radio-file-internal,$(1),$(notdir $(1)))) 1977e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerendef 1978e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerdefine add-radio-file-internal 197914833605d26bf970cd5335c02af4354b68d93348Doug ZongkerINSTALLED_RADIOIMAGE_TARGET += $$(PRODUCT_OUT)/$(2) 198014833605d26bf970cd5335c02af4354b68d93348Doug Zongker$$(PRODUCT_OUT)/$(2) : $$(LOCAL_PATH)/$(1) | $$(ACP) 1981e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker $$(transform-prebuilt-to-target) 1982e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongkerendef 1983e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 19849296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# Version of add-radio-file that also arranges for the version of the 19859296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# file to be checked against the contents of 19869296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(TARGET_BOARD_INFO_FILE). 19879296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(1): filename 19889296f092771a0261404f51bcbc1b62ba20654947Doug Zongker# $(2): name of version variable in board-info (eg, "version-baseband") 19899296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerdefine add-radio-file-checked 19909296f092771a0261404f51bcbc1b62ba20654947Doug Zongker $(eval $(call add-radio-file-checked-internal,$(1),$(notdir $(1)),$(2))) 19919296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerendef 19929296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerdefine add-radio-file-checked-internal 19939296f092771a0261404f51bcbc1b62ba20654947Doug ZongkerINSTALLED_RADIOIMAGE_TARGET += $$(PRODUCT_OUT)/$(2) 19949296f092771a0261404f51bcbc1b62ba20654947Doug ZongkerBOARD_INFO_CHECK += $(3):$(LOCAL_PATH)/$(1) 19959296f092771a0261404f51bcbc1b62ba20654947Doug Zongker$$(PRODUCT_OUT)/$(2) : $$(LOCAL_PATH)/$(1) | $$(ACP) 19969296f092771a0261404f51bcbc1b62ba20654947Doug Zongker $$(transform-prebuilt-to-target) 19979296f092771a0261404f51bcbc1b62ba20654947Doug Zongkerendef 19989296f092771a0261404f51bcbc1b62ba20654947Doug Zongker 1999e01100c7ac15bd884ca02c64f42b908b93e37c26Doug Zongker 200088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 2001899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Override the package defined in $(1), setting the 2002899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# variables listed below differently. 2003899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# 2004899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(1): The makefile to override (relative to the source 2005899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# tree root) 2006899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(2): Old LOCAL_PACKAGE_NAME value. 2007899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# $(3): New LOCAL_PACKAGE_NAME value. 20083dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(4): New LOCAL_MANIFEST_PACKAGE_NAME value. 20093dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(5): New LOCAL_CERTIFICATE value. 20103dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(6): New LOCAL_INSTRUMENTATION_FOR value. 20113dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang# $(7): New LOCAL_MANIFEST_INSTRUMENTATION_FOR value. 2012899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# 2013899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Note that LOCAL_PACKAGE_OVERRIDES is NOT cleared in 2014899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# clear_vars.mk. 2015899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato########################################################### 2016899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine inherit-package 20173dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(eval $(call inherit-package-internal,$(1),$(2),$(3),$(4),$(5),$(6),$(7))) 2018899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2019899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2020899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine inherit-package-internal 2021899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato LOCAL_PACKAGE_OVERRIDES \ 20223dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang := $(strip $(1))||$(strip $(2))||$(strip $(3))||$(strip $(4))||&&$(strip $(5))||&&$(strip $(6))||&&$(strip $(7)) $(LOCAL_PACKAGE_OVERRIDES) 2023899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato include $(1) 2024899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato LOCAL_PACKAGE_OVERRIDES \ 2025899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato := $(wordlist 1,$(words $(LOCAL_PACKAGE_OVERRIDES)), $(LOCAL_PACKAGE_OVERRIDES)) 2026899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2027899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2028899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# To be used with inherit-package above 2029899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato# Evalutes to true if the package was overridden 2030899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine set-inherited-package-variables 2031899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato$(strip $(call set-inherited-package-variables-internal)) 2032899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2033899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2034899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine keep-or-override 2035899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato$(eval $(1) := $(if $(2),$(2),$($(1)))) 2036899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2037899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2038899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratodefine set-inherited-package-variables-internal 2039899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval _o := $(subst ||, ,$(lastword $(LOCAL_PACKAGE_OVERRIDES)))) 2040899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval _n := $(subst ||, ,$(firstword $(LOCAL_PACKAGE_OVERRIDES)))) 2041899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(if $(filter $(word 2,$(_n)),$(LOCAL_PACKAGE_NAME)), \ 2042899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_PACKAGE_NAME := $(word 3,$(_o))) \ 2043899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_MANIFEST_PACKAGE_NAME := $(word 4,$(_o))) \ 20443dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_CERTIFICATE,$(patsubst &&%,%,$(word 5,$(_o)))) \ 20453dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_INSTRUMENTATION_FOR,$(patsubst &&%,%,$(word 6,$(_o)))) \ 20463dae0ee46cf5fcde6eb424f9ab0c69f2d901a671Ying Wang $(call keep-or-override,LOCAL_MANIFEST_INSTRUMENTATION_FOR,$(patsubst &&%,%,$(word 7,$(_o)))) \ 2047899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato $(eval LOCAL_OVERRIDES_PACKAGES := $(sort $(LOCAL_OVERRIDES_PACKAGES) $(word 2,$(_o)))) \ 2048899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato true \ 2049899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato ,) 2050899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onoratoendef 2051899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2052000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang########################################################### 2053000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang## Expand a module name list with REQUIRED modules 2054000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang########################################################### 2055000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang# $(1): The variable name that holds the initial module name list. 2056000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang# the variable will be modified to hold the expanded results. 2057000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang# $(2): The initial module name list. 2058000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang# Returns empty string (maybe with some whitespaces). 2059000e89a5b95a1d3071277ff279263204f49cbd78Ying Wangdefine expand-required-modules 2060000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang$(eval _erm_new_modules := $(sort $(filter-out $($(1)),\ 2061000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang $(foreach m,$(2),$(ALL_MODULES.$(m).REQUIRED)))))\ 2062000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang$(if $(_erm_new_modules),$(eval $(1) += $(_erm_new_modules))\ 2063000e89a5b95a1d3071277ff279263204f49cbd78Ying Wang $(call expand-required-modules,$(1),$(_erm_new_modules))) 2064000e89a5b95a1d3071277ff279263204f49cbd78Ying Wangendef 2065899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato 2066899e62a841bebefe6d9ab37ddc682e72fcb0f92bJoe Onorato########################################################### 206788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Other includes 206888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 206988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 207088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# ----------------------------------------------------------------- 207188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# Rules and functions to help copy important files to DIST_DIR 207288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# when requested. 207388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Projectinclude $(BUILD_SYSTEM)/distdir.mk 207488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 207588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# broken: 207688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(foreach file,$^,$(if $(findstring,.a,$(suffix $file)),-l$(file),$(file))) 207788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 207888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 207988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project## Misc notes 208088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project########################################################### 208188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 208288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#DEPDIR = .deps 208388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#df = $(DEPDIR)/$(*F) 208488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 208588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#SRCS = foo.c bar.c ... 208688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 208788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#%.o : %.c 208888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# @$(MAKEDEPEND); \ 208988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# cp $(df).d $(df).P; \ 209088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 209188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -e '/^$$/ d' -e 's/$$/ :/' < $(df).d >> $(df).P; \ 209288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# rm -f $(df).d 209388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(COMPILE.c) -o $@ $< 209488b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 209588b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#-include $(SRCS:%.c=$(DEPDIR)/%.P) 209688b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 209788b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project 209888b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project#%.o : %.c 209988b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# $(COMPILE.c) -MD -o $@ $< 210088b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# @cp $*.d $*.P; \ 210188b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ 210288b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \ 210388b607994a148f4af5bffee163e39ce8296750c6The Android Open Source Project# rm -f $*.d 2104