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