2009-03-04 11:28:42 +08:00
|
|
|
# Variables we check:
|
|
|
|
# HOST_BUILD_TYPE = { release debug }
|
|
|
|
# TARGET_BUILD_TYPE = { release debug }
|
|
|
|
# and we output a bunch of variables, see the case statement at
|
|
|
|
# the bottom for the full list
|
|
|
|
# OUT_DIR is also set to "out" if it's not already set.
|
|
|
|
# this allows you to set it to somewhere else if you like
|
2015-06-10 01:35:45 +08:00
|
|
|
# SCAN_EXCLUDE_DIRS is an optional, whitespace separated list of
|
|
|
|
# directories that will also be excluded from full checkout tree
|
|
|
|
# searches for source or make files, in addition to OUT_DIR.
|
|
|
|
# This can be useful if you set OUT_DIR to be a different directory
|
|
|
|
# than other outputs of your build system.
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2017-03-29 04:07:56 +08:00
|
|
|
# Returns all words in $1 up to and including $2
|
|
|
|
define find_and_earlier
|
|
|
|
$(strip $(if $(1),
|
|
|
|
$(firstword $(1))
|
|
|
|
$(if $(filter $(firstword $(1)),$(2)),,
|
|
|
|
$(call find_and_earlier,$(wordlist 2,$(words $(1)),$(1)),$(2)))))
|
|
|
|
endef
|
|
|
|
|
|
|
|
#$(warning $(call find_and_earlier,A B C,A))
|
|
|
|
#$(warning $(call find_and_earlier,A B C,B))
|
|
|
|
#$(warning $(call find_and_earlier,A B C,C))
|
|
|
|
#$(warning $(call find_and_earlier,A B C,D))
|
|
|
|
|
|
|
|
define version-list
|
2019-04-10 03:19:55 +08:00
|
|
|
$(1)P1A $(1)P1B $(1)P2A $(1)P2B $(1)D1A $(1)D1B $(1)D2A $(1)D2B $(1)Q1A $(1)Q1B $(1)Q2A $(1)Q2B $(1)Q3A $(1)Q3B
|
2017-03-29 04:07:56 +08:00
|
|
|
endef
|
|
|
|
|
2019-04-10 03:19:55 +08:00
|
|
|
PREV_VERSIONS := OPR1 OPD1 OPD2 OPM1 OPM2 PPR1 PPD1 PPD2 PPM1 PPM2 QPR1
|
|
|
|
ALL_VERSIONS := Q R S T U V W X Y Z
|
|
|
|
ALL_VERSIONS := $(PREV_VERSIONS) $(foreach v,$(ALL_VERSIONS),$(call version-list,$(v)))
|
|
|
|
PREV_VERSIONS :=
|
2017-03-29 04:07:56 +08:00
|
|
|
|
|
|
|
# Filters ALL_VERSIONS down to the range [$1, $2], and errors if $1 > $2 or $3 is
|
|
|
|
# not in [$1, $2]
|
|
|
|
# $(1): min platform version
|
|
|
|
# $(2): max platform version
|
|
|
|
# $(3): default platform version
|
|
|
|
define allowed-platform-versions
|
|
|
|
$(strip \
|
|
|
|
$(if $(filter $(ALL_VERSIONS),$(1)),,
|
|
|
|
$(error Invalid MIN_PLATFORM_VERSION '$(1)'))
|
|
|
|
$(if $(filter $(ALL_VERSIONS),$(2)),,
|
|
|
|
$(error Invalid MAX_PLATFORM_VERSION '$(2)'))
|
|
|
|
$(if $(filter $(ALL_VERSIONS),$(3)),,
|
|
|
|
$(error Invalid DEFAULT_PLATFORM_VERSION '$(3)'))
|
|
|
|
|
|
|
|
$(eval allowed_versions_ := $(call find_and_earlier,$(ALL_VERSIONS),$(2)))
|
|
|
|
|
|
|
|
$(if $(filter $(allowed_versions_),$(1)),,
|
|
|
|
$(error MIN_PLATFORM_VERSION '$(1)' must be before MAX_PLATFORM_VERSION '$(2)'))
|
|
|
|
|
|
|
|
$(eval allowed_versions_ := $(1) \
|
|
|
|
$(filter-out $(call find_and_earlier,$(allowed_versions_),$(1)),$(allowed_versions_)))
|
|
|
|
|
|
|
|
$(if $(filter $(allowed_versions_),$(3)),,
|
|
|
|
$(error DEFAULT_PLATFORM_VERSION '$(3)' must be between MIN_PLATFORM_VERSION '$(1)' and MAX_PLATFORM_VERSION '$(2)'))
|
|
|
|
|
|
|
|
$(allowed_versions_))
|
|
|
|
endef
|
|
|
|
|
|
|
|
#$(warning $(call allowed-platform-versions,OPR1,PPR1,OPR1))
|
|
|
|
#$(warning $(call allowed-platform-versions,OPM1,PPR1,OPR1))
|
|
|
|
|
2009-05-13 12:45:23 +08:00
|
|
|
# Set up version information.
|
|
|
|
include $(BUILD_SYSTEM)/version_defaults.mk
|
|
|
|
|
2017-03-29 04:07:56 +08:00
|
|
|
ENABLED_VERSIONS := $(call find_and_earlier,$(ALL_VERSIONS),$(TARGET_PLATFORM_VERSION))
|
|
|
|
|
|
|
|
$(foreach v,$(ENABLED_VERSIONS), \
|
|
|
|
$(eval IS_AT_LEAST_$(v) := true))
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# If you update the build system such that the environment setup
|
|
|
|
# or buildspec.mk need to be updated, increment this number, and
|
|
|
|
# people who haven't re-run those will have to do so before they
|
|
|
|
# can build. Make sure to also update the corresponding value in
|
|
|
|
# buildspec.mk.default and envsetup.sh.
|
2017-03-22 08:41:03 +08:00
|
|
|
CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
2011-07-12 13:11:46 +08:00
|
|
|
# The product defaults to generic on hardware
|
2009-03-04 11:28:42 +08:00
|
|
|
# NOTE: This will be overridden in product_config.mk if make
|
|
|
|
# was invoked with a PRODUCT-xxx-yyy goal.
|
|
|
|
ifeq ($(TARGET_PRODUCT),)
|
2015-06-09 02:57:26 +08:00
|
|
|
TARGET_PRODUCT := aosp_arm
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
# the variant -- the set of files that are included for a build
|
|
|
|
ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
|
|
|
|
TARGET_BUILD_VARIANT := eng
|
|
|
|
endif
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# Set up configuration for host machine. We don't do cross-
|
2012-07-26 10:57:22 +08:00
|
|
|
# compiles except for arm/mips, so the HOST is whatever we are
|
2009-03-04 11:28:42 +08:00
|
|
|
# running on
|
|
|
|
|
|
|
|
# HOST_OS
|
|
|
|
ifneq (,$(findstring Linux,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := linux
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
ifneq (,$(findstring Darwin,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := darwin
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
ifneq (,$(findstring Macintosh,$(UNAME)))
|
2014-04-18 01:03:35 +08:00
|
|
|
HOST_OS := darwin
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2017-07-25 15:57:38 +08:00
|
|
|
HOST_OS_EXTRA := $(shell uname -rsm)
|
|
|
|
ifeq ($(HOST_OS),linux)
|
|
|
|
ifneq ($(wildcard /etc/os-release),)
|
|
|
|
HOST_OS_EXTRA += $(shell source /etc/os-release; echo $$PRETTY_NAME)
|
|
|
|
endif
|
|
|
|
else ifeq ($(HOST_OS),darwin)
|
|
|
|
HOST_OS_EXTRA += $(shell sw_vers -productVersion)
|
|
|
|
endif
|
|
|
|
HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA))
|
2016-03-04 12:57:21 +08:00
|
|
|
|
2010-04-17 08:50:09 +08:00
|
|
|
# BUILD_OS is the real host doing the build.
|
|
|
|
BUILD_OS := $(HOST_OS)
|
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OS :=
|
|
|
|
# We can cross-build Windows binaries on Linux
|
2010-04-17 08:50:09 +08:00
|
|
|
ifeq ($(HOST_OS),linux)
|
2017-11-07 03:03:28 +08:00
|
|
|
ifeq ($(BUILD_HOST_static),)
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OS := windows
|
|
|
|
HOST_CROSS_ARCH := x86
|
2016-02-06 08:20:19 +08:00
|
|
|
HOST_CROSS_2ND_ARCH := x86_64
|
2016-05-17 13:07:31 +08:00
|
|
|
2ND_HOST_CROSS_IS_64_BIT := true
|
2010-04-17 08:50:09 +08:00
|
|
|
endif
|
2017-11-07 03:03:28 +08:00
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
ifeq ($(HOST_OS),)
|
|
|
|
$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
|
|
|
|
endif
|
|
|
|
|
|
|
|
# HOST_ARCH
|
2014-04-18 01:03:35 +08:00
|
|
|
ifneq (,$(findstring x86_64,$(UNAME)))
|
2014-06-10 03:31:12 +08:00
|
|
|
HOST_ARCH := x86_64
|
|
|
|
HOST_2ND_ARCH := x86
|
2014-07-09 08:07:36 +08:00
|
|
|
HOST_IS_64_BIT := true
|
2015-03-21 02:39:00 +08:00
|
|
|
else
|
2016-06-30 03:26:53 +08:00
|
|
|
ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
|
2015-03-21 02:39:00 +08:00
|
|
|
$(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
|
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|
|
|
|
|
2018-08-28 16:51:25 +08:00
|
|
|
ifeq ($(HOST_OS),darwin)
|
|
|
|
# Mac no longer supports 32-bit executables
|
|
|
|
HOST_2ND_ARCH :=
|
|
|
|
endif
|
|
|
|
|
2019-03-01 01:15:57 +08:00
|
|
|
HOST_2ND_ARCH_VAR_PREFIX := 2ND_
|
|
|
|
HOST_2ND_ARCH_MODULE_SUFFIX := _32
|
|
|
|
HOST_CROSS_2ND_ARCH_VAR_PREFIX := 2ND_
|
|
|
|
HOST_CROSS_2ND_ARCH_MODULE_SUFFIX := _64
|
|
|
|
TARGET_2ND_ARCH_VAR_PREFIX := 2ND_
|
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_ARCH \
|
|
|
|
HOST_2ND_ARCH \
|
|
|
|
HOST_IS_64_BIT \
|
|
|
|
HOST_2ND_ARCH_VAR_PREFIX \
|
|
|
|
HOST_2ND_ARCH_MODULE_SUFFIX \
|
|
|
|
HOST_CROSS_2ND_ARCH_VAR_PREFIX \
|
|
|
|
HOST_CROSS_2ND_ARCH_MODULE_SUFFIX \
|
|
|
|
TARGET_2ND_ARCH_VAR_PREFIX \
|
|
|
|
|
|
|
|
combo_target := HOST_
|
|
|
|
combo_2nd_arch_prefix :=
|
|
|
|
include $(BUILD_COMBOS)/select.mk
|
|
|
|
|
|
|
|
ifdef HOST_2ND_ARCH
|
|
|
|
combo_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
|
|
|
|
include $(BUILD_SYSTEM)/combo/select.mk
|
|
|
|
endif
|
|
|
|
|
|
|
|
# Load the windows cross compiler under Linux
|
|
|
|
ifdef HOST_CROSS_OS
|
|
|
|
combo_target := HOST_CROSS_
|
|
|
|
combo_2nd_arch_prefix :=
|
|
|
|
include $(BUILD_SYSTEM)/combo/select.mk
|
|
|
|
|
|
|
|
ifdef HOST_CROSS_2ND_ARCH
|
|
|
|
combo_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
|
|
|
|
include $(BUILD_SYSTEM)/combo/select.mk
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
|
|
|
# on windows, the tools have .exe at the end, and we depend on the
|
|
|
|
# host config stuff being done first
|
|
|
|
|
2010-04-17 08:50:09 +08:00
|
|
|
BUILD_ARCH := $(HOST_ARCH)
|
2014-04-18 01:03:35 +08:00
|
|
|
BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
ifeq ($(HOST_ARCH),)
|
|
|
|
$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!)
|
|
|
|
endif
|
|
|
|
|
|
|
|
# the host build defaults to release, and it must be release or debug
|
|
|
|
ifeq ($(HOST_BUILD_TYPE),)
|
|
|
|
HOST_BUILD_TYPE := release
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(HOST_BUILD_TYPE),release)
|
|
|
|
ifneq ($(HOST_BUILD_TYPE),debug)
|
|
|
|
$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)')
|
|
|
|
endif
|
|
|
|
endif
|
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
|
|
|
|
HOST_PREBUILT_ARCH := x86
|
2009-03-04 11:28:42 +08:00
|
|
|
# This is the standard way to name a directory containing prebuilt host
|
|
|
|
# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
|
2015-05-05 03:44:44 +08:00
|
|
|
HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
|
|
|
|
# Define them here so they can be used in product config files.
|
|
|
|
TARGET_COPY_OUT_SYSTEM := system
|
2016-06-17 05:47:10 +08:00
|
|
|
TARGET_COPY_OUT_SYSTEM_OTHER := system_other
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_COPY_OUT_DATA := data
|
2017-03-30 06:32:04 +08:00
|
|
|
TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_COPY_OUT_OEM := oem
|
2018-08-10 05:26:00 +08:00
|
|
|
TARGET_COPY_OUT_RAMDISK := ramdisk
|
Adding boot-debug.img and ramdisk-debug.img
The two new debugging images adds additional files based on
boot.img and ramdisk.img/ramdisk-recovery.img, respectively.
File /force_debuggable is to trigger special logic in /init to load an
userdebug version of sepolicy and an additional property file from this
ramdisk to allow adb root, if the device is unlocked.
It's intentional to skip signing for boot-debug.img, as it can
only be used if the device is unlocked, where verification error
is allowed.
Those debugging images allows adb root on user build
system.img, vendor.img, product.img, etc. This can facilitate more
automated testings on user builds and is helpful to narrow down the
delta between what's being tested v.s. what's being shipped.
Bug: 126493225
Test: `make dist`, checks both boot-debug.img and ramdisk-debug.img
are in $OUT/ and out/dist.
Test: `make dist`, checks installed-files-ramdisk-debug.{json,txt} are
in out/dist.
Test: `system/core/mkbootimg/unpack_bootimg.py --boot_img $OUT/boot-debug.img`,
checks the extracted out/ramdisk is as expected
Test: Run `gunzip -c ramdisk | cpio -idm` for the ramdisk extracted from
$OUT/boot-debug.img and $OUT/boot.img, respectively.
Then compare the root dirs of both, e.g.,
`diff -rq --no-dereference ./ramdisk ./ramdisk-debug`
Test: `make ramdisk_debug-nodeps` and `make bootimage_debug-nodeps`
Change-Id: I30137c3caef91805d9143d404e5e4d06c0fccc30
2019-03-20 17:59:52 +08:00
|
|
|
TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_COPY_OUT_ROOT := root
|
|
|
|
TARGET_COPY_OUT_RECOVERY := recovery
|
2018-10-02 21:10:16 +08:00
|
|
|
# The directory used for optional partitions depend on the BoardConfig, so
|
|
|
|
# they're defined to placeholder values here and swapped after reading the
|
|
|
|
# BoardConfig, to be either the partition dir, or a subdir within 'system'.
|
2014-07-24 11:20:49 +08:00
|
|
|
_vendor_path_placeholder := ||VENDOR-PATH-PH||
|
2017-11-27 16:04:47 +08:00
|
|
|
_product_path_placeholder := ||PRODUCT-PATH-PH||
|
2018-08-18 05:01:25 +08:00
|
|
|
_product_services_path_placeholder := ||PRODUCT_SERVICES-PATH-PH||
|
2017-11-14 23:42:30 +08:00
|
|
|
_odm_path_placeholder := ||ODM-PATH-PH||
|
2018-10-02 21:10:16 +08:00
|
|
|
TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
|
|
|
|
TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
|
|
|
|
TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_services_path_placeholder)
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
|
2018-10-02 21:10:16 +08:00
|
|
|
|
|
|
|
# Returns the non-sanitized version of the path provided in $1.
|
|
|
|
define get_non_asan_path
|
|
|
|
$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
|
|
|
|
endef
|
2017-11-14 23:42:30 +08:00
|
|
|
|
2017-06-16 01:41:02 +08:00
|
|
|
#################################################################
|
|
|
|
# Set up minimal BOOTCLASSPATH list of jars to build/execute
|
|
|
|
# java code with dalvikvm/art.
|
2019-02-20 18:05:17 +08:00
|
|
|
# Jars present in the runtime apex. These should match exactly the list of
|
|
|
|
# Java libraries in the runtime apex build rule.
|
|
|
|
RUNTIME_APEX_JARS := core-oj core-libart okhttp bouncycastle apache-xml
|
|
|
|
TARGET_CORE_JARS := $(RUNTIME_APEX_JARS) conscrypt
|
2017-09-15 05:58:02 +08:00
|
|
|
ifeq ($(EMMA_INSTRUMENT),true)
|
|
|
|
ifneq ($(EMMA_INSTRUMENT_STATIC),true)
|
|
|
|
# For instrumented build, if Jacoco is not being included statically
|
|
|
|
# in instrumented packages then include Jacoco classes into the
|
|
|
|
# bootclasspath.
|
|
|
|
TARGET_CORE_JARS += jacocoagent
|
|
|
|
endif # EMMA_INSTRUMENT_STATIC
|
|
|
|
endif # EMMA_INSTRUMENT
|
2017-06-16 01:41:02 +08:00
|
|
|
HOST_CORE_JARS := $(addsuffix -hostdex,$(TARGET_CORE_JARS))
|
|
|
|
#################################################################
|
|
|
|
|
2014-07-24 11:20:49 +08:00
|
|
|
# Read the product specs so we can get TARGET_DEVICE and other
|
2011-06-17 07:58:11 +08:00
|
|
|
# variables that we need in order to locate the output files.
|
|
|
|
include $(BUILD_SYSTEM)/product_config.mk
|
2010-09-23 01:59:10 +08:00
|
|
|
|
2011-11-18 06:51:12 +08:00
|
|
|
build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
|
2011-06-17 07:58:11 +08:00
|
|
|
ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
|
|
|
|
$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
|
2011-11-18 06:51:12 +08:00
|
|
|
$(error must be empty or one of: eng user userdebug)
|
2011-06-17 07:58:11 +08:00
|
|
|
endif
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2014-09-03 06:11:20 +08:00
|
|
|
SDK_HOST_ARCH := x86
|
2019-03-01 01:15:57 +08:00
|
|
|
TARGET_OS := linux
|
2014-09-03 06:11:20 +08:00
|
|
|
|
2019-02-26 20:34:03 +08:00
|
|
|
include $(BUILD_SYSTEM)/board_config.mk
|
2018-01-15 13:48:40 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
# the target build type defaults to release
|
|
|
|
ifneq ($(TARGET_BUILD_TYPE),debug)
|
|
|
|
TARGET_BUILD_TYPE := release
|
|
|
|
endif
|
|
|
|
|
|
|
|
# ---------------------------------------------------------------
|
|
|
|
# figure out the output directories
|
|
|
|
|
2016-05-28 06:15:47 +08:00
|
|
|
SOONG_OUT_DIR := $(OUT_DIR)/soong
|
|
|
|
|
2017-09-09 05:29:51 +08:00
|
|
|
TARGET_OUT_ROOT := $(OUT_DIR)/target
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2017-09-09 05:29:51 +08:00
|
|
|
HOST_OUT_ROOT := $(OUT_DIR)/host
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := SOONG_OUT_DIR TARGET_OUT_ROOT HOST_OUT_ROOT
|
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# We want to avoid two host bin directories in multilib build.
|
2017-09-09 05:29:51 +08:00
|
|
|
HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
|
2016-05-28 06:15:47 +08:00
|
|
|
SOONG_HOST_OUT := $(SOONG_OUT_DIR)/host/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2017-09-09 05:29:51 +08:00
|
|
|
HOST_CROSS_OUT := $(HOST_OUT_ROOT)/windows-$(HOST_PREBUILT_ARCH)
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT
|
|
|
|
|
2011-07-12 13:11:46 +08:00
|
|
|
TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
|
|
|
|
HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
|
|
|
|
|
|
|
|
PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
|
|
|
|
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_PRODUCT_OUT_ROOT TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT PRODUCT_OUT
|
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
|
2017-10-05 01:20:20 +08:00
|
|
|
OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS
|
|
|
|
|
|
|
|
$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead)
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2018-03-29 05:33:10 +08:00
|
|
|
BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin
|
2016-05-28 06:15:47 +08:00
|
|
|
SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES
|
2010-04-17 08:50:09 +08:00
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
|
2014-07-01 08:06:21 +08:00
|
|
|
HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
|
2016-02-13 16:19:40 +08:00
|
|
|
HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES)
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
|
2009-04-10 10:31:12 +08:00
|
|
|
HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64
|
2016-09-13 04:56:50 +08:00
|
|
|
HOST_OUT_COVERAGE := $(HOST_OUT)/coverage
|
2018-03-17 13:09:50 +08:00
|
|
|
HOST_OUT_TESTCASES := $(HOST_OUT)/testcases
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_OUT_EXECUTABLES \
|
|
|
|
HOST_OUT_SHARED_LIBRARIES \
|
|
|
|
HOST_OUT_RENDERSCRIPT_BITCODE \
|
|
|
|
HOST_OUT_JAVA_LIBRARIES \
|
|
|
|
HOST_OUT_SDK_ADDON \
|
|
|
|
HOST_OUT_NATIVE_TESTS \
|
|
|
|
HOST_OUT_COVERAGE \
|
|
|
|
HOST_OUT_TESTCASES
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
|
|
|
|
HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest
|
2016-09-13 04:56:50 +08:00
|
|
|
HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage
|
2018-03-17 13:09:50 +08:00
|
|
|
HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_CROSS_OUT_EXECUTABLES \
|
|
|
|
HOST_CROSS_OUT_SHARED_LIBRARIES \
|
|
|
|
HOST_CROSS_OUT_NATIVE_TESTS \
|
|
|
|
HOST_CROSS_OUT_COVERAGE \
|
|
|
|
HOST_CROSS_OUT_TESTCASES
|
2015-08-15 03:59:50 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
|
2014-01-14 08:14:20 +08:00
|
|
|
HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
|
2009-03-04 11:28:42 +08:00
|
|
|
HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
|
2013-11-14 07:56:18 +08:00
|
|
|
HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_OUT_INTERMEDIATES \
|
|
|
|
HOST_OUT_NOTICE_FILES \
|
|
|
|
HOST_OUT_COMMON_INTERMEDIATES \
|
|
|
|
HOST_OUT_FAKE
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2016-08-02 08:41:49 +08:00
|
|
|
# Nano environment config
|
|
|
|
include $(BUILD_SYSTEM)/aux_config.mk
|
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
|
|
|
|
HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_CROSS_OUT_INTERMEDIATES \
|
|
|
|
HOST_CROSS_OUT_NOTICE_FILES
|
2015-08-15 03:59:50 +08:00
|
|
|
|
2014-01-25 15:17:21 +08:00
|
|
|
HOST_OUT_GEN := $(HOST_OUT)/gen
|
|
|
|
HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
HOST_OUT_GEN \
|
|
|
|
HOST_OUT_COMMON_GEN
|
2014-01-25 15:17:21 +08:00
|
|
|
|
2015-08-15 03:59:50 +08:00
|
|
|
HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := HOST_CROSS_OUT_GEN
|
2015-08-15 03:59:50 +08:00
|
|
|
|
2017-11-14 05:38:17 +08:00
|
|
|
HOST_OUT_TEST_CONFIG := $(HOST_OUT)/test_config
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := HOST_OUT_TEST_CONFIG
|
2017-11-14 05:38:17 +08:00
|
|
|
|
2014-04-18 01:03:35 +08:00
|
|
|
# Out for HOST_2ND_ARCH
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
|
2014-05-21 05:43:51 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
|
2014-04-18 01:03:35 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
|
2015-05-05 09:17:52 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest
|
2017-01-26 07:11:55 +08:00
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \
|
|
|
|
$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES
|
2014-04-18 01:03:35 +08:00
|
|
|
|
2014-06-11 03:04:56 +08:00
|
|
|
# The default host library path.
|
|
|
|
# It always points to the path where we build libraries in the default bitness.
|
2014-08-15 02:03:56 +08:00
|
|
|
HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := HOST_LIBRARY_PATH
|
2014-04-18 01:03:35 +08:00
|
|
|
|
2016-02-06 08:20:19 +08:00
|
|
|
# Out for HOST_CROSS_2ND_ARCH
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-03 05:54:51 +08:00
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \
|
|
|
|
$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS
|
2016-02-06 08:20:19 +08:00
|
|
|
|
2017-05-10 10:36:54 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
|
|
|
TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
|
|
|
|
else
|
|
|
|
TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
|
|
|
|
endif
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
|
2018-09-06 02:01:12 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS
|
2017-05-10 10:36:54 +08:00
|
|
|
|
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
|
|
|
TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
|
|
|
|
else
|
|
|
|
TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
|
|
|
|
endif
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2014-01-25 15:17:21 +08:00
|
|
|
TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
|
|
|
|
TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN
|
2014-01-25 15:17:21 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT
|
2015-09-19 02:54:43 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2017-03-30 06:32:04 +08:00
|
|
|
target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
|
2017-06-17 01:24:54 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
|
|
|
target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
|
|
|
|
else
|
|
|
|
target_out_app_base := $(TARGET_OUT)
|
|
|
|
endif
|
2015-06-12 08:32:31 +08:00
|
|
|
else
|
|
|
|
target_out_shared_libraries_base := $(TARGET_OUT)
|
2017-06-17 01:24:54 +08:00
|
|
|
target_out_app_base := $(TARGET_OUT)
|
2015-06-12 08:32:31 +08:00
|
|
|
endif
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
|
|
|
|
TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2014-01-14 08:14:20 +08:00
|
|
|
# /system/lib always contains 32-bit libraries,
|
|
|
|
# and /system/lib64 (if present) always contains 64-bit libraries.
|
2015-06-12 08:32:31 +08:00
|
|
|
TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
|
2014-01-14 08:14:20 +08:00
|
|
|
else
|
2015-06-12 08:32:31 +08:00
|
|
|
TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
|
2014-01-14 08:14:20 +08:00
|
|
|
endif
|
2016-02-13 16:19:40 +08:00
|
|
|
TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES)
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
|
2017-06-17 01:24:54 +08:00
|
|
|
TARGET_OUT_APPS := $(target_out_app_base)/app
|
|
|
|
TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
|
|
|
|
TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
|
|
|
|
TARGET_OUT_ETC := $(TARGET_OUT)/etc
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
|
2010-09-28 08:37:17 +08:00
|
|
|
TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
|
2017-01-26 07:11:55 +08:00
|
|
|
TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases
|
2017-11-14 05:38:17 +08:00
|
|
|
TARGET_OUT_TEST_CONFIG := $(PRODUCT_OUT)/test_config
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_EXECUTABLES \
|
|
|
|
TARGET_OUT_OPTIONAL_EXECUTABLES \
|
|
|
|
TARGET_OUT_SHARED_LIBRARIES \
|
|
|
|
TARGET_OUT_RENDERSCRIPT_BITCODE \
|
|
|
|
TARGET_OUT_JAVA_LIBRARIES \
|
|
|
|
TARGET_OUT_APPS \
|
|
|
|
TARGET_OUT_APPS_PRIVILEGED \
|
|
|
|
TARGET_OUT_KEYLAYOUT \
|
|
|
|
TARGET_OUT_KEYCHARS \
|
|
|
|
TARGET_OUT_ETC \
|
|
|
|
TARGET_OUT_NOTICE_FILES \
|
|
|
|
TARGET_OUT_FAKE \
|
|
|
|
TARGET_OUT_TESTCASES \
|
|
|
|
TARGET_OUT_TEST_CONFIG
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2017-06-17 01:24:54 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
|
|
|
TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
|
|
|
|
else
|
2016-06-17 05:47:10 +08:00
|
|
|
TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
|
2017-06-17 01:24:54 +08:00
|
|
|
endif
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER
|
2016-06-17 05:47:10 +08:00
|
|
|
|
2013-12-28 03:09:36 +08:00
|
|
|
# Out for TARGET_2ND_ARCH
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
|
|
|
# With this you can reference the arm binary translation library with libfoo_arm in PRODUCT_PACKAGES.
|
|
|
|
TARGET_2ND_ARCH_MODULE_SUFFIX := _$(TARGET_2ND_ARCH)
|
|
|
|
else
|
2014-06-11 03:04:56 +08:00
|
|
|
TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2019-03-01 01:15:57 +08:00
|
|
|
.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX
|
2017-05-10 10:36:54 +08:00
|
|
|
|
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
|
|
|
|
else
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
|
|
|
|
endif
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
|
|
|
else
|
2015-06-12 08:32:31 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2016-02-13 16:19:40 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
|
2014-01-18 08:17:28 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
|
2017-01-26 07:11:55 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
|
2013-12-28 03:09:36 +08:00
|
|
|
|
2019-03-14 09:04:05 +08:00
|
|
|
MODULE_CLASS_APPS := app
|
|
|
|
MODULE_CLASS_EXECUTABLES := bin
|
|
|
|
MODULE_CLASS_JAVA_LIBRARIES := framework
|
|
|
|
MODULE_CLASS_NATIVE_TESTS := nativetest
|
|
|
|
MODULE_CLASS_METRIC_TESTS := benchmarktest
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
|
|
|
|
TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
|
|
|
|
TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework
|
|
|
|
TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
|
|
|
|
TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
|
|
|
|
TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
|
|
|
TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
|
2016-04-12 17:22:06 +08:00
|
|
|
TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64
|
2017-07-12 05:59:30 +08:00
|
|
|
TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX)
|
|
|
|
TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX)
|
2014-07-09 08:07:36 +08:00
|
|
|
else
|
2010-07-21 02:08:47 +08:00
|
|
|
TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
|
2016-04-12 17:22:06 +08:00
|
|
|
TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
|
2017-07-12 05:59:30 +08:00
|
|
|
TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
|
|
|
|
TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
|
2014-07-09 08:07:36 +08:00
|
|
|
endif
|
2019-03-14 09:04:05 +08:00
|
|
|
MODULE_CLASS_FAKE := fake_packages
|
2012-07-14 04:47:09 +08:00
|
|
|
TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_DATA \
|
|
|
|
TARGET_OUT_DATA_EXECUTABLES \
|
|
|
|
TARGET_OUT_DATA_SHARED_LIBRARIES \
|
|
|
|
TARGET_OUT_DATA_JAVA_LIBRARIES \
|
|
|
|
TARGET_OUT_DATA_APPS \
|
|
|
|
TARGET_OUT_DATA_KEYLAYOUT \
|
|
|
|
TARGET_OUT_DATA_KEYCHARS \
|
|
|
|
TARGET_OUT_DATA_ETC \
|
|
|
|
TARGET_OUT_DATA_NATIVE_TESTS \
|
|
|
|
TARGET_OUT_DATA_METRIC_TESTS \
|
|
|
|
TARGET_OUT_VENDOR_NATIVE_TESTS \
|
|
|
|
TARGET_OUT_VENDOR_METRIC_TESTS \
|
2019-03-14 09:04:05 +08:00
|
|
|
TARGET_OUT_DATA_FAKE \
|
|
|
|
MODULE_CLASS_APPS \
|
|
|
|
MODULE_CLASS_EXECUTABLES \
|
|
|
|
MODULE_CLASS_JAVA_LIBRARIES \
|
|
|
|
MODULE_CLASS_NATIVE_TESTS \
|
|
|
|
MODULE_CLASS_METRIC_TESTS \
|
|
|
|
MODULE_CLASS_FAKE
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2014-01-24 07:09:04 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH)
|
2016-04-13 04:06:20 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest/$(TARGET_2ND_ARCH)
|
2017-07-12 05:59:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH)$(TARGET_VENDOR_TEST_SUFFIX)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest/$(TARGET_2ND_ARCH)$(TARGET_VENDOR_TEST_SUFFIX)
|
2016-03-17 10:53:19 +08:00
|
|
|
else
|
2014-07-09 08:07:36 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
|
2016-04-12 17:22:06 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
|
2017-07-12 05:59:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \
|
2014-01-24 07:09:04 +08:00
|
|
|
|
2011-11-05 02:37:01 +08:00
|
|
|
TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_CACHE
|
2011-11-05 02:37:01 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_VENDOR
|
2015-09-19 02:54:43 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
|
2017-06-17 01:24:54 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
|
2017-06-17 01:24:54 +08:00
|
|
|
else
|
|
|
|
target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
|
|
|
|
endif
|
2015-07-01 05:02:02 +08:00
|
|
|
else
|
|
|
|
target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
|
2017-06-17 01:24:54 +08:00
|
|
|
target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
|
2015-07-01 05:02:02 +08:00
|
|
|
endif
|
|
|
|
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
|
|
|
|
TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
|
2014-07-09 08:07:36 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2015-07-01 05:02:02 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
|
2014-01-14 08:14:20 +08:00
|
|
|
else
|
2015-07-01 05:02:02 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
|
2014-01-14 08:14:20 +08:00
|
|
|
endif
|
2017-03-02 11:39:19 +08:00
|
|
|
TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
|
2014-01-14 08:14:20 +08:00
|
|
|
TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
|
2017-06-17 01:24:54 +08:00
|
|
|
TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app
|
|
|
|
TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app
|
2011-09-14 04:57:26 +08:00
|
|
|
TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_VENDOR_EXECUTABLES \
|
|
|
|
TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \
|
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES \
|
|
|
|
TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
|
|
|
|
TARGET_OUT_VENDOR_JAVA_LIBRARIES \
|
|
|
|
TARGET_OUT_VENDOR_APPS \
|
|
|
|
TARGET_OUT_VENDOR_APPS_PRIVILEGED \
|
|
|
|
TARGET_OUT_VENDOR_ETC
|
2011-09-14 04:57:26 +08:00
|
|
|
|
2014-01-24 07:09:04 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
2016-07-01 11:20:38 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
2016-03-17 10:53:19 +08:00
|
|
|
else
|
2016-07-01 11:20:38 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2017-03-02 11:39:19 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES)
|
2014-01-25 05:37:07 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
|
2016-07-20 17:51:56 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED
|
2014-01-16 08:02:16 +08:00
|
|
|
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
|
|
|
|
else
|
|
|
|
TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
|
|
|
|
endif
|
2014-03-12 08:13:27 +08:00
|
|
|
# We don't expect Java libraries in the oem.img.
|
|
|
|
# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
|
2014-06-27 05:12:35 +08:00
|
|
|
TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
|
2014-03-12 08:13:27 +08:00
|
|
|
TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_OEM \
|
|
|
|
TARGET_OUT_OEM_EXECUTABLES \
|
|
|
|
TARGET_OUT_OEM_SHARED_LIBRARIES \
|
|
|
|
TARGET_OUT_OEM_APPS \
|
|
|
|
TARGET_OUT_OEM_ETC
|
2014-03-12 08:13:27 +08:00
|
|
|
|
2014-06-27 05:12:35 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib/$(TARGET_2ND_ARCH)
|
|
|
|
else
|
2014-06-27 05:12:35 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2014-06-27 05:12:35 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
|
2014-06-27 05:12:35 +08:00
|
|
|
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
|
2017-11-14 23:42:30 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
|
2017-11-14 23:42:30 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
|
2017-11-14 23:42:30 +08:00
|
|
|
else
|
|
|
|
target_out_odm_app_base := $(TARGET_OUT_ODM)
|
|
|
|
endif
|
|
|
|
else
|
|
|
|
target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
|
|
|
|
target_out_odm_app_base := $(TARGET_OUT_ODM)
|
|
|
|
endif
|
|
|
|
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
else
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
endif
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
|
|
|
|
TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
|
|
|
|
TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
|
|
|
|
TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_ODM \
|
|
|
|
TARGET_OUT_ODM_EXECUTABLES \
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
|
2018-03-29 05:33:10 +08:00
|
|
|
TARGET_OUT_ODM_SHARED_LIBRARIES \
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
|
|
|
|
TARGET_OUT_ODM_JAVA_LIBRARIES \
|
2018-03-29 05:33:10 +08:00
|
|
|
TARGET_OUT_ODM_APPS \
|
2017-11-14 23:42:30 +08:00
|
|
|
TARGET_OUT_ODM_APPS_PRIVILEGED \
|
2018-03-29 05:33:10 +08:00
|
|
|
TARGET_OUT_ODM_ETC
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
|
2016-03-17 10:53:19 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
2017-11-14 23:42:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
2016-03-17 10:53:19 +08:00
|
|
|
else
|
2017-11-14 23:42:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
|
2016-03-17 10:53:19 +08:00
|
|
|
endif
|
2017-11-14 23:42:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES)
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
|
2017-11-14 23:42:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
|
2017-11-14 23:42:30 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
|
Support to configure and build multiple custom images.
Build additional images requested by the product makefile.
This script gives the ability to build multiple additional images and
you can configure what modules/files to include in each image.
1. Define PRODUCT_CUSTOM_IMAGE_MAKEFILES in your product makefile.
PRODUCT_CUSTOM_IMAGE_MAKEFILES is a list of makefiles.
Each makefile configures an image.
For image configuration makefile foo/bar/xyz.mk, the built image
file name
will be xyz.img. So make sure they won't conflict.
2. In each image's configuration makefile, you can define variables:
- CUSTOM_IMAGE_MOUNT_POINT, the mount point, such as "oem", "odm"
etc.
- CUSTOM_IMAGE_PARTITION_SIZE
- CUSTOM_IMAGE_FILE_SYSTEM_TYPE
- CUSTOM_IMAGE_DICT_FILE, a text file defining a dictionary
accepted by BuildImage() in tools/releasetools/build_image.py.
- CUSTOM_IMAGE_MODULES, a list of module names you want to include
in the image; Not only the module itself will be installed to proper
path in the image, you can also piggyback additional files/directories
with the module's LOCAL_PICKUP_FILES.
- CUSTOM_IMAGE_COPY_FILES, a list of "<src>:<dest>" to be copied to
the image. <dest> is relativ to the root of the image.
To build all those images, run "make custom_images".
Bug: 19609718
Change-Id: Ic73587e08503a251be27797c7b00329716051927
(cherry picked from commit 5fcf1094f9cf4d57c2598237f99621f254130d71)
2015-03-13 09:30:39 +08:00
|
|
|
|
2017-11-27 16:04:47 +08:00
|
|
|
TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
|
2018-06-25 09:56:01 +08:00
|
|
|
TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_PRODUCT
|
2017-11-27 16:04:47 +08:00
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
|
2017-11-27 16:04:47 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
|
2017-11-27 16:04:47 +08:00
|
|
|
else
|
|
|
|
target_out_product_app_base := $(TARGET_OUT_PRODUCT)
|
|
|
|
endif
|
|
|
|
else
|
2018-05-04 10:20:43 +08:00
|
|
|
target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT)
|
2017-11-27 16:04:47 +08:00
|
|
|
target_out_product_app_base := $(TARGET_OUT_PRODUCT)
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
|
|
|
TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64
|
|
|
|
else
|
|
|
|
TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
|
|
|
|
endif
|
2018-03-29 05:33:10 +08:00
|
|
|
TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework
|
2017-11-27 16:04:47 +08:00
|
|
|
TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app
|
|
|
|
TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app
|
|
|
|
TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
2018-06-25 09:56:01 +08:00
|
|
|
TARGET_OUT_PRODUCT_EXECUTABLES \
|
2018-03-29 05:33:10 +08:00
|
|
|
TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
|
|
|
|
TARGET_OUT_PRODUCT_JAVA_LIBRARIES \
|
|
|
|
TARGET_OUT_PRODUCT_APPS \
|
|
|
|
TARGET_OUT_PRODUCT_APPS_PRIVILEGED \
|
|
|
|
TARGET_OUT_PRODUCT_ETC
|
2017-11-27 16:04:47 +08:00
|
|
|
|
2018-06-25 09:56:01 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES)
|
2017-11-27 16:04:47 +08:00
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
|
|
|
else
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
|
|
|
|
endif
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED)
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
2018-06-25 09:56:01 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \
|
2018-03-29 05:33:10 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
|
2017-11-27 16:04:47 +08:00
|
|
|
|
2018-05-29 20:09:01 +08:00
|
|
|
TARGET_OUT_PRODUCT_SERVICES := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT_SERVICES)
|
|
|
|
ifneq ($(filter address,$(SANITIZE_TARGET)),)
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_product_services_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES)
|
2018-05-29 20:09:01 +08:00
|
|
|
ifeq ($(SANITIZE_LITE),true)
|
|
|
|
# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
|
|
|
|
# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
|
2018-10-02 20:16:05 +08:00
|
|
|
target_out_product_services_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES)
|
2018-05-29 20:09:01 +08:00
|
|
|
else
|
2018-07-27 07:02:52 +08:00
|
|
|
target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES)
|
2018-05-29 20:09:01 +08:00
|
|
|
endif
|
|
|
|
else
|
2018-07-27 07:02:52 +08:00
|
|
|
target_out_product_services_shared_libraries_base := $(TARGET_OUT_PRODUCT_SERVICES)
|
|
|
|
target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES)
|
2018-05-29 20:09:01 +08:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(TARGET_IS_64_BIT),true)
|
2018-07-27 07:02:52 +08:00
|
|
|
TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib64
|
2018-05-29 20:09:01 +08:00
|
|
|
else
|
2018-07-27 07:02:52 +08:00
|
|
|
TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib
|
2018-05-29 20:09:01 +08:00
|
|
|
endif
|
|
|
|
TARGET_OUT_PRODUCT_SERVICES_JAVA_LIBRARIES:= $(TARGET_OUT_PRODUCT_SERVICES)/framework
|
2018-07-27 07:02:52 +08:00
|
|
|
TARGET_OUT_PRODUCT_SERVICES_APPS := $(target_out_product_services_app_base)/app
|
|
|
|
TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(target_out_product_services_app_base)/priv-app
|
2018-05-29 20:09:01 +08:00
|
|
|
TARGET_OUT_PRODUCT_SERVICES_ETC := $(TARGET_OUT_PRODUCT_SERVICES)/etc
|
|
|
|
|
|
|
|
ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
|
2018-07-27 07:02:52 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib/$(TARGET_2ND_ARCH)
|
2018-05-29 20:09:01 +08:00
|
|
|
else
|
2018-07-27 07:02:52 +08:00
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib
|
2018-05-29 20:09:01 +08:00
|
|
|
endif
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS := $(TARGET_OUT_PRODUCT_SERVICES_APPS)
|
|
|
|
$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED)
|
|
|
|
|
2015-09-25 09:12:33 +08:00
|
|
|
TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := TARGET_OUT_BREAKPAD
|
2015-09-25 09:12:33 +08:00
|
|
|
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
|
|
|
|
TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
|
|
|
|
TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
|
2014-06-21 04:33:36 +08:00
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
|
|
|
|
TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
|
2016-09-16 08:32:13 +08:00
|
|
|
TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_OUT_UNSTRIPPED \
|
|
|
|
TARGET_OUT_EXECUTABLES_UNSTRIPPED \
|
|
|
|
TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \
|
|
|
|
TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \
|
|
|
|
TARGET_ROOT_OUT_UNSTRIPPED \
|
|
|
|
TARGET_ROOT_OUT_BIN_UNSTRIPPED \
|
|
|
|
TARGET_OUT_COVERAGE
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2018-08-10 05:26:00 +08:00
|
|
|
TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
|
|
|
|
TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
|
Adding boot-debug.img and ramdisk-debug.img
The two new debugging images adds additional files based on
boot.img and ramdisk.img/ramdisk-recovery.img, respectively.
File /force_debuggable is to trigger special logic in /init to load an
userdebug version of sepolicy and an additional property file from this
ramdisk to allow adb root, if the device is unlocked.
It's intentional to skip signing for boot-debug.img, as it can
only be used if the device is unlocked, where verification error
is allowed.
Those debugging images allows adb root on user build
system.img, vendor.img, product.img, etc. This can facilitate more
automated testings on user builds and is helpful to narrow down the
delta between what's being tested v.s. what's being shipped.
Bug: 126493225
Test: `make dist`, checks both boot-debug.img and ramdisk-debug.img
are in $OUT/ and out/dist.
Test: `make dist`, checks installed-files-ramdisk-debug.{json,txt} are
in out/dist.
Test: `system/core/mkbootimg/unpack_bootimg.py --boot_img $OUT/boot-debug.img`,
checks the extracted out/ramdisk is as expected
Test: Run `gunzip -c ramdisk | cpio -idm` for the ramdisk extracted from
$OUT/boot-debug.img and $OUT/boot.img, respectively.
Then compare the root dirs of both, e.g.,
`diff -rq --no-dereference ./ramdisk ./ramdisk-debug`
Test: `make ramdisk_debug-nodeps` and `make bootimage_debug-nodeps`
Change-Id: I30137c3caef91805d9143d404e5e4d06c0fccc30
2019-03-20 17:59:52 +08:00
|
|
|
TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
|
2018-08-10 05:26:00 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
|
|
|
|
TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
|
|
|
|
TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_ROOT_OUT \
|
|
|
|
TARGET_ROOT_OUT_BIN \
|
|
|
|
TARGET_ROOT_OUT_ETC \
|
|
|
|
TARGET_ROOT_OUT_USR
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2011-10-28 06:18:39 +08:00
|
|
|
TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
|
2009-03-04 11:28:42 +08:00
|
|
|
TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_RECOVERY_OUT \
|
|
|
|
TARGET_RECOVERY_ROOT_OUT
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
|
|
|
|
TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
|
|
|
|
TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_SYSLOADER_OUT \
|
|
|
|
TARGET_SYSLOADER_ROOT_OUT \
|
|
|
|
TARGET_SYSLOADER_SYSTEM_OUT
|
2009-03-04 11:28:42 +08:00
|
|
|
|
|
|
|
TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
|
|
|
|
TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
|
|
|
|
TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
|
|
|
|
TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := \
|
|
|
|
TARGET_INSTALLER_OUT \
|
|
|
|
TARGET_INSTALLER_DATA_OUT \
|
|
|
|
TARGET_INSTALLER_ROOT_OUT \
|
|
|
|
TARGET_INSTALLER_SYSTEM_OUT
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2010-09-25 09:09:04 +08:00
|
|
|
COMMON_MODULE_CLASSES := TARGET-NOTICE_FILES HOST-NOTICE_FILES HOST-JAVA_LIBRARIES
|
2017-02-16 07:48:11 +08:00
|
|
|
PER_ARCH_MODULE_CLASSES := SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP RENDERSCRIPT_BITCODE NATIVE_TESTS HEADER_LIBRARIES
|
2018-03-29 05:33:10 +08:00
|
|
|
.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES
|
2009-03-04 11:28:42 +08:00
|
|
|
|
2017-10-12 16:35:14 +08:00
|
|
|
ifeq ($(CALLED_FROM_SETUP),true)
|
2017-02-19 02:32:13 +08:00
|
|
|
PRINT_BUILD_CONFIG ?= true
|
2009-03-04 11:28:42 +08:00
|
|
|
endif
|