envsetup.mk revision a43f213c78ae37fc3a4829da99d9900cf18b2f6f
13eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Variables we check: 23eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# HOST_BUILD_TYPE = { release debug } 3f57387d54bd8f2c0261834b2ad16155f1db63291hhtian# TARGET_BUILD_TYPE = { release debug } 4f57387d54bd8f2c0261834b2ad16155f1db63291hhtian# and we output a bunch of variables, see the case statement at 53eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# the bottom for the full list 63eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# OUT_DIR is also set to "out" if it's not already set. 73eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# this allows you to set it to somewhere else if you like 83eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# SCAN_EXCLUDE_DIRS is an optional, whitespace separated list of 93eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# directories that will also be excluded from full checkout tree 103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# searches for source or make files, in addition to OUT_DIR. 113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# This can be useful if you set OUT_DIR to be a different directory 123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# than other outputs of your build system. 133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Set up version information. 153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanginclude $(BUILD_SYSTEM)/version_defaults.mk 163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# --------------------------------------------------------------- 183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# If you update the build system such that the environment setup 193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# or buildspec.mk need to be updated, increment this number, and 203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# people who haven't re-run those will have to do so before they 213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# can build. Make sure to also update the corresponding value in 223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# buildspec.mk.default and envsetup.sh. 233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangCORRECT_BUILD_ENV_SEQUENCE_NUMBER := 10 243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# --------------------------------------------------------------- 263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# The product defaults to generic on hardware 273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# NOTE: This will be overridden in product_config.mk if make 282c40a813fc32c5c9aa204b10b037c48f42fe6422qwang# was invoked with a PRODUCT-xxx-yyy goal. 292c40a813fc32c5c9aa204b10b037c48f42fe6422qwangifeq ($(TARGET_PRODUCT),) 302c40a813fc32c5c9aa204b10b037c48f42fe6422qwangTARGET_PRODUCT := aosp_arm 313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 322c40a813fc32c5c9aa204b10b037c48f42fe6422qwang 333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# the variant -- the set of files that are included for a build 353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(strip $(TARGET_BUILD_VARIANT)),) 363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_BUILD_VARIANT := eng 373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# --------------------------------------------------------------- 403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Set up configuration for host machine. We don't do cross- 413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# compiles except for arm/mips, so the HOST is whatever we are 423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# running on 433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangUNAME := $(shell uname -sm) 453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# HOST_OS 473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring Linux,$(UNAME))) 483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_OS := linux 493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring Darwin,$(UNAME))) 513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_OS := darwin 527ccf38a33e1e227131c170a621d183b3bacef148qhuangendif 533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring Macintosh,$(UNAME))) 543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_OS := darwin 553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring CYGWIN,$(UNAME))) 573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_OS := windows 583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# BUILD_OS is the real host doing the build. 613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangBUILD_OS := $(HOST_OS) 623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 637ccf38a33e1e227131c170a621d183b3bacef148qhuang# Under Linux, if USE_MINGW is set, we change HOST_OS to Windows to build the 643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Windows SDK. Only a subset of tools and SDK will manage to build properly. 653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(HOST_OS),linux) 663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifdef USE_MINGW 673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_OS := windows 683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(HOST_OS),) 723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!) 733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# HOST_ARCH 763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring x86_64,$(UNAME))) 773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_ARCH := x86_64 783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_2ND_ARCH := x86 793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang HOST_IS_64_BIT := true 803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq (,$(findstring x86,$(UNAME))) 823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error Building on a 32-bit x86 host is not supported: $(UNAME)!) 833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangBUILD_ARCH := $(HOST_ARCH) 873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangBUILD_2ND_ARCH := $(HOST_2ND_ARCH) 883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(HOST_ARCH),) 903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!) 913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# the host build defaults to release, and it must be release or debug 943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(HOST_BUILD_TYPE),) 953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_BUILD_TYPE := release 963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(HOST_BUILD_TYPE),release) 993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(HOST_BUILD_TYPE),debug) 1003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)') 1013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1027ccf38a33e1e227131c170a621d183b3bacef148qhuangendif 1033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir. 1053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_PREBUILT_ARCH := x86 1063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# This is the standard way to name a directory containing prebuilt host 1073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc 1083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH) 1093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT. 1113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Define them here so they can be used in product config files. 1127ccf38a33e1e227131c170a621d183b3bacef148qhuangTARGET_COPY_OUT_SYSTEM := system 1133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_DATA := data 1143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_OEM := oem 1153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_ODM := odm 1163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_ROOT := root 1173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_RECOVERY := recovery 1183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang########################################### 1193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Define TARGET_COPY_OUT_VENDOR to a placeholder, for at this point 1203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# we don't know if the device wants to build a separate vendor.img 1213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# or just build vendor stuff into system.img. 1227ccf38a33e1e227131c170a621d183b3bacef148qhuang# A device can set up TARGET_COPY_OUT_VENDOR to "vendor" in its 1233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# BoardConfig.mk. 1243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# We'll substitute with the real value after loading BoardConfig.mk. 1253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang_vendor_path_placeholder := ||VENDOR-PATH-PH|| 1263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) 1273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang########################################### 1283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Read the product specs so we can get TARGET_DEVICE and other 1303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# variables that we need in order to locate the output files. 1313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanginclude $(BUILD_SYSTEM)/product_config.mk 1323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangbuild_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT)) 1343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1) 1353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT)) 1363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error must be empty or one of: eng user userdebug) 1373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Build host as 32-bit for SDK build. 1403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(filter $(MAKECMDGOALS),win_sdk sdk),) 1413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_PREFER_32_BIT := true 1423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifdef USE_MINGW 1443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# We only build sdk host tools in the MinGW windows build. 1457ccf38a33e1e227131c170a621d183b3bacef148qhuang# Build it as 32-bit as well. 1463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_PREFER_32_BIT := true 1473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangSDK_HOST_ARCH := x86 1493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Boards may be defined under $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE) 1513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# or under vendor/*/$(TARGET_DEVICE). Search in both places, but 1523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# make sure only one exists. 1533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Real boards should always be associated with an OEM vendor. 1543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangboard_config_mk := \ 1553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(strip $(wildcard \ 1563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(SRC_TARGET_DIR)/board/$(TARGET_DEVICE)/BoardConfig.mk \ 1573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(shell test -d device && find device -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ 1583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(shell test -d vendor && find vendor -maxdepth 4 -path '*/$(TARGET_DEVICE)/BoardConfig.mk') \ 1593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang )) 1603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(board_config_mk),) 1613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(error No config file found for TARGET_DEVICE $(TARGET_DEVICE)) 1623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(words $(board_config_mk)),1) 1643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(error Multiple board config files for TARGET_DEVICE $(TARGET_DEVICE): $(board_config_mk)) 1653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwanginclude $(board_config_mk) 1673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_ARCH),) 1683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang $(error TARGET_ARCH not defined by board config: $(board_config_mk)) 1693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) 1713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangboard_config_mk := 1723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang########################################### 1743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR 1753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_COPY_OUT_VENDOR),$(_vendor_path_placeholder)) 1763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COPY_OUT_VENDOR := system/vendor 1773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse ifeq ($(filter vendor system/vendor,$(TARGET_COPY_OUT_VENDOR)),) 1783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(error TARGET_COPY_OUT_VENDOR must be either 'vendor' or 'system/vendor', seeing '$(TARGET_COPY_OUT_VENDOR)'.) 1793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangPRODUCT_COPY_FILES := $(subst $(_vendor_path_placeholder),$(TARGET_COPY_OUT_VENDOR),$(PRODUCT_COPY_FILES)) 1813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang########################################### 1823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# --------------------------------------------------------------- 1853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Set up configuration for target machine. 1863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# The following must be set: 1873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# TARGET_OS = { linux } 1883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# TARGET_ARCH = { arm | x86 | mips } 1893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OS := linux 1913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# TARGET_ARCH should be set by BoardConfig.mk and will be checked later 1923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(filter %64,$(TARGET_ARCH)),) 1933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_IS_64_BIT := true 1943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 1953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 1963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# the target build type defaults to release 1973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifneq ($(TARGET_BUILD_TYPE),debug) 1983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_BUILD_TYPE := release 1993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# --------------------------------------------------------------- 2023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# figure out the output directories 2033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq (,$(strip $(OUT_DIR))) 2053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq (,$(strip $(OUT_DIR_COMMON_BASE))) 2063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangOUT_DIR := $(TOPDIR)out 2073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 2083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangOUT_DIR := $(OUT_DIR_COMMON_BASE)/$(notdir $(PWD)) 2093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangDEBUG_OUT_DIR := $(OUT_DIR)/debug 2133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Move the host or target under the debug/ directory 2153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# if necessary. 2163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ROOT_release := $(OUT_DIR)/target 2173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ROOT_debug := $(DEBUG_OUT_DIR)/target 2183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE)) 2193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_ROOT_release := $(OUT_DIR)/host 2213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_ROOT_debug := $(DEBUG_OUT_DIR)/host 2223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_ROOT := $(HOST_OUT_ROOT_$(HOST_BUILD_TYPE)) 2233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# We want to avoid two host bin directories in multilib build. 2253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_release := $(HOST_OUT_ROOT_release)/$(HOST_OS)-$(HOST_PREBUILT_ARCH) 2263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_debug := $(HOST_OUT_ROOT_debug)/$(HOST_OS)-$(HOST_PREBUILT_ARCH) 2273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT := $(HOST_OUT_$(HOST_BUILD_TYPE)) 2283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangBUILD_OUT := $(OUT_DIR)/host/$(BUILD_OS)-$(HOST_PREBUILT_ARCH) 2303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product 2323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common 2343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common 2353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangPRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE) 2373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangOUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs 2393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangBUILD_OUT_EXECUTABLES := $(BUILD_OUT)/bin 2413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_EXECUTABLES := $(HOST_OUT)/bin 2433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64 2443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework 2453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon 2463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj 2483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_HEADERS := $(HOST_OUT_INTERMEDIATES)/include 2493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_INTERMEDIATE_LIBRARIES := $(HOST_OUT_INTERMEDIATES)/lib 2503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES 2513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj 2523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_FAKE := $(HOST_OUT)/fake_packages 2533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_GEN := $(HOST_OUT)/gen 2553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen 2563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Out for HOST_2ND_ARCH 2583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_2ND_ARCH_VAR_PREFIX := 2ND_ 2593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_2ND_ARCH_MODULE_SUFFIX := _32 2603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32 2613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATE_LIBRARIES := $($(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES)/lib 2623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib 2633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES) 2643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES) 2653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# The default host library path. 2673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# It always points to the path where we build libraries in the default bitness. 2683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(HOST_PREFER_32_BIT),true) 2693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_LIBRARY_PATH := $($(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES) 2703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 2713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangHOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) 2723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj 2753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include 2763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_INTERMEDIATE_LIBRARIES := $(TARGET_OUT_INTERMEDIATES)/lib 2773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj 2783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_GEN := $(PRODUCT_OUT)/gen 2803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen 2813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) 2833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(SANITIZE_TARGET),address) 2843eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtarget_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) 2853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 2863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangtarget_out_shared_libraries_base := $(TARGET_OUT) 2873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 2893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin 2903eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin 2913eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_IS_64_BIT),true) 2923eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# /system/lib always contains 32-bit libraries, 2933eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# and /system/lib64 (if present) always contains 64-bit libraries. 2943eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64 2953eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 2963eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 2973eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 2983eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework 2993eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_APPS := $(TARGET_OUT)/app 3003eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT)/priv-app 3013eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout 3023eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars 3033eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ETC := $(TARGET_OUT)/etc 3043eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES 3053eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages 3063eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3073eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# Out for TARGET_2ND_ARCH 3083eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX) 3093eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) 3103eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH) 3113eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES)/lib 3123eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 3133eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 3143eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) 3153eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED) 3163eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3173eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) 3183eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 3193eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES) 3203eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework 3213eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app 3223eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) 3233eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) 3243eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) 3253eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_IS_64_BIT),true) 3263eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64 3273eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 3283eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 3293eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 3303eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages 3313eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3323eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) 3333eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 3343eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) 3353eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 3363eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3373eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_CACHE := $(PRODUCT_OUT)/cache 3383eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3393eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) 3403eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin 3413eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin 3423eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_IS_64_BIT),true) 3433eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib64 3443eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 3453eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib 3463eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 3473eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework 3483eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR)/app 3493eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc 3503eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3513eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) 3523eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib 3533eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) 3543eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3553eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) 3563eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin 3573eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_IS_64_BIT),true) 3583eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64 3593eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 3603eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 3613eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 3623eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# We don't expect Java libraries in the oem.img. 3633eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework 3643eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app 3653eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc 3663eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3673eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) 3683eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 3693eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) 3703eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3713eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) 3723eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin 3733eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangifeq ($(TARGET_IS_64_BIT),true) 3743eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib64 3753eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangelse 3763eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib 3773eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangendif 3783eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM)/app 3793eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc 3803eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang 3813eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) 3823eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib 3833eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwang$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) 3847ccf38a33e1e227131c170a621d183b3bacef148qhuang 3853eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols 3863eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin 3873eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib 3883eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib 3893eb9473ea9a949badfe06ae61d2d3fcfa53651c7qwangTARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 390TARGET_ROOT_OUT_SBIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/sbin 391TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin 392 393TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT) 394TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin 395TARGET_ROOT_OUT_SBIN := $(TARGET_ROOT_OUT)/sbin 396TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc 397TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr 398 399TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY) 400TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root 401 402TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader 403TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root 404TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system 405 406TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer 407TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data 408TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root 409TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system 410 411COMMON_MODULE_CLASSES := TARGET-NOTICE_FILES HOST-NOTICE_FILES HOST-JAVA_LIBRARIES 412 413ifeq (,$(strip $(DIST_DIR))) 414 DIST_DIR := $(OUT_DIR)/dist 415endif 416 417ifeq ($(PRINT_BUILD_CONFIG),) 418PRINT_BUILD_CONFIG := true 419endif 420