main.mk revision 31638ff73bcf09bcf941ddeab7f5a0390a9db406
1572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# Only use ANDROID_BUILD_SHELL to wrap around bash. 2572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# DO NOT use other shells such as zsh. 3572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanifdef ANDROID_BUILD_SHELL 4572a4e2e687520da9e518528d7371b794b1decc0Robert SloanSHELL := $(ANDROID_BUILD_SHELL) 5572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanelse 6572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# Use bash, not whatever shell somebody has installed as /bin/sh 7572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# This is repeated in config.mk, since envsetup.sh runs that file 8572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# directly. 9572a4e2e687520da9e518528d7371b794b1decc0Robert SloanSHELL := /bin/bash 10572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanendif 11572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 12572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanifndef KATI 13572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 14572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanhost_prebuilts := linux-x86 159254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifeq ($(shell uname),Darwin) 168f860b133896bf655e4342ecefe692d52df81d48Robert Sloanhost_prebuilts := darwin-x86 179254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 189254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 199254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan.PHONY: run_soong_ui 209254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanrun_soong_ui: 21572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan +@prebuilts/build-tools/$(host_prebuilts)/bin/makeparallel --ninja build/soong/soong_ui.bash --make-mode $(MAKECMDGOALS) 229254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 23572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan.PHONY: $(MAKECMDGOALS) 249254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(sort $(MAKECMDGOALS)) : run_soong_ui 259254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan @#empty 269254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 27572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanelse # KATI 288ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 299254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Absolute path of the present working direcotry. 308ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# This overrides the shell variable $PWD, which does not necessarily points to 31572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# the top of the source tree, for example when "make -C" is used in m/mm/mmm. 32572a4e2e687520da9e518528d7371b794b1decc0Robert SloanPWD := $(shell pwd) 339254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 34572a4e2e687520da9e518528d7371b794b1decc0Robert SloanTOP := . 35572a4e2e687520da9e518528d7371b794b1decc0Robert SloanTOPDIR := 36572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 37572a4e2e687520da9e518528d7371b794b1decc0Robert SloanBUILD_SYSTEM := $(TOPDIR)build/make/core 388ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 398ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# This is the default target. It must be the first declared target. 408ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.PHONY: droid 418ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanDEFAULT_GOAL := droid 428ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(DEFAULT_GOAL): droid_targets 438ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 448ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.PHONY: droid_targets 458ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandroid_targets: 468ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 478ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Set up various standard variables based on configuration 488ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# and host information. 498ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(BUILD_SYSTEM)/config.mk 508ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 518ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(filter $(dont_bother_goals), $(MAKECMDGOALS)),) 528ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandont_bother := true 538ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 548ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 558ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(SOONG_MAKEVARS_MK) 568ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 578ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(BUILD_SYSTEM)/clang/config.mk 588ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 598ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Write the build number to a file so it can be read back in 608ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# without changing the command line every time. Avoids rebuilds 618ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# when using ninja. 62572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan$(shell mkdir -p $(OUT_DIR) && \ 63572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan echo -n $(BUILD_NUMBER) > $(OUT_DIR)/build_number.txt && \ 648ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan echo -n $(BUILD_DATETIME) > $(OUT_DIR)/build_date.txt) 658ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifeq ($(HOST_OS),darwin) 668ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanDATE_FROM_FILE := date -r $(BUILD_DATETIME_FROM_FILE) 678ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse 688ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanDATE_FROM_FILE := date -d @$(BUILD_DATETIME_FROM_FILE) 698ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Make an empty directory, which can be used to make empty jars 728ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanEMPTY_DIRECTORY := $(OUT_DIR)/empty 738ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(shell mkdir -p $(EMPTY_DIRECTORY) && rm -rf $(EMPTY_DIRECTORY)/*) 748ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 75572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# CTS-specific config. 76572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan-include cts/build/config.mk 77572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# VTS-specific config. 789254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan-include test/vts/tools/vts-tradefed/build/config.mk 799254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# device-tests-specific-config. 809254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan-include tools/tradefederation/build/suites/device-tests/config.mk 819254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# general-tests-specific-config. 829254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan-include tools/tradefederation/build/suites/general-tests/config.mk 839254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 849254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Clean rules 859254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan.PHONY: clean-dex-files 869254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanclean-dex-files: 878ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(hide) find $(OUT_DIR) -name "*.dex" | xargs rm -f 888ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(hide) for i in `find $(OUT_DIR) -name "*.jar" -o -name "*.apk"` ; do ((unzip -l $$i 2> /dev/null | \ 898ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan grep -q "\.dex$$" && rm -f $$i) || continue ) ; done 908ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan @echo "All dex files and archives containing dex files have been removed." 91572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 92572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# Include the google-specific config 93572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan-include vendor/google/build/config.mk 94572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 95572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# These are the modifier targets that don't do anything themselves, but 96572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# change the behavior of the build. 97572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# (must be defined before including definitions.make) 988ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanINTERNAL_MODIFIER_TARGETS := all 99572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 100572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# EMMA_INSTRUMENT_STATIC merges the static emma library to each emma-enabled module. 101572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanifeq (true,$(EMMA_INSTRUMENT_STATIC)) 102572a4e2e687520da9e518528d7371b794b1decc0Robert SloanEMMA_INSTRUMENT := true 103572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanendif 104572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 1059254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 1069254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# ----------------------------------------------------------------- 1079254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Validate ADDITIONAL_DEFAULT_PROPERTIES. 1089254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(ADDITIONAL_DEFAULT_PROPERTIES),) 1099254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(error ADDITIONAL_DEFAULT_PROPERTIES must not be set before here: $(ADDITIONAL_DEFAULT_PROPERTIES)) 1109254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 1119254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 1129254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 1139254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# ----------------------------------------------------------------- 1149254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Validate ADDITIONAL_BUILD_PROPERTIES. 1159254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(ADDITIONAL_BUILD_PROPERTIES),) 1169254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(error ADDITIONAL_BUILD_PROPERTIES must not be set before here: $(ADDITIONAL_BUILD_PROPERTIES)) 117572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanendif 1188ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1198ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 1208ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ----------------------------------------------------------------- 1218ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Add the product-defined properties to the build properties. 122572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanifdef PRODUCT_SHIPPING_API_LEVEL 1238ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES += \ 1248ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ro.product.first_api_level=$(PRODUCT_SHIPPING_API_LEVEL) 1258ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1268ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1278ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED), true) 1288ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES) 1298ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse 1308ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ifndef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE 1318ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += $(PRODUCT_PROPERTY_OVERRIDES) 1328ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan endif 1338ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1348ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1358ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1368ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Bring in standard build system definitions. 1378ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(BUILD_SYSTEM)/definitions.mk 1388ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1398ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Bring in dex_preopt.mk 1408ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(BUILD_SYSTEM)/dex_preopt.mk 1418ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1428ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(filter user userdebug eng,$(MAKECMDGOALS)),) 1438ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1448ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1458ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info Do not pass '$(filter user userdebug eng,$(MAKECMDGOALS))' on \ 1468ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan the make command line.) 1478ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info Set TARGET_BUILD_VARIANT in buildspec.mk, or use lunch or) 1488f860b133896bf655e4342ecefe692d52df81d48Robert Sloan$(info choosecombo.) 1498ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1508ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1518ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(error stopping) 1528ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1538ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1548ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(filter-out $(INTERNAL_VALID_VARIANTS),$(TARGET_BUILD_VARIANT)),) 1558ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1568ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1578ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info Invalid variant: $(TARGET_BUILD_VARIANT)) 1588ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info Valid values are: $(INTERNAL_VALID_VARIANTS)) 1598ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1608ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(info ***************************************************************) 1618ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(error stopping) 1628ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1638ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1648ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ----------------------------------------------------------------- 1658ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Variable to check java support level inside PDK build. 1668ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Not necessary if the components is not in PDK. 1678ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# not defined : not supported 1688ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# "sdk" : sdk API only 1698ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# "platform" : platform API supproted 1708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanTARGET_BUILD_JAVA_SUPPORT_LEVEL := platform 1718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1728ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ----------------------------------------------------------------- 1738ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# The pdk (Platform Development Kit) build 1748ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude build/make/core/pdk_config.mk 1758ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1768ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 1778ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ----------------------------------------------------------------- 1788ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Enable dynamic linker developer warnings for userdebug, eng 1798ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# and non-REL builds 1808ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(TARGET_BUILD_VARIANT),user) 1818ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += ro.bionic.ld.warning=1 1828ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse 1838ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Enable it for user builds as long as they are not final. 1848ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(PLATFORM_VERSION_CODENAME),REL) 1858ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += ro.bionic.ld.warning=1 1868ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1878ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 1888ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1898ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES += ro.treble.enabled=${PRODUCT_FULL_TREBLE} 1908ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1918ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ----------------------------------------------------------------- 1928ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan### 1938ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan### In this section we set up the things that are different 1948ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan### between the build variants 1958ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan### 1968ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1978ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanis_sdk_build := 1988ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 1998ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(filter sdk win_sdk sdk_addon,$(MAKECMDGOALS)),) 2008ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanis_sdk_build := true 2018ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2028ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2038ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Add build properties for ART. These define system properties used by installd 2048ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# to pass flags to dex2oat. 2058ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES += persist.sys.dalvik.vm.lib.2=libart.so 2068ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).variant=$(DEX2OAT_TARGET_CPU_VARIANT) 2078ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) 2088ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) 2098ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2108ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2118ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifdef TARGET_2ND_ARCH 2128ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).variant=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT) 2138ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ifneq ($($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) 2148ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).features=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) 2158ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan endif 2168ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2178ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2188ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Add the system server compiler filter if they are specified for the product. 2198ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)) 2208ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES += dalvik.vm.systemservercompilerfilter=$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER) 2218ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2228ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2238ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan## user/userdebug ## 2248ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2258ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanuser_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT)) 2268ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanenable_target_debugging := true 2278ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloantags_to_install := 2288ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq (,$(user_variant)) 2298ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Target is secure in user builds. 2308ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1 2318ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += security.perf_harden=1 2328ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2338ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ifeq ($(user_variant),user) 2348ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.adb.secure=1 2358ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan endif 2368ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2378ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ifeq ($(user_variant),userdebug) 2388ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Pick up some extra useful tools 2398ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan tags_to_install += debug 2408ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan else 2418ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Disable debugging in plain user builds. 2428ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan enable_target_debugging := 2438ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan endif 2448ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2458ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Disallow mock locations by default for user builds 2468ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=0 2478ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2488ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse # !user_variant 2498ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Turn on checkjni for non-user builds. 2508ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1 2518ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Set device insecure for non-user builds. 2529254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0 2538ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Allow mock locations by default for non user builds 2548ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1 2558ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif # !user_variant 2568ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2578ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifeq (true,$(strip $(enable_target_debugging))) 2588ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Target is more debuggable and adbd is on by default 2598ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1 2608ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Enable Dalvik lock contention logging. 2618ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.lockprof.threshold=500 2628ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Include the debugging/testing OTA keys in this build. 2638ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan INCLUDE_TEST_OTA_KEYS := true 2648ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse # !enable_target_debugging 2658ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Target is less debuggable and adbd is off by default 2668ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0 2678ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif # !enable_target_debugging 2688ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2698ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan## eng ## 2708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifeq ($(TARGET_BUILD_VARIANT),eng) 2728ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloantags_to_install := debug eng 2738ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(filter ro.setupwizard.mode=ENABLED, $(call collapse-pairs, $(ADDITIONAL_BUILD_PROPERTIES))),) 2748ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # Don't require the setup wizard on eng builds 2758ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES := $(filter-out ro.setupwizard.mode=%,\ 2768ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(call collapse-pairs, $(ADDITIONAL_BUILD_PROPERTIES))) \ 2778ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ro.setupwizard.mode=OPTIONAL 2788ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2798ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifndef is_sdk_build 2808ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan # To speedup startup of non-preopted builds, don't verify or compile the boot image. 2818ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.image-dex2oat-filter=verify-at-runtime 2828ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2838ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 2848ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2858ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan## sdk ## 2868ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2878ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifdef is_sdk_build 2888ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 2898ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Detect if we want to build a repository for the SDK 2908ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloansdk_repo_goal := $(strip $(filter sdk_repo,$(MAKECMDGOALS))) 2918f860b133896bf655e4342ecefe692d52df81d48Robert SloanMAKECMDGOALS := $(strip $(filter-out sdk_repo,$(MAKECMDGOALS))) 2928f860b133896bf655e4342ecefe692d52df81d48Robert Sloan 2939254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(words $(sort $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild emulator_tests target-files-package,$(MAKECMDGOALS)))),1) 2949254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(error The 'sdk' target may not be specified with any other targets) 2959254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 2969254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 2979254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# AUX dependencies are already added by now; remove triggers from the MAKECMDGOALS 2988ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanMAKECMDGOALS := $(strip $(filter-out AUX-%,$(MAKECMDGOALS))) 2998ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 3009254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# TODO: this should be eng I think. Since the sdk is built from the eng 3019254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# variant. 3028ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloantags_to_install := debug eng 3038f860b133896bf655e4342ecefe692d52df81d48Robert SloanADDITIONAL_BUILD_PROPERTIES += xmpp.auto-presence=true 3048f860b133896bf655e4342ecefe692d52df81d48Robert SloanADDITIONAL_BUILD_PROPERTIES += ro.config.nocheckin=yes 3059254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanelse # !sdk 3069254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 307572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 3088ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanBUILD_WITHOUT_PV := true 3098ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 310572a4e2e687520da9e518528d7371b794b1decc0Robert SloanADDITIONAL_BUILD_PROPERTIES += net.bt.name=Android 311572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 3128ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Sets the location that the runtime dumps stack traces to when signalled 313572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# with SIGQUIT. Stack trace dumping is turned on for all android builds. 314572a4e2e687520da9e518528d7371b794b1decc0Robert SloanADDITIONAL_BUILD_PROPERTIES += dalvik.vm.stack-trace-dir=/data/anr 315572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 316572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# ------------------------------------------------------------ 317572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# Define a function that, given a list of module tags, returns 3189254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# non-empty if that module should be installed in /system. 319572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 3209254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# For most goals, anything not tagged with the "tests" tag should 321572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# be installed in /system. 322572a4e2e687520da9e518528d7371b794b1decc0Robert Sloandefine should-install-to-system 3239254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(if $(filter tests,$(1)),,true) 3249254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 3259254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3269254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifdef is_sdk_build 3279254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# For the sdk goal, anything with the "samples" tag should be 3289254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# installed in /data even if that module also has "eng"/"debug"/"user". 3299254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine should-install-to-system 3309254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(if $(filter samples tests,$(1)),,true) 3319254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 3329254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 3339254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3349254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3358ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# If they only used the modifier goals (all, etc), we'll actually 3368ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# build the default target. 3378ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifeq ($(filter-out $(INTERNAL_MODIFIER_TARGETS),$(MAKECMDGOALS)),) 3388ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.PHONY: $(INTERNAL_MODIFIER_TARGETS) 3398ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(INTERNAL_MODIFIER_TARGETS): $(DEFAULT_GOAL) 3408ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 3419254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3429254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 3439254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Typical build; include any Android.mk files we can find. 3449254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 3459254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3469254e681d446a8105bd66f08bae1252d4d89a139Robert SloanFULL_BUILD := true 3479254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3489254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Before we go and include all of the module makefiles, mark the PRODUCT_* 3498ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# and ADDITIONAL*PROPERTIES values readonly so that they won't be modified. 3508ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(call readonly-product-vars) 3518ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_DEFAULT_PROPERTIES := $(strip $(ADDITIONAL_DEFAULT_PROPERTIES)) 3528ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.KATI_READONLY := ADDITIONAL_DEFAULT_PROPERTIES 3538ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanADDITIONAL_BUILD_PROPERTIES := $(strip $(ADDITIONAL_BUILD_PROPERTIES)) 3548ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.KATI_READONLY := ADDITIONAL_BUILD_PROPERTIES 3559254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3569254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(PRODUCT_ENFORCE_RRO_TARGETS),) 3579254e681d446a8105bd66f08bae1252d4d89a139Robert SloanENFORCE_RRO_SOURCES := 3589254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 3599254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3609254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(ONE_SHOT_MAKEFILE),) 3619254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# We've probably been invoked by the "mm" shell function 3629254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# with a subdirectory's makefile. 3639254e681d446a8105bd66f08bae1252d4d89a139Robert Sloaninclude $(SOONG_ANDROID_MK) $(wildcard $(ONE_SHOT_MAKEFILE)) 3649254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Change CUSTOM_MODULES to include only modules that were 3659254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# defined by this makefile; this will install all of those 3668ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# modules as a side-effect. Do this after including ONE_SHOT_MAKEFILE 3678ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# so that the modules will be installed in the same place they 3688ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# would have been with a normal make. 3698ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanCUSTOM_MODULES := $(sort $(call get-tagged-modules,$(ALL_MODULE_TAGS))) 3708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanFULL_BUILD := 3718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Stub out the notice targets, which probably aren't defined 3729254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# when using ONE_SHOT_MAKEFILE. 3739254e681d446a8105bd66f08bae1252d4d89a139Robert SloanNOTICE-HOST-%: ; 3749254e681d446a8105bd66f08bae1252d4d89a139Robert SloanNOTICE-TARGET-%: ; 3758ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 3768ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# A helper goal printing out install paths 3778ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandefine register_module_install_path 3788ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.PHONY: GET-MODULE-INSTALL-PATH-$(1) 3798ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanGET-MODULE-INSTALL-PATH-$(1): 3808ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan echo 'INSTALL-PATH: $(1) $(ALL_MODULES.$(1).INSTALLED)' 3819254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 3829254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 3839254e681d446a8105bd66f08bae1252d4d89a139Robert SloanSORTED_ALL_MODULES := $(sort $(ALL_MODULES)) 3849254e681d446a8105bd66f08bae1252d4d89a139Robert SloanUNIQUE_ALL_MODULES := 3858ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(foreach m,$(SORTED_ALL_MODULES),\ 3868ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(call streq,$(m),$(lastword $(UNIQUE_ALL_MODULES))),,\ 3878ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(eval UNIQUE_ALL_MODULES += $(m)))) 3888ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanSORTED_ALL_MODULES := 3898ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 3908ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(foreach mod,$(UNIQUE_ALL_MODULES),$(if $(ALL_MODULES.$(mod).INSTALLED),\ 3919254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval $(call register_module_install_path,$(mod)))\ 3929254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(foreach path,$(ALL_MODULES.$(mod).PATH),\ 3939254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval my_path_prefix := GET-INSTALL-PATH-IN)\ 3949254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(foreach component,$(subst /,$(space),$(path)),\ 3959254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval my_path_prefix := $$(my_path_prefix)-$$(component))\ 3969254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval .PHONY: $$(my_path_prefix))\ 3979254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval $$(my_path_prefix): GET-MODULE-INSTALL-PATH-$(mod)))))) 3988ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert SloanUNIQUE_ALL_MODULES := 3998ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4008ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanelse # ONE_SHOT_MAKEFILE 4018ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4028ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(dont_bother),true) 4038ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 4049254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Include all of the makefiles in the system 4059254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 4068ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4078ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloansubdir_makefiles := $(SOONG_ANDROID_MK) $(file <$(OUT_DIR)/.module_paths/Android.mk.list) 4088ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloansubdir_makefiles_total := $(words $(subdir_makefiles)) 4098ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan.KATI_READONLY := subdir_makefiles_total 4108ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4118ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(foreach mk,$(subdir_makefiles),$(info [$(call inc_and_print,subdir_makefiles_inc)/$(subdir_makefiles_total)] including $(mk) ...)$(eval include $(mk))) 4128ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4138ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifdef PDK_FUSION_PLATFORM_ZIP 4148ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Bring in the PDK platform.zip modules. 4158ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloaninclude $(BUILD_SYSTEM)/pdk_fusion_modules.mk 4168ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif # PDK_FUSION_PLATFORM_ZIP 4178ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4188ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandroid_targets : blueprint_tools 4198ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4208ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif # dont_bother 4218ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4228ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif # ONE_SHOT_MAKEFILE 4238ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4248ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ------------------------------------------------------------------- 4258ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# All module makefiles have been included at this point. 4268ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ------------------------------------------------------------------- 4278ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4288ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ------------------------------------------------------------------- 4298ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Enforce to generate all RRO packages for modules having resource 4308ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# overlays. 4318ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ------------------------------------------------------------------- 4328ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifneq ($(PRODUCT_ENFORCE_RRO_TARGETS),) 4339254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call generate_all_enforce_rro_packages) 4349254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 4359254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 4369254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# ------------------------------------------------------------------- 4379254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Fix up CUSTOM_MODULES to refer to installed files rather than 4389254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# just bare module names. Leave unknown modules alone in case 4399254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# they're actually full paths to a particular file. 4409254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanknown_custom_modules := $(filter $(ALL_MODULES),$(CUSTOM_MODULES)) 4419254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanunknown_custom_modules := $(filter-out $(ALL_MODULES),$(CUSTOM_MODULES)) 4429254e681d446a8105bd66f08bae1252d4d89a139Robert SloanCUSTOM_MODULES := \ 4439254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(call module-installed-files,$(known_custom_modules)) \ 4448ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(unknown_custom_modules) 4458ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 4468ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ------------------------------------------------------------------- 4478ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Define dependencies for modules that require other modules. 4488ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# This can only happen now, after we've read in all module makefiles. 4498ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 4509254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# TODO: deal with the fact that a bare module name isn't 4519254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# unambiguous enough. Maybe declare short targets like 4529254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# APPS:Quake or HOST:SHARED_LIBRARIES:libutils. 4539254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# BUG: the system image won't know to depend on modules that are 4549254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# brought in as requirements of other modules. 4559254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 4569254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Resolve the required module name to 32-bit or 64-bit variant. 4579254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Get a list of corresponding 32-bit module names, if one exists. 4589254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifneq ($(TARGET_TRANSLATE_2ND_ARCH),true) 4599254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine get-32-bit-modules 4609254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(sort $(foreach m,$(1),\ 4618ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),\ 4628ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX))\ 4638ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ 4648ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(m)$(HOST_2ND_ARCH_MODULE_SUFFIX))\ 4658ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan )) 4668ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendef 4678ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Get a list of corresponding 32-bit module names, if one exists; 4688ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# otherwise return the original module name 4698ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandefine get-32-bit-modules-if-we-can 4708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(sort $(foreach m,$(1),\ 4718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS)$(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ 4728ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX)) \ 4738ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX)),\ 4748ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(m)))) 4758ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendef 476572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanelse # TARGET_TRANSLATE_2ND_ARCH 4779254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# For binary translation config, by default only install the first arch. 4789254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine get-32-bit-modules 4799254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 4809254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 4818f860b133896bf655e4342ecefe692d52df81d48Robert Sloandefine get-32-bit-modules-if-we-can 4829254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(strip $(1)) 4839254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 4849254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif # TARGET_TRANSLATE_2ND_ARCH 4859254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 4869254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# If a module is for a cross host os, the required modules must be for 4879254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# that OS too. 4889254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# If a module is built for 32-bit, the required modules must be 32-bit too; 4899254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Otherwise if the module is an executable or shared library, 4909254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# the required modules must be 64-bit; 4919254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# otherwise we require both 64-bit and 32-bit variant, if one exists. 4929254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine select-bitness-of-required-modules 4938f860b133896bf655e4342ecefe692d52df81d48Robert Sloan$(foreach m,$(ALL_MODULES),\ 4949254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(ALL_MODULES.$(m).REQUIRED))\ 4959254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(r),\ 4969254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(ALL_MODULES.$(m).FOR_HOST_CROSS),\ 4979254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(addprefix host_cross_,$(r))))\ 4989254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(ALL_MODULES.$(m).FOR_2ND_ARCH),\ 4999254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r_r := $(call get-32-bit-modules-if-we-can,$(r))),\ 5009254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(filter EXECUTABLES SHARED_LIBRARIES NATIVE_TESTS,$(ALL_MODULES.$(m).CLASS)),\ 5019254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r_r := $(r)),\ 5029254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r_r := $(r) $(call get-32-bit-modules,$(r)))\ 5039254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5049254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5059254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval ALL_MODULES.$(m).REQUIRED := $(strip $(r_r)))\ 5069254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5079254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan) 5089254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 5099254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call select-bitness-of-required-modules) 5109254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanr_r := 5119254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 5129254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine add-required-deps 5139254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(1): | $(2) 5148f860b133896bf655e4342ecefe692d52df81d48Robert Sloanendef 5159254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 5169254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Use a normal dependency instead of an order-only dependency when installing 5179254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# host dynamic binaries so that the timestamp of the final binary always 5189254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# changes, even if the toc optimization has skipped relinking the binary 5199254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# and its dependant shared libraries. 5209254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine add-required-host-so-deps 5219254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(1): $(2) 5229254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 5238f860b133896bf655e4342ecefe692d52df81d48Robert Sloan 5249254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Sets up dependencies such that whenever a host module is installed, 5259254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# any other host modules listed in $(ALL_MODULES.$(m).REQUIRED) will also be installed 5269254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine add-all-host-to-host-required-modules-deps 5279254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(foreach m,$(ALL_MODULES), \ 5289254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(ALL_MODULES.$(m).REQUIRED)) \ 5299254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(r), \ 5309254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(call module-installed-files,$(r))) \ 5319254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval h_m := $(filter $(HOST_OUT)/%, $(ALL_MODULES.$(m).INSTALLED))) \ 5329254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval hc_m := $(filter $(HOST_CROSS_OUT)/%, $(ALL_MODULES.$(m).INSTALLED))) \ 5339254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval h_r := $(filter $(HOST_OUT)/%, $(r))) \ 5349254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval hc_r := $(filter $(HOST_CROSS_OUT)/%, $(r))) \ 5359254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval h_m := $(filter-out $(h_r), $(h_m))) \ 5369254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval hc_m := $(filter-out $(hc_r), $(hc_m))) \ 5379254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(h_m), $(eval $(call add-required-deps, $(h_m),$(h_r)))) \ 5389254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(hc_m), $(eval $(call add-required-deps, $(hc_m),$(hc_r)))) \ 5399254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan ) \ 5409254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan) 5418f860b133896bf655e4342ecefe692d52df81d48Robert Sloanendef 5429254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call add-all-host-to-host-required-modules-deps) 5439254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 5449254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Sets up dependencies such that whenever a target module is installed, 5459254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# any other target modules listed in $(ALL_MODULES.$(m).REQUIRED) will also be installed 5469254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine add-all-target-to-target-required-modules-deps 5479254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(foreach m,$(ALL_MODULES), \ 5489254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(ALL_MODULES.$(m).REQUIRED)) \ 5499254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(r), \ 5508f860b133896bf655e4342ecefe692d52df81d48Robert Sloan $(eval r := $(call module-installed-files,$(r))) \ 5519254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval t_m := $(filter $(TARGET_OUT_ROOT)/%, $(ALL_MODULES.$(m).INSTALLED))) \ 5529254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval t_r := $(filter $(TARGET_OUT_ROOT)/%, $(r))) \ 5539254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval t_m := $(filter-out $(t_r), $(t_m))) \ 5549254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(t_m), $(eval $(call add-required-deps, $(t_m),$(t_r)))) \ 5559254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan ) \ 5569254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan) 5579254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 5589254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call add-all-target-to-target-required-modules-deps) 5598f860b133896bf655e4342ecefe692d52df81d48Robert Sloan 5609254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Sets up dependencies such that whenever a host module is installed, 5619254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# any target modules listed in $(ALL_MODULES.$(m).TARGET_REQUIRED) will also be installed 5629254e681d446a8105bd66f08bae1252d4d89a139Robert Sloandefine add-all-host-to-target-required-modules-deps 5639254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(foreach m,$(ALL_MODULES), \ 5649254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval req_mods := $(ALL_MODULES.$(m).TARGET_REQUIRED))\ 5659254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(req_mods), \ 5668f860b133896bf655e4342ecefe692d52df81d48Robert Sloan $(eval req_files := )\ 5679254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(foreach req_mod,$(req_mods), \ 5689254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval req_file := $(filter $(TARGET_OUT_ROOT)/%, $(call module-installed-files,$(req_mod)))) \ 5699254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(strip $(req_file)),\ 5709254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan ,\ 5719254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(error $(m).LOCAL_TARGET_REQUIRED_MODULES : illegal value $(req_mod) : not a device module. If you want to specify host modules to be required to be installed along with your host module, add those module names to LOCAL_REQUIRED_MODULES instead)\ 5729254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5738f860b133896bf655e4342ecefe692d52df81d48Robert Sloan $(eval req_files := $(req_files)$(space)$(req_file))\ 5749254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5759254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval req_files := $(strip $(req_files)))\ 5769254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval mod_files := $(filter $(HOST_OUT)/%, $(call module-installed-files,$(m)))) \ 5779254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval mod_files := $(filter-out $(req_files),$(mod_files)))\ 5789254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(mod_files),\ 5799254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval $(call add-required-deps, $(mod_files),$(req_files))) \ 5808ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan )\ 5819254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan )\ 5828ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan) 5839254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 5849254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call add-all-host-to-target-required-modules-deps) 5859254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan 5868f860b133896bf655e4342ecefe692d52df81d48Robert Sloan 5879254e681d446a8105bd66f08bae1252d4d89a139Robert Sloant_m := 5888ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanh_m := 5898f860b133896bf655e4342ecefe692d52df81d48Robert Sloanhc_m := 5908f860b133896bf655e4342ecefe692d52df81d48Robert Sloant_r := 5918ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanh_r := 5928ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanhc_r := 5938ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 5949254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Establish the dependencies on the shared libraries. 5959254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# It also adds the shared library module names to ALL_MODULES.$(m).REQUIRED, 5969254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# so they can be expanded to product_MODULES later. 5979254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# $(1): TARGET_ or HOST_ or HOST_CROSS_. 5989254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# $(2): non-empty for 2nd arch. 5999254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# $(3): non-empty for host cross compile. 6008f860b133896bf655e4342ecefe692d52df81d48Robert Sloandefine resolve-shared-libs-depes 6018ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(foreach m,$($(if $(2),$($(1)2ND_ARCH_VAR_PREFIX))$(1)DEPENDENCIES_ON_SHARED_LIBRARIES),\ 6028ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(eval p := $(subst :,$(space),$(m)))\ 6039254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval mod := $(firstword $(p)))\ 6049254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval deps := $(subst $(comma),$(space),$(lastword $(p))))\ 6059254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval root := $(1)OUT$(if $(call streq,$(1),TARGET_),_ROOT))\ 6069254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(2),$(eval deps := $(addsuffix $($(1)2ND_ARCH_MODULE_SUFFIX),$(deps))))\ 6079254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(3),$(eval deps := $(addprefix host_cross_,$(deps))))\ 6089254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval r := $(filter $($(root))/%,$(call module-installed-files,\ 6098ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(deps))))\ 6109254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(if $(filter $(1),HOST_),\ 6118ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan $(eval $(call add-required-host-so-deps,$(word 2,$(p)),$(r))),\ 6129254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval $(call add-required-deps,$(word 2,$(p)),$(r))))\ 6139254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan $(eval ALL_MODULES.$(mod).REQUIRED += $(deps))) 6149254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendef 6158f860b133896bf655e4342ecefe692d52df81d48Robert Sloan 6168ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(call resolve-shared-libs-depes,TARGET_) 6178f860b133896bf655e4342ecefe692d52df81d48Robert Sloanifdef TARGET_2ND_ARCH 6188ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(call resolve-shared-libs-depes,TARGET_,true) 6198ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 6208ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(call resolve-shared-libs-depes,HOST_) 6218ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanifdef HOST_2ND_ARCH 6229254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan$(call resolve-shared-libs-depes,HOST_,true) 6239254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanendif 6249254e681d446a8105bd66f08bae1252d4d89a139Robert Sloanifdef HOST_CROSS_OS 6258ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(call resolve-shared-libs-depes,HOST_CROSS_,,true) 6268ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanendif 6278ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 6288ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanm := 6298ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanr := 6308ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanp := 6318ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloandeps := 6328ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanadd-required-deps := 6338ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 6348ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan################################################################################ 6358ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# Link type checking 6368ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 6378ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# ALL_LINK_TYPES contains a list of all link type prefixes (generally one per 6388ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# module, but APKs can "link" to both java and native code). The link type 6398ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# prefix consists of all the information needed by intermediates-dir-for: 6408ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# 6418ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# LINK_TYPE:TARGET:_:2ND:STATIC_LIBRARIES:libfoo 6429254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 6439254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 1: LINK_TYPE literal 6448f860b133896bf655e4342ecefe692d52df81d48Robert Sloan# 2: prefix 6459254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - TARGET 6469254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - HOST 6479254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - HOST_CROSS 6489254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - AUX-<variant-name> 6499254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 3: Whether to use the common intermediates directory or not 6509254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - _ 6519254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - COMMON 6529254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 4: Whether it's the second arch or not 6539254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - _ 6549254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - 2ND_ 6559254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 5: Module Class 6569254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - STATIC_LIBRARIES 6579254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - SHARED_LIBRARIES 6589254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - ... 6599254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 6: Module Name 6609254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# 6619254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# Then fields under that are separated by a period and the field name: 6629254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - TYPE: the link types for this module 6639254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - MAKEFILE: Where this module was defined 6649254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - BUILT: The built module location 6659254e681d446a8105bd66f08bae1252d4d89a139Robert Sloan# - DEPS: the link type prefixes for the module's dependencies 666572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# - ALLOWED: the link types to allow in this module's dependencies 667572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# - WARN: the link types to warn about in this module's dependencies 668572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# 669572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan# All of the dependency link types not listed in ALLOWED or WARN will become 6708ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan# errors. 6718ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan################################################################################ 6728ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan 6738ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloanlink_type_error := 674572a4e2e687520da9e518528d7371b794b1decc0Robert Sloan 675572a4e2e687520da9e518528d7371b794b1decc0Robert Sloandefine link-type-prefix-base 6768ff035535f7cf2903f02bbe94d2fa10b7ab855f1Robert Sloan$(word 2,$(subst :,$(space),$(1))) 677572a4e2e687520da9e518528d7371b794b1decc0Robert Sloanendef 678572a4e2e687520da9e518528d7371b794b1decc0Robert Sloandefine link-type-prefix 6798f860b133896bf655e4342ecefe692d52df81d48Robert Sloan$(if $(filter AUX-%,$(link-type-prefix-base)),$(patsubst AUX-%,AUX,$(link-type-prefix-base)),$(link-type-prefix-base)) 680endef 681define link-type-aux-variant 682$(if $(filter AUX-%,$(link-type-prefix-base)),$(patsubst AUX-%,%,$(link-type-prefix-base))) 683endef 684define link-type-common 685$(patsubst _,,$(word 3,$(subst :,$(space),$(1)))) 686endef 687define link-type-2ndarchprefix 688$(patsubst _,,$(word 4,$(subst :,$(space),$(1)))) 689endef 690define link-type-class 691$(word 5,$(subst :,$(space),$(1))) 692endef 693define link-type-name 694$(word 6,$(subst :,$(space),$(1))) 695endef 696define link-type-os 697$(strip $(eval _p := $(link-type-prefix))\ 698 $(if $(filter HOST HOST_CROSS,$(_p)),\ 699 $($(_p)_OS),\ 700 $(if $(filter AUX,$(_p)),AUX,android))) 701endef 702define link-type-arch 703$($(link-type-prefix)_$(link-type-2ndarchprefix)ARCH) 704endef 705define link-type-name-variant 706$(link-type-name) ($(link-type-class) $(link-type-os)-$(link-type-arch)) 707endef 708 709# $(1): the prefix of the module doing the linking 710# $(2): the prefix of the linked module 711define link-type-warning 712$(shell $(call echo-warning,$($(1).MAKEFILE),"$(call link-type-name,$(1)) ($($(1).TYPE)) should not link against $(call link-type-name,$(2)) ($(3))")) 713endef 714 715# $(1): the prefix of the module doing the linking 716# $(2): the prefix of the linked module 717define link-type-error 718$(shell $(call echo-error,$($(1).MAKEFILE),"$(call link-type-name,$(1)) ($($(1).TYPE)) can not link against $(call link-type-name,$(2)) ($(3))"))\ 719$(eval link_type_error := true) 720endef 721 722link-type-missing := 723ifneq ($(ALLOW_MISSING_DEPENDENCIES),true) 724 # Print an error message if the linked-to module is missing 725 # $(1): the prefix of the module doing the linking 726 # $(2): the prefix of the missing module 727 define link-type-missing 728 $(shell $(call echo-error,$($(1).MAKEFILE),"$(call link-type-name-variant,$(1)) missing $(call link-type-name-variant,$(2))"))\ 729 $(eval available_variants := $(filter %:$(call link-type-name,$(2)),$(ALL_LINK_TYPES)))\ 730 $(if $(available_variants),\ 731 $(info Available variants:)\ 732 $(foreach v,$(available_variants),$(info $(space)$(space)$(call link-type-name-variant,$(v)))))\ 733 $(info You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.)\ 734 $(eval link_type_error := true) 735 endef 736else 737 define link-type-missing 738 $(eval $$(1).MISSING := true) 739 endef 740endif 741 742# Verify that $(1) can link against $(2) 743# Both $(1) and $(2) are the link type prefix defined above 744define verify-link-type 745$(foreach t,$($(2).TYPE),\ 746 $(if $(filter-out $($(1).ALLOWED),$(t)),\ 747 $(if $(filter $(t),$($(1).WARN)),\ 748 $(call link-type-warning,$(1),$(2),$(t)),\ 749 $(call link-type-error,$(1),$(2),$(t))))) 750endef 751 752# TODO: Verify all branches/configs have reasonable warnings/errors, and remove 753# this override 754verify-link-type = $(eval $$(1).MISSING := true) 755 756$(foreach lt,$(ALL_LINK_TYPES),\ 757 $(foreach d,$($(lt).DEPS),\ 758 $(if $($(d).TYPE),\ 759 $(call verify-link-type,$(lt),$(d)),\ 760 $(call link-type-missing,$(lt),$(d))))) 761 762ifdef link_type_error 763 $(error exiting from previous errors) 764endif 765 766# The intermediate filename for link type rules 767# 768# APPS are special -- they have up to three different rules: 769# 1. The COMMON rule for Java libraries 770# 2. The jni_link_type rule for embedded native code 771# 3. The 2ND_jni_link_type for the second architecture native code 772define link-type-file 773$(eval _ltf_aux_variant:=$(link-type-aux-variant))\ 774$(if $(_ltf_aux_variant),$(call aux-variant-load-env,$(_ltf_aux_variant)))\ 775$(call intermediates-dir-for,$(link-type-class),$(link-type-name),$(filter AUX HOST HOST_CROSS,$(link-type-prefix)),$(link-type-common),$(link-type-2ndarchprefix),$(filter HOST_CROSS,$(link-type-prefix)))/$(if $(filter APPS,$(link-type-class)),$(if $(link-type-common),,$(link-type-2ndarchprefix)jni_))link_type\ 776$(if $(_ltf_aux_variant),$(call aux-variant-load-env,none))\ 777$(eval _ltf_aux_variant:=) 778endef 779 780# Write out the file-based link_type rules for the ALLOW_MISSING_DEPENDENCIES 781# case. We always need to write the file for mm to work, but only need to 782# check it if we weren't able to check it when reading the Android.mk files. 783define link-type-file-rule 784my_link_type_deps := $(foreach l,$($(1).DEPS),$(call link-type-file,$(l))) 785my_link_type_file := $(call link-type-file,$(1)) 786$($(1).BUILT): | $$(my_link_type_file) 787$$(my_link_type_file): PRIVATE_DEPS := $$(my_link_type_deps) 788ifeq ($($(1).MISSING),true) 789$$(my_link_type_file): $(CHECK_LINK_TYPE) 790endif 791$$(my_link_type_file): $$(my_link_type_deps) 792 @echo Check module type: $$@ 793 $$(hide) mkdir -p $$(dir $$@) && rm -f $$@ 794ifeq ($($(1).MISSING),true) 795 $$(hide) $(CHECK_LINK_TYPE) --makefile $($(1).MAKEFILE) --module $(link-type-name) \ 796 --type "$($(1).TYPE)" $(addprefix --allowed ,$($(1).ALLOWED)) \ 797 $(addprefix --warn ,$($(1).WARN)) $$(PRIVATE_DEPS) 798endif 799 $$(hide) echo "$($(1).TYPE)" >$$@ 800endef 801 802$(foreach lt,$(ALL_LINK_TYPES),\ 803 $(eval $(call link-type-file-rule,$(lt)))) 804 805# ------------------------------------------------------------------- 806# Figure out our module sets. 807# 808# Of the modules defined by the component makefiles, 809# determine what we actually want to build. 810 811########################################################### 812## Expand a module name list with REQUIRED modules 813########################################################### 814# $(1): The variable name that holds the initial module name list. 815# the variable will be modified to hold the expanded results. 816# $(2): The initial module name list. 817# Returns empty string (maybe with some whitespaces). 818define expand-required-modules 819$(eval _erm_new_modules := $(sort $(filter-out $($(1)),\ 820 $(foreach m,$(2),$(ALL_MODULES.$(m).REQUIRED)))))\ 821$(if $(_erm_new_modules),$(eval $(1) += $(_erm_new_modules))\ 822 $(call expand-required-modules,$(1),$(_erm_new_modules))) 823endef 824 825ifdef FULL_BUILD 826 # The base list of modules to build for this product is specified 827 # by the appropriate product definition file, which was included 828 # by product_config.mk. 829 product_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES) 830 # Filter out the overridden packages before doing expansion 831 product_MODULES := $(filter-out $(foreach p, $(product_MODULES), \ 832 $(PACKAGES.$(p).OVERRIDES)), $(product_MODULES)) 833 # Filter out executables as well 834 product_MODULES := $(filter-out $(foreach m, $(product_MODULES), \ 835 $(EXECUTABLES.$(m).OVERRIDES)), $(product_MODULES)) 836 837 # Resolve the :32 :64 module name 838 modules_32 := $(patsubst %:32,%,$(filter %:32, $(product_MODULES))) 839 modules_64 := $(patsubst %:64,%,$(filter %:64, $(product_MODULES))) 840 modules_rest := $(filter-out %:32 %:64,$(product_MODULES)) 841 # Note for 32-bit product, $(modules_32) and $(modules_64) will be 842 # added as their original module names. 843 product_MODULES := $(call get-32-bit-modules-if-we-can, $(modules_32)) 844 product_MODULES += $(modules_64) 845 # For the rest we add both 846 product_MODULES += $(call get-32-bit-modules, $(modules_rest)) 847 product_MODULES += $(modules_rest) 848 849 $(call expand-required-modules,product_MODULES,$(product_MODULES)) 850 851 product_FILES := $(call module-installed-files, $(product_MODULES)) 852 ifeq (0,1) 853 $(info product_FILES for $(TARGET_DEVICE) ($(INTERNAL_PRODUCT)):) 854 $(foreach p,$(product_FILES),$(info : $(p))) 855 $(error done) 856 endif 857else 858 # We're not doing a full build, and are probably only including 859 # a subset of the module makefiles. Don't try to build any modules 860 # requested by the product, because we probably won't have rules 861 # to build them. 862 product_FILES := 863endif 864 865eng_MODULES := $(sort \ 866 $(call get-tagged-modules,eng) \ 867 $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_ENG)) \ 868 ) 869debug_MODULES := $(sort \ 870 $(call get-tagged-modules,debug) \ 871 $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG)) \ 872 ) 873tests_MODULES := $(sort \ 874 $(call get-tagged-modules,tests) \ 875 $(call module-installed-files, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_TESTS)) \ 876 ) 877 878# TODO: Remove the 3 places in the tree that use ALL_DEFAULT_INSTALLED_MODULES 879# and get rid of it from this list. 880modules_to_install := $(sort \ 881 $(ALL_DEFAULT_INSTALLED_MODULES) \ 882 $(product_FILES) \ 883 $(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \ 884 $(CUSTOM_MODULES) \ 885 ) 886 887# Some packages may override others using LOCAL_OVERRIDES_PACKAGES. 888# Filter out (do not install) any overridden packages. 889overridden_packages := $(call get-package-overrides,$(modules_to_install)) 890ifdef overridden_packages 891# old_modules_to_install := $(modules_to_install) 892 modules_to_install := \ 893 $(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk %/$(p).odex %/$(p).vdex), \ 894 $(modules_to_install)) 895endif 896#$(error filtered out 897# $(filter-out $(modules_to_install),$(old_modules_to_install))) 898 899# Don't include any GNU General Public License shared objects or static 900# libraries in SDK images. GPL executables (not static/dynamic libraries) 901# are okay if they don't link against any closed source libraries (directly 902# or indirectly) 903 904# It's ok (and necessary) to build the host tools, but nothing that's 905# going to be installed on the target (including static libraries). 906 907ifdef is_sdk_build 908 target_gnu_MODULES := \ 909 $(filter \ 910 $(TARGET_OUT_INTERMEDIATES)/% \ 911 $(TARGET_OUT)/% \ 912 $(TARGET_OUT_DATA)/%, \ 913 $(sort $(call get-tagged-modules,gnu))) 914 target_gnu_MODULES := $(filter-out $(TARGET_OUT_EXECUTABLES)/%,$(target_gnu_MODULES)) 915 target_gnu_MODULES := $(filter-out %/libopenjdkjvmti.so,$(target_gnu_MODULES)) 916 target_gnu_MODULES := $(filter-out %/libopenjdkjvmtid.so,$(target_gnu_MODULES)) 917 $(info Removing from sdk:)$(foreach d,$(target_gnu_MODULES),$(info : $(d))) 918 modules_to_install := \ 919 $(filter-out $(target_gnu_MODULES),$(modules_to_install)) 920 921 # Ensure every module listed in PRODUCT_PACKAGES* gets something installed 922 # TODO: Should we do this for all builds and not just the sdk? 923 dangling_modules := 924 $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES), \ 925 $(if $(strip $(ALL_MODULES.$(m).INSTALLED) $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).INSTALLED)),,\ 926 $(eval dangling_modules += $(m)))) 927 ifneq ($(dangling_modules),) 928 $(warning: Modules '$(dangling_modules)' in PRODUCT_PACKAGES have nothing to install!) 929 endif 930 $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_DEBUG), \ 931 $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\ 932 $(warning $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_DEBUG has nothing to install!))) 933 $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_ENG), \ 934 $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\ 935 $(warning $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_ENG has nothing to install!))) 936 $(foreach m, $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES_TESTS), \ 937 $(if $(strip $(ALL_MODULES.$(m).INSTALLED)),,\ 938 $(warning $(ALL_MODULES.$(m).MAKEFILE): Module '$(m)' in PRODUCT_PACKAGES_TESTS has nothing to install!))) 939endif 940 941# build/make/core/Makefile contains extra stuff that we don't want to pollute this 942# top-level makefile with. It expects that ALL_DEFAULT_INSTALLED_MODULES 943# contains everything that's built during the current make, but it also further 944# extends ALL_DEFAULT_INSTALLED_MODULES. 945ALL_DEFAULT_INSTALLED_MODULES := $(modules_to_install) 946include $(BUILD_SYSTEM)/Makefile 947modules_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES)) 948ALL_DEFAULT_INSTALLED_MODULES := 949 950 951# These are additional goals that we build, in order to make sure that there 952# is as little code as possible in the tree that doesn't build. 953modules_to_check := $(foreach m,$(ALL_MODULES),$(ALL_MODULES.$(m).CHECKED)) 954 955# If you would like to build all goals, and not skip any intermediate 956# steps, you can pass the "all" modifier goal on the commandline. 957ifneq ($(filter all,$(MAKECMDGOALS)),) 958modules_to_check += $(foreach m,$(ALL_MODULES),$(ALL_MODULES.$(m).BUILT)) 959endif 960 961# for easier debugging 962modules_to_check := $(sort $(modules_to_check)) 963#$(error modules_to_check $(modules_to_check)) 964 965# ------------------------------------------------------------------- 966# This is used to to get the ordering right, you can also use these, 967# but they're considered undocumented, so don't complain if their 968# behavior changes. 969# An internal target that depends on all copied headers 970# (see copy_headers.make). Other targets that need the 971# headers to be copied first can depend on this target. 972.PHONY: all_copied_headers 973all_copied_headers: ; 974 975$(ALL_C_CPP_ETC_OBJECTS): | all_copied_headers 976 977# All the droid stuff, in directories 978.PHONY: files 979files: $(modules_to_install) \ 980 $(INSTALLED_ANDROID_INFO_TXT_TARGET) 981 982# ------------------------------------------------------------------- 983 984.PHONY: checkbuild 985checkbuild: $(modules_to_check) droid_targets 986 987ifeq (true,$(ANDROID_BUILD_EVERYTHING_BY_DEFAULT)) 988droid: checkbuild 989endif 990 991.PHONY: ramdisk 992ramdisk: $(INSTALLED_RAMDISK_TARGET) 993 994.PHONY: systemtarball 995systemtarball: $(INSTALLED_SYSTEMTARBALL_TARGET) 996 997.PHONY: boottarball 998boottarball: $(INSTALLED_BOOTTARBALL_TARGET) 999 1000.PHONY: userdataimage 1001userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET) 1002 1003ifneq (,$(filter userdataimage, $(MAKECMDGOALS))) 1004$(call dist-for-goals, userdataimage, $(BUILT_USERDATAIMAGE_TARGET)) 1005endif 1006 1007.PHONY: userdatatarball 1008userdatatarball: $(INSTALLED_USERDATATARBALL_TARGET) 1009 1010.PHONY: cacheimage 1011cacheimage: $(INSTALLED_CACHEIMAGE_TARGET) 1012 1013.PHONY: bptimage 1014bptimage: $(INSTALLED_BPTIMAGE_TARGET) 1015 1016.PHONY: vendorimage 1017vendorimage: $(INSTALLED_VENDORIMAGE_TARGET) 1018 1019.PHONY: systemotherimage 1020systemotherimage: $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) 1021 1022.PHONY: bootimage 1023bootimage: $(INSTALLED_BOOTIMAGE_TARGET) 1024 1025.PHONY: vbmetaimage 1026vbmetaimage: $(INSTALLED_VBMETAIMAGE_TARGET) 1027 1028.PHONY: auxiliary 1029auxiliary: $(INSTALLED_AUX_TARGETS) 1030 1031# Build files and then package it into the rom formats 1032.PHONY: droidcore 1033droidcore: files \ 1034 systemimage \ 1035 $(INSTALLED_BOOTIMAGE_TARGET) \ 1036 $(INSTALLED_RECOVERYIMAGE_TARGET) \ 1037 $(INSTALLED_VBMETAIMAGE_TARGET) \ 1038 $(INSTALLED_USERDATAIMAGE_TARGET) \ 1039 $(INSTALLED_CACHEIMAGE_TARGET) \ 1040 $(INSTALLED_BPTIMAGE_TARGET) \ 1041 $(INSTALLED_VENDORIMAGE_TARGET) \ 1042 $(INSTALLED_SYSTEMOTHERIMAGE_TARGET) \ 1043 $(INSTALLED_FILES_FILE) \ 1044 $(INSTALLED_FILES_FILE_VENDOR) \ 1045 $(INSTALLED_FILES_FILE_SYSTEMOTHER) 1046 1047# dist_files only for putting your library into the dist directory with a full build. 1048.PHONY: dist_files 1049 1050ifneq ($(TARGET_BUILD_APPS),) 1051 # If this build is just for apps, only build apps and not the full system by default. 1052 1053 unbundled_build_modules := 1054 ifneq ($(filter all,$(TARGET_BUILD_APPS)),) 1055 # If they used the magic goal "all" then build all apps in the source tree. 1056 unbundled_build_modules := $(foreach m,$(sort $(ALL_MODULES)),$(if $(filter APPS,$(ALL_MODULES.$(m).CLASS)),$(m))) 1057 else 1058 unbundled_build_modules := $(TARGET_BUILD_APPS) 1059 endif 1060 1061 # Dist the installed files if they exist. 1062 apps_only_installed_files := $(foreach m,$(unbundled_build_modules),$(ALL_MODULES.$(m).INSTALLED)) 1063 $(call dist-for-goals,apps_only, $(apps_only_installed_files)) 1064 # For uninstallable modules such as static Java library, we have to dist the built file, 1065 # as <module_name>.<suffix> 1066 apps_only_dist_built_files := $(foreach m,$(unbundled_build_modules),$(if $(ALL_MODULES.$(m).INSTALLED),,\ 1067 $(if $(ALL_MODULES.$(m).BUILT),$(ALL_MODULES.$(m).BUILT):$(m)$(suffix $(ALL_MODULES.$(m).BUILT)))\ 1068 $(if $(ALL_MODULES.$(m).AAR),$(ALL_MODULES.$(m).AAR):$(m).aar)\ 1069 )) 1070 $(call dist-for-goals,apps_only, $(apps_only_dist_built_files)) 1071 1072 ifeq ($(EMMA_INSTRUMENT),true) 1073 $(JACOCO_REPORT_CLASSES_ALL) : $(apps_only_installed_files) 1074 $(call dist-for-goals,apps_only, $(JACOCO_REPORT_CLASSES_ALL)) 1075 endif 1076 1077 $(PROGUARD_DICT_ZIP) : $(apps_only_installed_files) 1078 $(call dist-for-goals,apps_only, $(PROGUARD_DICT_ZIP)) 1079 1080 $(SYMBOLS_ZIP) : $(apps_only_installed_files) 1081 $(call dist-for-goals,apps_only, $(SYMBOLS_ZIP)) 1082 1083 $(COVERAGE_ZIP) : $(apps_only_installed_files) 1084 $(call dist-for-goals,apps_only, $(COVERAGE_ZIP)) 1085 1086.PHONY: apps_only 1087apps_only: $(unbundled_build_modules) 1088 1089droid_targets: apps_only 1090 1091# Combine the NOTICE files for a apps_only build 1092$(eval $(call combine-notice-files, html, \ 1093 $(target_notice_file_txt), \ 1094 $(target_notice_file_html_or_xml), \ 1095 "Notices for files for apps:", \ 1096 $(TARGET_OUT_NOTICE_FILES), \ 1097 $(apps_only_installed_files))) 1098 1099 1100else # TARGET_BUILD_APPS 1101 $(call dist-for-goals, droidcore, \ 1102 $(INTERNAL_UPDATE_PACKAGE_TARGET) \ 1103 $(INTERNAL_OTA_PACKAGE_TARGET) \ 1104 $(BUILT_OTATOOLS_PACKAGE) \ 1105 $(SYMBOLS_ZIP) \ 1106 $(COVERAGE_ZIP) \ 1107 $(INSTALLED_FILES_FILE) \ 1108 $(INSTALLED_FILES_FILE_VENDOR) \ 1109 $(INSTALLED_FILES_FILE_SYSTEMOTHER) \ 1110 $(INSTALLED_BUILD_PROP_TARGET) \ 1111 $(BUILT_TARGET_FILES_PACKAGE) \ 1112 $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ 1113 $(INSTALLED_RAMDISK_TARGET) \ 1114 ) 1115 1116 # Put a copy of the radio/bootloader files in the dist dir. 1117 $(foreach f,$(INSTALLED_RADIOIMAGE_TARGET), \ 1118 $(call dist-for-goals, droidcore, $(f))) 1119 1120 ifneq ($(ANDROID_BUILD_EMBEDDED),true) 1121 ifneq ($(TARGET_BUILD_PDK),true) 1122 $(call dist-for-goals, droidcore, \ 1123 $(APPS_ZIP) \ 1124 $(INTERNAL_EMULATOR_PACKAGE_TARGET) \ 1125 $(PACKAGE_STATS_FILE) \ 1126 ) 1127 endif 1128 endif 1129 1130 ifeq ($(EMMA_INSTRUMENT),true) 1131 $(JACOCO_REPORT_CLASSES_ALL) : $(INSTALLED_SYSTEMIMAGE) 1132 $(call dist-for-goals, dist_files, $(JACOCO_REPORT_CLASSES_ALL)) 1133 endif 1134 1135# Building a full system-- the default is to build droidcore 1136droid_targets: droidcore dist_files 1137 1138endif # TARGET_BUILD_APPS 1139 1140.PHONY: docs 1141docs: $(ALL_DOCS) 1142 1143.PHONY: sdk 1144ALL_SDK_TARGETS := $(INTERNAL_SDK_TARGET) 1145sdk: $(ALL_SDK_TARGETS) 1146$(call dist-for-goals,sdk win_sdk, \ 1147 $(ALL_SDK_TARGETS) \ 1148 $(SYMBOLS_ZIP) \ 1149 $(COVERAGE_ZIP) \ 1150 $(INSTALLED_BUILD_PROP_TARGET) \ 1151) 1152 1153# umbrella targets to assit engineers in verifying builds 1154.PHONY: java native target host java-host java-target native-host native-target \ 1155 java-host-tests java-target-tests native-host-tests native-target-tests \ 1156 java-tests native-tests host-tests target-tests tests java-dex 1157# some synonyms 1158.PHONY: host-java target-java host-native target-native \ 1159 target-java-tests target-native-tests 1160host-java : java-host 1161target-java : java-target 1162host-native : native-host 1163target-native : native-target 1164target-java-tests : java-target-tests 1165target-native-tests : native-target-tests 1166tests : host-tests target-tests 1167 1168# Phony target to run all java compilations that use javac 1169.PHONY: javac-check 1170 1171ifneq (,$(filter samplecode, $(MAKECMDGOALS))) 1172.PHONY: samplecode 1173sample_MODULES := $(sort $(call get-tagged-modules,samples)) 1174sample_APKS_DEST_PATH := $(TARGET_COMMON_OUT_ROOT)/samples 1175sample_APKS_COLLECTION := \ 1176 $(foreach module,$(sample_MODULES),$(sample_APKS_DEST_PATH)/$(notdir $(module))) 1177$(foreach module,$(sample_MODULES),$(eval $(call \ 1178 copy-one-file,$(module),$(sample_APKS_DEST_PATH)/$(notdir $(module))))) 1179sample_ADDITIONAL_INSTALLED := \ 1180 $(filter-out $(modules_to_install) $(modules_to_check),$(sample_MODULES)) 1181samplecode: $(sample_APKS_COLLECTION) 1182 @echo "Collect sample code apks: $^" 1183 # remove apks that are not intended to be installed. 1184 rm -f $(sample_ADDITIONAL_INSTALLED) 1185endif # samplecode in $(MAKECMDGOALS) 1186 1187.PHONY: findbugs 1188findbugs: $(INTERNAL_FINDBUGS_HTML_TARGET) $(INTERNAL_FINDBUGS_XML_TARGET) 1189 1190#xxx scrape this from ALL_MODULE_NAME_TAGS 1191.PHONY: modules 1192modules: 1193 @echo "Available sub-modules:" 1194 @echo "$(call module-names-for-tag-list,$(ALL_MODULE_TAGS))" | \ 1195 tr -s ' ' '\n' | sort -u | $(COLUMN) 1196 1197.PHONY: nothing 1198nothing: 1199 @echo Successfully read the makefiles. 1200 1201.PHONY: tidy_only 1202tidy_only: 1203 @echo Successfully make tidy_only. 1204 1205ndk: $(SOONG_OUT_DIR)/ndk.timestamp 1206.PHONY: ndk 1207 1208endif # KATI 1209