blob: 7f9cbad0d86a484cb03dcaa7ba718efb3121fe9c [file] [log] [blame]
The Android Open Source Project88b60792009-03-03 19:28:42 -08001# Variables we check:
2# HOST_BUILD_TYPE = { release debug }
The Android Open Source Project88b60792009-03-03 19:28:42 -08003# TARGET_BUILD_TYPE = { release debug }
4# and we output a bunch of variables, see the case statement at
5# the bottom for the full list
6# OUT_DIR is also set to "out" if it's not already set.
7# this allows you to set it to somewhere else if you like
C. Sean Youngcf469982015-06-09 12:35:45 -05008# SCAN_EXCLUDE_DIRS is an optional, whitespace separated list of
9# directories that will also be excluded from full checkout tree
10# searches for source or make files, in addition to OUT_DIR.
11# This can be useful if you set OUT_DIR to be a different directory
12# than other outputs of your build system.
The Android Open Source Project88b60792009-03-03 19:28:42 -080013
Colin Crossc9016592017-03-28 13:07:56 -070014# Returns all words in $1 up to and including $2
15define find_and_earlier
16 $(strip $(if $(1),
17 $(firstword $(1))
18 $(if $(filter $(firstword $(1)),$(2)),,
19 $(call find_and_earlier,$(wordlist 2,$(words $(1)),$(1)),$(2)))))
20endef
21
22#$(warning $(call find_and_earlier,A B C,A))
23#$(warning $(call find_and_earlier,A B C,B))
24#$(warning $(call find_and_earlier,A B C,C))
25#$(warning $(call find_and_earlier,A B C,D))
26
Cole Faust386b3742023-06-06 16:55:58 -070027# Runs a starlark file, and sets all the variables in its top-level
Cole Faustc63ce1a2023-05-09 14:56:36 -070028# variables_to_export_to_make variable as make variables.
29#
30# In order to avoid running starlark every time the stamp file is checked, we use
31# $(KATI_shell_no_rerun). Then, to make sure that we actually do rerun kati when
32# modifying the starlark files, we add the starlark files to the kati stamp file with
Joe Onorato7b578d32023-05-19 09:13:36 -070033# $(KATI_extra_file_deps).
Cole Faust386b3742023-06-06 16:55:58 -070034#
35# Arguments:
36# $(1): A single starlark file to use as the entrypoint
37# $(2): An optional list of starlark files to NOT include as kati dependencies.
38# $(3): An optional list of extra flags to pass to rbcrun
Cole Faustc63ce1a2023-05-09 14:56:36 -070039define run-starlark
40$(eval _starlark_results := $(OUT_DIR)/starlark_results/$(subst /,_,$(1)).mk)
Cole Faust386b3742023-06-06 16:55:58 -070041$(KATI_shell_no_rerun mkdir -p $(OUT_DIR)/starlark_results && $(OUT_DIR)/rbcrun --mode=make $(3) $(1) >$(_starlark_results) && touch -t 200001010000 $(_starlark_results))
Cole Faustc63ce1a2023-05-09 14:56:36 -070042$(if $(filter-out 0,$(.SHELLSTATUS)),$(error Starlark failed to run))
43$(eval include $(_starlark_results))
Cole Faust386b3742023-06-06 16:55:58 -070044$(KATI_extra_file_deps $(filter-out $(2),$(LOADED_STARLARK_FILES)))
Cole Faustc63ce1a2023-05-09 14:56:36 -070045$(eval LOADED_STARLARK_FILES :=)
46$(eval _starlark_results :=)
Colin Crossc9016592017-03-28 13:07:56 -070047endef
48
Joe Onorato964f4012023-05-06 12:29:01 -070049# ---------------------------------------------------------------
50# Release config
51include $(BUILD_SYSTEM)/release_config.mk
52
Kiyoung Kim1e14cdf2024-02-05 11:25:25 +090053# Set default value of KEEP_VNDK.
54ifeq ($(RELEASE_DEPRECATE_VNDK),true)
55 KEEP_VNDK ?= false
56else
57 KEEP_VNDK ?= true
58endif
59
Kiyoung Kim09aaa262024-02-13 13:38:16 +090060ifeq ($(KEEP_VNDK),true)
61 # Starting in Android U, non-VNDK devices not supported
62 # WARNING: DO NOT CHANGE: if you are downstream of AOSP, and you change this, without
63 # letting upstream know it's important to you, we may do cleanup which breaks this
64 # significantly. Please let us know if you are changing this.
65 ifndef BOARD_VNDK_VERSION
66 # READ WARNING - DO NOT CHANGE
67 BOARD_VNDK_VERSION := current
68 # READ WARNING - DO NOT CHANGE
69 endif
70endif
71
Joe Onorato964f4012023-05-06 12:29:01 -070072# ---------------------------------------------------------------
Jeff Hamilton426a9f82023-10-19 04:54:15 +000073# Set up version information
74include $(BUILD_SYSTEM)/version_util.mk
Colin Crossc9016592017-03-28 13:07:56 -070075
Jeff Hamilton426a9f82023-10-19 04:54:15 +000076# This used to be calculated, but is now fixed and not expected
77# to change over time anymore. New code attempting to use a
78# variable like IS_AT_LAST_* should instead use a
79# build system flag.
Colin Crossc9016592017-03-28 13:07:56 -070080
Jeff Hamilton426a9f82023-10-19 04:54:15 +000081ENABLED_VERSIONS := "OPR1 OPD1 OPD2 OPM1 OPM2 PPR1 PPD1 PPD2 PPM1 PPM2 QPR1 QP1A QP1B QP2A QP2B QD1A QD1B QD2A QD2B QQ1A QQ1B QQ2A QQ2B QQ3A QQ3B RP1A RP1B RP2A RP2B RD1A RD1B RD2A RD2B RQ1A RQ1B RQ2A RQ2B RQ3A RQ3B SP1A SP1B SP2A SP2B SD1A SD1B SD2A SD2B SQ1A SQ1B SQ2A SQ2B SQ3A SQ3B TP1A TP1B TP2A TP2B TD1A TD1B TD2A TD2B TQ1A TQ1B TQ2A TQ2B TQ3A TQ3B UP1A UP1B UP2A UP2B UD1A UD1B UD2A UD2B UQ1A UQ1B UQ2A UQ2B UQ3A UQ3B"
Colin Crossc9016592017-03-28 13:07:56 -070082
83$(foreach v,$(ENABLED_VERSIONS), \
84 $(eval IS_AT_LEAST_$(v) := true))
85
The Android Open Source Project88b60792009-03-03 19:28:42 -080086# ---------------------------------------------------------------
87# If you update the build system such that the environment setup
88# or buildspec.mk need to be updated, increment this number, and
89# people who haven't re-run those will have to do so before they
90# can build. Make sure to also update the corresponding value in
91# buildspec.mk.default and envsetup.sh.
Colin Cross88737132017-03-21 17:41:03 -070092CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13
The Android Open Source Project88b60792009-03-03 19:28:42 -080093
94# ---------------------------------------------------------------
Jeff Browne33ba4c2011-07-11 22:11:46 -070095# The product defaults to generic on hardware
The Android Open Source Project88b60792009-03-03 19:28:42 -080096ifeq ($(TARGET_PRODUCT),)
Ying Wang0a76df52015-06-08 11:57:26 -070097TARGET_PRODUCT := aosp_arm
The Android Open Source Project88b60792009-03-03 19:28:42 -080098endif
The Android Open Source Project88b60792009-03-03 19:28:42 -080099
100
101# the variant -- the set of files that are included for a build
102ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
103TARGET_BUILD_VARIANT := eng
104endif
105
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700106TARGET_BUILD_APPS ?=
Jeongik Chad05b57a2020-07-08 18:10:38 +0900107TARGET_BUILD_UNBUNDLED_IMAGE ?=
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700108
Martin Stjernholm7a430fd2020-06-04 15:16:39 +0100109# Set to true for an unbundled build, i.e. a build without
110# support for platform targets like the system image. This also
111# disables consistency checks that only apply to full platform
112# builds.
113TARGET_BUILD_UNBUNDLED ?=
114
115# TARGET_BUILD_APPS implies unbundled build, otherwise we default
116# to bundled (i.e. platform targets such as the system image are
117# included).
118ifneq ($(TARGET_BUILD_APPS),)
119 TARGET_BUILD_UNBUNDLED := true
120endif
121
Jeongik Chad05b57a2020-07-08 18:10:38 +0900122# TARGET_BUILD_UNBUNDLED_IMAGE also implies unbundled build.
123# (i.e. it targets to only unbundled image, such as the vendor image,
124# ,or the product image).
125ifneq ($(TARGET_BUILD_UNBUNDLED_IMAGE),)
126 TARGET_BUILD_UNBUNDLED := true
127endif
128
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700129.KATI_READONLY := \
130 TARGET_PRODUCT \
131 TARGET_BUILD_VARIANT \
Martin Stjernholm7a430fd2020-06-04 15:16:39 +0100132 TARGET_BUILD_APPS \
133 TARGET_BUILD_UNBUNDLED \
Jeongik Chad05b57a2020-07-08 18:10:38 +0900134 TARGET_BUILD_UNBUNDLED_IMAGE \
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700135
The Android Open Source Project88b60792009-03-03 19:28:42 -0800136# ---------------------------------------------------------------
137# Set up configuration for host machine. We don't do cross-
Elliott Hughesf71c05a2020-03-06 16:46:59 -0800138# compiles except for arm, so the HOST is whatever we are
The Android Open Source Project88b60792009-03-03 19:28:42 -0800139# running on
140
The Android Open Source Project88b60792009-03-03 19:28:42 -0800141# HOST_OS
142ifneq (,$(findstring Linux,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700143 HOST_OS := linux
The Android Open Source Project88b60792009-03-03 19:28:42 -0800144endif
145ifneq (,$(findstring Darwin,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700146 HOST_OS := darwin
The Android Open Source Project88b60792009-03-03 19:28:42 -0800147endif
Raphael9ca16282010-04-16 17:50:09 -0700148
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700149ifeq ($(CALLED_FROM_SETUP),true)
150 HOST_OS_EXTRA := $(shell uname -rsm)
151 ifeq ($(HOST_OS),linux)
152 ifneq ($(wildcard /etc/os-release),)
153 HOST_OS_EXTRA += $(shell source /etc/os-release; echo $$PRETTY_NAME)
154 endif
155 else ifeq ($(HOST_OS),darwin)
156 HOST_OS_EXTRA += $(shell sw_vers -productVersion)
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700157 endif
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700158 HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA))
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700159endif
Ying Wang08800fd2016-03-03 20:57:21 -0800160
Raphael9ca16282010-04-16 17:50:09 -0700161# BUILD_OS is the real host doing the build.
162BUILD_OS := $(HOST_OS)
163
Jiyong Parke80c45f2020-07-13 13:53:52 +0900164# We can do the cross-build only on Linux
Raphael9ca16282010-04-16 17:50:09 -0700165ifeq ($(HOST_OS),linux)
Jiyong Parke80c45f2020-07-13 13:53:52 +0900166 # Windows has been the default host_cross OS
167 ifeq (,$(filter-out windows,$(HOST_CROSS_OS)))
168 # We can only create static host binaries for Linux, so if static host
169 # binaries are requested, turn off Windows cross-builds.
170 ifeq ($(BUILD_HOST_static),)
171 HOST_CROSS_OS := windows
172 HOST_CROSS_ARCH := x86
173 HOST_CROSS_2ND_ARCH := x86_64
174 2ND_HOST_CROSS_IS_64_BIT := true
175 endif
176 else ifeq ($(HOST_CROSS_OS),linux_bionic)
177 ifeq (,$(HOST_CROSS_ARCH))
178 $(error HOST_CROSS_ARCH missing.)
179 endif
180 else
181 $(error Unsupported HOST_CROSS_OS $(HOST_CROSS_OS))
182 endif
Dan Willemsen88208402021-10-19 00:30:37 -0700183else ifeq ($(HOST_OS),darwin)
184 HOST_CROSS_OS := darwin
185 HOST_CROSS_ARCH := arm64
186 HOST_CROSS_2ND_ARCH :=
Dan Willemsen2a6e3b02017-11-06 11:03:28 -0800187endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800188
189ifeq ($(HOST_OS),)
190$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
191endif
192
The Android Open Source Project88b60792009-03-03 19:28:42 -0800193# HOST_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700194ifneq (,$(findstring x86_64,$(UNAME)))
Ying Wang2713fce2014-06-09 12:31:12 -0700195 HOST_ARCH := x86_64
196 HOST_2ND_ARCH := x86
Ying Wang4b1c95d2014-07-08 17:07:36 -0700197 HOST_IS_64_BIT := true
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700198else
Dan Willemsen88225fd2016-06-29 12:26:53 -0700199ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700200$(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
201endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800202endif
203
Dan Willemsen1d090fc2018-08-28 01:51:25 -0700204ifeq ($(HOST_OS),darwin)
205 # Mac no longer supports 32-bit executables
206 HOST_2ND_ARCH :=
207endif
208
Anton Hansson19279852019-02-28 17:15:57 +0000209HOST_2ND_ARCH_VAR_PREFIX := 2ND_
210HOST_2ND_ARCH_MODULE_SUFFIX := _32
211HOST_CROSS_2ND_ARCH_VAR_PREFIX := 2ND_
212HOST_CROSS_2ND_ARCH_MODULE_SUFFIX := _64
213TARGET_2ND_ARCH_VAR_PREFIX := 2ND_
214.KATI_READONLY := \
215 HOST_ARCH \
216 HOST_2ND_ARCH \
217 HOST_IS_64_BIT \
218 HOST_2ND_ARCH_VAR_PREFIX \
219 HOST_2ND_ARCH_MODULE_SUFFIX \
220 HOST_CROSS_2ND_ARCH_VAR_PREFIX \
221 HOST_CROSS_2ND_ARCH_MODULE_SUFFIX \
222 TARGET_2ND_ARCH_VAR_PREFIX \
223
224combo_target := HOST_
225combo_2nd_arch_prefix :=
226include $(BUILD_COMBOS)/select.mk
227
228ifdef HOST_2ND_ARCH
229 combo_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
230 include $(BUILD_SYSTEM)/combo/select.mk
231endif
232
233# Load the windows cross compiler under Linux
234ifdef HOST_CROSS_OS
235 combo_target := HOST_CROSS_
236 combo_2nd_arch_prefix :=
237 include $(BUILD_SYSTEM)/combo/select.mk
238
239 ifdef HOST_CROSS_2ND_ARCH
240 combo_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
241 include $(BUILD_SYSTEM)/combo/select.mk
242 endif
243endif
244
245# on windows, the tools have .exe at the end, and we depend on the
246# host config stuff being done first
247
Raphael9ca16282010-04-16 17:50:09 -0700248BUILD_ARCH := $(HOST_ARCH)
Ying Wang6feb6d52014-04-17 10:03:35 -0700249BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700250
The Android Open Source Project88b60792009-03-03 19:28:42 -0800251ifeq ($(HOST_ARCH),)
252$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!)
253endif
254
255# the host build defaults to release, and it must be release or debug
256ifeq ($(HOST_BUILD_TYPE),)
257HOST_BUILD_TYPE := release
258endif
259
260ifneq ($(HOST_BUILD_TYPE),release)
261ifneq ($(HOST_BUILD_TYPE),debug)
262$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)')
263endif
264endif
265
Ying Wang6feb6d52014-04-17 10:03:35 -0700266# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
267HOST_PREBUILT_ARCH := x86
The Android Open Source Project88b60792009-03-03 19:28:42 -0800268# This is the standard way to name a directory containing prebuilt host
269# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
Dan Albert216ecac2015-05-04 12:44:44 -0700270HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800271
Ying Wang2b6aaa32011-10-27 15:18:39 -0700272# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
273# Define them here so they can be used in product config files.
274TARGET_COPY_OUT_SYSTEM := system
Ramji Jiyani10655232022-01-20 06:43:09 +0000275TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
Alex Light4e358ab2016-06-16 14:47:10 -0700276TARGET_COPY_OUT_SYSTEM_OTHER := system_other
Ying Wang2b6aaa32011-10-27 15:18:39 -0700277TARGET_COPY_OUT_DATA := data
Vishwath Mohanb285c462017-03-29 15:32:04 -0700278TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
Ying Wangb8888432014-03-11 17:13:27 -0700279TARGET_COPY_OUT_OEM := oem
Tom Cherryd14b8952018-08-09 14:26:00 -0700280TARGET_COPY_OUT_RAMDISK := ramdisk
Bowgo Tsai0013f552019-03-20 17:59:52 +0800281TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
Bowgo Tsai6a683672020-02-14 19:00:15 +0800282TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
Bowgo Tsai5c40c712019-10-08 10:22:19 +0800283TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
Ying Wang2b6aaa32011-10-27 15:18:39 -0700284TARGET_COPY_OUT_ROOT := root
285TARGET_COPY_OUT_RECOVERY := recovery
Anton Hansson379b2ba2018-10-02 14:10:16 +0100286# The directory used for optional partitions depend on the BoardConfig, so
287# they're defined to placeholder values here and swapped after reading the
288# BoardConfig, to be either the partition dir, or a subdir within 'system'.
289_vendor_path_placeholder := ||VENDOR-PATH-PH||
290_product_path_placeholder := ||PRODUCT-PATH-PH||
Justin Yun6151e3f2019-06-25 15:58:13 +0900291_system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100292_odm_path_placeholder := ||ODM-PATH-PH||
Yifan Hongcfb917a2020-05-07 14:58:20 -0700293_vendor_dlkm_path_placeholder := ||VENDOR_DLKM-PATH-PH||
Yifan Hongf496f1b2020-07-15 16:52:59 -0700294_odm_dlkm_path_placeholder := ||ODM_DLKM-PATH-PH||
Ramji Jiyani13a41372022-01-27 07:05:08 +0000295_system_dlkm_path_placeholder := ||SYSTEM_DLKM-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100296TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
Petri Gyntherdc24d882021-03-02 23:54:08 -0800297TARGET_COPY_OUT_VENDOR_RAMDISK := vendor_ramdisk
Lucas Weif57333f2022-02-24 10:30:15 +0800298TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK := vendor_kernel_ramdisk
Anton Hansson379b2ba2018-10-02 14:10:16 +0100299TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
Justin Yun6151e3f2019-06-25 15:58:13 +0900300# TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to
301# product
302TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder)
303TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder)
Anton Hansson379b2ba2018-10-02 14:10:16 +0100304TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
Yifan Hongcfb917a2020-05-07 14:58:20 -0700305TARGET_COPY_OUT_VENDOR_DLKM := $(_vendor_dlkm_path_placeholder)
Yifan Hongf496f1b2020-07-15 16:52:59 -0700306TARGET_COPY_OUT_ODM_DLKM := $(_odm_dlkm_path_placeholder)
Ramji Jiyani13a41372022-01-27 07:05:08 +0000307TARGET_COPY_OUT_SYSTEM_DLKM := $(_system_dlkm_path_placeholder)
Vishwath Mohand4dbf792017-05-16 14:27:34 -0700308
309# Returns the non-sanitized version of the path provided in $1.
310define get_non_asan_path
311$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
312endef
313
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700314#################################################################
315# Set up minimal BOOTCLASSPATH list of jars to build/execute
316# java code with dalvikvm/art.
Martin Stjernholm743513c2021-07-05 20:53:57 +0100317# Jars present in the ART apex. These should match exactly the list of Java
318# libraries in art-bootclasspath-fragment. The APEX variant name
319# (com.android.art) is the same regardless which Soong module provides the ART
320# APEX. See the long comment in build/soong/java/dexprepopt_bootjars.go for
321# details.
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100322ART_APEX_JARS := \
323 com.android.art:core-oj \
324 com.android.art:core-libart \
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100325 com.android.art:okhttp \
326 com.android.art:bouncycastle \
327 com.android.art:apache-xml
Martin Stjernholmfa832282021-02-17 12:26:19 +0000328# With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
329ifeq (true,$(EMMA_INSTRUMENT_FRAMEWORK))
330 ART_APEX_JARS += com.android.art:jacocoagent
331endif
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700332#################################################################
333
Cole Faustf1f49bb2021-12-01 13:49:12 -0800334# Dumps all variables that match [A-Z][A-Z0-9_]* (with a few exceptions)
335# to the file at $(1). It is used to print only the variables that are
336# likely to be relevant to the product or board configuration.
Cole Faustc7226592022-01-12 21:20:07 -0800337# Soong config variables are dumped as $(call soong_config_set) calls
338# instead of the raw variable values, because mk2rbc can't read the
Cole Fausta1b215c2022-07-21 08:08:32 -0700339# raw ones. There is a final sed command on the output file to
340# remove leading spaces because I couldn't figure out how to remove
341# them in pure make code.
Cole Faustf1f49bb2021-12-01 13:49:12 -0800342define dump-variables-rbc
Cole Faust0a746002022-03-24 12:21:55 -0700343$(eval _dump_variables_rbc_excluded := \
Cole Faustec8316d2022-04-04 11:52:52 -0700344 BUILD_NUMBER \
345 DATE \
Cole Faust0a746002022-03-24 12:21:55 -0700346 LOCAL_PATH \
Cole Faustec8316d2022-04-04 11:52:52 -0700347 MAKEFILE_LIST \
348 PRODUCTS \
349 PRODUCT_COPY_OUT_% \
350 RBC_PRODUCT_CONFIG \
351 RBC_BOARD_CONFIG \
352 SOONG_% \
Joe Onorato964f4012023-05-06 12:29:01 -0700353 TARGET_RELEASE \
Cole Faust0a746002022-03-24 12:21:55 -0700354 TOPDIR \
355 TRACE_BEGIN_SOONG \
Cole Faustec8316d2022-04-04 11:52:52 -0700356 USER)
357$(file >$(OUT_DIR)/dump-variables-rbc-temp.txt,$(subst $(space),$(newline),$(sort $(filter-out $(_dump_variables_rbc_excluded),$(.VARIABLES)))))
Cole Faustf1f49bb2021-12-01 13:49:12 -0800358$(file >$(1),\
Cole Faust971ef8e2022-04-06 11:58:37 -0700359$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\
Cole Faustc7226592022-01-12 21:20:07 -0800360$(v) := $(strip $($(v)))$(newline))\
Cole Faustec8316d2022-04-04 11:52:52 -0700361$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\
362$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\
Cole Faustc7226592022-01-12 21:20:07 -0800363$$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline))))
Cole Fausta1b215c2022-07-21 08:08:32 -0700364$(shell sed -i "s/^ *//g" $(1))
Cole Faustf1f49bb2021-12-01 13:49:12 -0800365endef
366
Ying Wang6aef0472014-07-23 20:20:49 -0700367# Read the product specs so we can get TARGET_DEVICE and other
Ryo Fujiicbb32662011-06-16 16:58:11 -0700368# variables that we need in order to locate the output files.
369include $(BUILD_SYSTEM)/product_config.mk
Jesse Wilsonce7d5022010-09-22 10:59:10 -0700370
Ying Wangd0244b32011-11-17 14:51:12 -0800371build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
Ryo Fujiicbb32662011-06-16 16:58:11 -0700372ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
373$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
Ying Wangd0244b32011-11-17 14:51:12 -0800374$(error must be empty or one of: eng user userdebug)
Ryo Fujiicbb32662011-06-16 16:58:11 -0700375endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800376
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700377SDK_HOST_ARCH := x86
Anton Hansson19279852019-02-28 17:15:57 +0000378TARGET_OS := linux
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700379
Cole Faust52e5d9c2021-11-30 11:24:33 -0800380# Some board configuration files use $(PRODUCT_OUT)
381TARGET_OUT_ROOT := $(OUT_DIR)/target
382TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
383PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
384.KATI_READONLY := TARGET_OUT_ROOT TARGET_PRODUCT_OUT_ROOT PRODUCT_OUT
385
Anton Hanssonbb76ce82019-02-26 12:34:03 +0000386include $(BUILD_SYSTEM)/board_config.mk
Jiyong Park641b6cc2018-01-15 14:48:40 +0900387
The Android Open Source Project88b60792009-03-03 19:28:42 -0800388# the target build type defaults to release
389ifneq ($(TARGET_BUILD_TYPE),debug)
390TARGET_BUILD_TYPE := release
391endif
392
Cole Faust7aa649a2023-11-03 12:27:43 -0700393include $(BUILD_SYSTEM)/product_validation_checks.mk
394
The Android Open Source Project88b60792009-03-03 19:28:42 -0800395# ---------------------------------------------------------------
396# figure out the output directories
397
Dan Willemsen60d9c672016-05-27 15:15:47 -0700398SOONG_OUT_DIR := $(OUT_DIR)/soong
399
Dan Willemsend6ed3682017-09-08 14:29:51 -0700400HOST_OUT_ROOT := $(OUT_DIR)/host
The Android Open Source Project88b60792009-03-03 19:28:42 -0800401
Cole Faust52e5d9c2021-11-30 11:24:33 -0800402.KATI_READONLY := SOONG_OUT_DIR HOST_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700403
Ying Wang6feb6d52014-04-17 10:03:35 -0700404# We want to avoid two host bin directories in multilib build.
Dan Willemsend6ed3682017-09-08 14:29:51 -0700405HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
Colin Crossda166c52021-11-18 15:42:19 -0800406
407# Soong now installs to the same directory as Make.
408SOONG_HOST_OUT := $(HOST_OUT)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800409
Jiyong Parkeccc4612020-07-13 19:19:27 +0900410HOST_CROSS_OUT := $(HOST_OUT_ROOT)/$(HOST_CROSS_OS)-$(HOST_CROSS_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700411
Dan Willemsen11677ed2018-03-28 14:33:10 -0700412.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT
413
The Android Open Source Project88b60792009-03-03 19:28:42 -0800414TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
415HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
416
Cole Faust52e5d9c2021-11-30 11:24:33 -0800417.KATI_READONLY := TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700418
The Android Open Source Project88b60792009-03-03 19:28:42 -0800419OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
Dan Albert303e6032017-10-04 10:20:20 -0700420OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs
Dan Willemsen11677ed2018-03-28 14:33:10 -0700421.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800422
Dan Willemsen11677ed2018-03-28 14:33:10 -0700423$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead)
424
425BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin
Dan Willemsen60d9c672016-05-27 15:15:47 -0700426SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700427.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES
Raphael9ca16282010-04-16 17:50:09 -0700428
Ying Wangc6349742014-01-13 16:14:20 -0800429HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
Ying Wang36ef50f2014-06-30 17:06:21 -0700430HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
Ivan Lozanod62e7122019-08-27 11:23:35 -0700431HOST_OUT_DYLIB_LIBRARIES := $(HOST_OUT)/lib64
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800432HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800433HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
Joe Onorato64d85d02009-04-09 19:31:12 -0700434HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800435HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64
Ryan Campbell81c9d292016-09-12 13:56:50 -0700436HOST_OUT_COVERAGE := $(HOST_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700437HOST_OUT_TESTCASES := $(HOST_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700438.KATI_READONLY := \
439 HOST_OUT_EXECUTABLES \
440 HOST_OUT_SHARED_LIBRARIES \
441 HOST_OUT_RENDERSCRIPT_BITCODE \
442 HOST_OUT_JAVA_LIBRARIES \
443 HOST_OUT_SDK_ADDON \
444 HOST_OUT_NATIVE_TESTS \
445 HOST_OUT_COVERAGE \
446 HOST_OUT_TESTCASES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800447
Dan Willemsen057aaea2015-08-14 12:59:50 -0700448HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
449HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800450HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest
Ryan Campbell81c9d292016-09-12 13:56:50 -0700451HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700452HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700453.KATI_READONLY := \
454 HOST_CROSS_OUT_EXECUTABLES \
455 HOST_CROSS_OUT_SHARED_LIBRARIES \
456 HOST_CROSS_OUT_NATIVE_TESTS \
457 HOST_CROSS_OUT_COVERAGE \
458 HOST_CROSS_OUT_TESTCASES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700459
The Android Open Source Project88b60792009-03-03 19:28:42 -0800460HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
Ying Wangc6349742014-01-13 16:14:20 -0800461HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800462HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
Ying Wangec900ac2013-11-13 15:56:18 -0800463HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700464.KATI_READONLY := \
465 HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700466 HOST_OUT_NOTICE_FILES \
467 HOST_OUT_COMMON_INTERMEDIATES \
468 HOST_OUT_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800469
Dan Willemsen057aaea2015-08-14 12:59:50 -0700470HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
Dan Willemsen057aaea2015-08-14 12:59:50 -0700471HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
Dan Willemsen11677ed2018-03-28 14:33:10 -0700472.KATI_READONLY := \
473 HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700474 HOST_CROSS_OUT_NOTICE_FILES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700475
Colin Crossd8262642014-01-24 23:17:21 -0800476HOST_OUT_GEN := $(HOST_OUT)/gen
477HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700478.KATI_READONLY := \
479 HOST_OUT_GEN \
480 HOST_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800481
Dan Willemsen057aaea2015-08-14 12:59:50 -0700482HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700483.KATI_READONLY := HOST_CROSS_OUT_GEN
Dan Willemsen057aaea2015-08-14 12:59:50 -0700484
Ying Wang6feb6d52014-04-17 10:03:35 -0700485# Out for HOST_2ND_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700486$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
Ying Wang966c1e02014-05-20 14:43:51 -0700487$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
Ying Wang6feb6d52014-04-17 10:03:35 -0700488$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
Dan Albertdc941372015-05-04 18:17:52 -0700489$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800490$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest
Simran Basi7166d1f2017-01-25 15:11:55 -0800491$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700492.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700493 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700494 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \
495 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \
496 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \
497 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \
498 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES
Ying Wang6feb6d52014-04-17 10:03:35 -0700499
Ying Wangc4595862014-06-10 12:04:56 -0700500# The default host library path.
501# It always points to the path where we build libraries in the default bitness.
Ying Wang5bac9622014-08-14 11:03:56 -0700502HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700503.KATI_READONLY := HOST_LIBRARY_PATH
Ying Wang6feb6d52014-04-17 10:03:35 -0700504
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800505# Out for HOST_CROSS_2ND_ARCH
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800506$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800507$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64
508$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800509$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
Dan Willemsen11677ed2018-03-28 14:33:10 -0700510.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700511 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700512 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \
513 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \
514 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800515
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700516ifneq ($(filter address,$(SANITIZE_TARGET)),)
517 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
518else
519 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
520endif
Ying Wangc6349742014-01-13 16:14:20 -0800521TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
Dan Willemsen8cf6b652018-09-05 11:01:12 -0700522.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700523
524ifneq ($(filter address,$(SANITIZE_TARGET)),)
525 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
526else
527 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
528endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700529.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800530
Colin Crossd8262642014-01-24 23:17:21 -0800531TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
532TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700533.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800534
Ying Wang2b6aaa32011-10-27 15:18:39 -0700535TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700536.KATI_READONLY := TARGET_OUT
Ivan Krasin74b32b82015-09-18 11:54:43 -0700537ifneq ($(filter address,$(SANITIZE_TARGET)),)
Vishwath Mohanb285c462017-03-29 15:32:04 -0700538target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700539ifeq ($(SANITIZE_LITE),true)
540# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
541# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
542target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
543else
544target_out_app_base := $(TARGET_OUT)
545endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700546else
547target_out_shared_libraries_base := $(TARGET_OUT)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700548target_out_app_base := $(TARGET_OUT)
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700549endif
550
Ying Wangc6349742014-01-13 16:14:20 -0800551TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
552TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700553ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangc6349742014-01-13 16:14:20 -0800554# /system/lib always contains 32-bit libraries,
555# and /system/lib64 (if present) always contains 64-bit libraries.
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700556TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800557else
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700558TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800559endif
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800560TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800561TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700562TARGET_OUT_APPS := $(target_out_app_base)/app
563TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800564TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
565TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
566TARGET_OUT_ETC := $(TARGET_OUT)/etc
Ying Wangc6349742014-01-13 16:14:20 -0800567TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
Dima Zavin531f5242010-09-27 17:37:17 -0700568TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
Simran Basi7166d1f2017-01-25 15:11:55 -0800569TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases
Joe Onorato964f4012023-05-06 12:29:01 -0700570TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS
571
Dan Willemsen11677ed2018-03-28 14:33:10 -0700572.KATI_READONLY := \
573 TARGET_OUT_EXECUTABLES \
574 TARGET_OUT_OPTIONAL_EXECUTABLES \
575 TARGET_OUT_SHARED_LIBRARIES \
576 TARGET_OUT_RENDERSCRIPT_BITCODE \
577 TARGET_OUT_JAVA_LIBRARIES \
578 TARGET_OUT_APPS \
579 TARGET_OUT_APPS_PRIVILEGED \
580 TARGET_OUT_KEYLAYOUT \
581 TARGET_OUT_KEYCHARS \
582 TARGET_OUT_ETC \
583 TARGET_OUT_NOTICE_FILES \
584 TARGET_OUT_FAKE \
Joe Onorato964f4012023-05-06 12:29:01 -0700585 TARGET_OUT_TESTCASES \
586 TARGET_OUT_FLAGS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800587
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700588ifeq ($(SANITIZE_LITE),true)
589# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
590# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
591TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
592else
Alex Light4e358ab2016-06-16 14:47:10 -0700593TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700594endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700595.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER
Alex Light4e358ab2016-06-16 14:47:10 -0700596
Ying Wange1d44c32013-12-27 11:09:36 -0800597# Out for TARGET_2ND_ARCH
Ying Wangc4595862014-06-10 12:04:56 -0700598TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
Anton Hansson19279852019-02-28 17:15:57 +0000599.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700600
601ifneq ($(filter address,$(SANITIZE_TARGET)),)
602 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
603else
604 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
605endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700606$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800607$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
Ying Wang72b01d62014-01-17 16:17:28 -0800608$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
Colin Crossd9574462014-01-24 13:37:07 -0800609$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
610$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
Simran Basi7166d1f2017-01-25 15:11:55 -0800611$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700612.KATI_READONLY := \
613 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700614 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \
615 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \
616 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \
617 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \
618 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
619 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
Ying Wange1d44c32013-12-27 11:09:36 -0800620
Nelson Li1f8357f2019-03-14 01:04:05 +0000621MODULE_CLASS_APPS := app
622MODULE_CLASS_EXECUTABLES := bin
623MODULE_CLASS_JAVA_LIBRARIES := framework
624MODULE_CLASS_NATIVE_TESTS := nativetest
625MODULE_CLASS_METRIC_TESTS := benchmarktest
Ying Wang2b6aaa32011-10-27 15:18:39 -0700626TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
Ying Wangc6349742014-01-13 16:14:20 -0800627TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
628TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
629TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework
630TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800631TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
632TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
633TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700634ifeq ($(TARGET_IS_64_BIT),true)
635TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
Julien Desprez188a1dd2016-04-12 10:22:06 +0100636TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64
Steven Morelandcbfba702017-07-11 14:59:30 -0700637TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX)
638TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700639else
Ying Wang4c681742010-07-20 11:08:47 -0700640TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100641TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700642TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
643TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700644endif
Nelson Li1f8357f2019-03-14 01:04:05 +0000645MODULE_CLASS_FAKE := fake_packages
Tsu Chiang Chuang40da8832012-07-13 13:47:09 -0700646TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700647.KATI_READONLY := \
648 TARGET_OUT_DATA \
649 TARGET_OUT_DATA_EXECUTABLES \
650 TARGET_OUT_DATA_SHARED_LIBRARIES \
651 TARGET_OUT_DATA_JAVA_LIBRARIES \
652 TARGET_OUT_DATA_APPS \
653 TARGET_OUT_DATA_KEYLAYOUT \
654 TARGET_OUT_DATA_KEYCHARS \
655 TARGET_OUT_DATA_ETC \
656 TARGET_OUT_DATA_NATIVE_TESTS \
657 TARGET_OUT_DATA_METRIC_TESTS \
658 TARGET_OUT_VENDOR_NATIVE_TESTS \
659 TARGET_OUT_VENDOR_METRIC_TESTS \
Nelson Li1f8357f2019-03-14 01:04:05 +0000660 TARGET_OUT_DATA_FAKE \
661 MODULE_CLASS_APPS \
662 MODULE_CLASS_EXECUTABLES \
663 MODULE_CLASS_JAVA_LIBRARIES \
664 MODULE_CLASS_NATIVE_TESTS \
665 MODULE_CLASS_METRIC_TESTS \
666 MODULE_CLASS_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800667
Ying Wange3d06792014-01-23 15:09:04 -0800668$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
669$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES)
Colin Crossd9574462014-01-24 13:37:07 -0800670$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700671$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100672$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700673$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
674$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700675.KATI_READONLY := \
676 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \
677 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \
678 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \
679 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \
680 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \
681 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \
682 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \
Ying Wange3d06792014-01-23 15:09:04 -0800683
Ying Wang9f8e8db2011-11-04 11:37:01 -0700684TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
Dan Willemsen11677ed2018-03-28 14:33:10 -0700685.KATI_READONLY := TARGET_OUT_CACHE
Ying Wang9f8e8db2011-11-04 11:37:01 -0700686
Ying Wang2b6aaa32011-10-27 15:18:39 -0700687TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700688.KATI_READONLY := TARGET_OUT_VENDOR
Ivan Krasin74b32b82015-09-18 11:54:43 -0700689ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100690target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700691ifeq ($(SANITIZE_LITE),true)
692# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
693# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100694target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700695else
696target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
697endif
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700698else
699target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700700target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700701endif
702
Ying Wangc6349742014-01-13 16:14:20 -0800703TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
704TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700705ifeq ($(TARGET_IS_64_BIT),true)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700706TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800707else
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700708TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800709endif
Miao Wang57be5642017-03-01 19:39:19 -0800710TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800711TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700712TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app
713TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app
Ying Wang8f779362011-09-13 13:57:26 -0700714TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
Cole Faust976a52c2023-10-03 12:58:27 -0700715TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700716.KATI_READONLY := \
717 TARGET_OUT_VENDOR_EXECUTABLES \
718 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \
719 TARGET_OUT_VENDOR_SHARED_LIBRARIES \
720 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
721 TARGET_OUT_VENDOR_JAVA_LIBRARIES \
722 TARGET_OUT_VENDOR_APPS \
723 TARGET_OUT_VENDOR_APPS_PRIVILEGED \
Cole Faust976a52c2023-10-03 12:58:27 -0700724 TARGET_OUT_VENDOR_ETC \
725 TARGET_OUT_VENDOR_FAKE
Ying Wang8f779362011-09-13 13:57:26 -0700726
Ying Wange3d06792014-01-23 15:09:04 -0800727$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
Andreas Gampecf6268f2016-06-30 20:20:38 -0700728$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Miao Wang57be5642017-03-01 19:39:19 -0800729$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES)
Colin Crossd9574462014-01-24 13:37:07 -0800730$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
Hung-ying Tyan665e7402016-07-20 17:51:56 +0800731$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700732.KATI_READONLY := \
733 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \
734 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \
735 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
736 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \
737 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED
Ying Wang61d499b2014-01-15 16:02:16 -0800738
Ying Wangb8888432014-03-11 17:13:27 -0700739TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
Ying Wangf15250e2014-06-26 14:12:35 -0700740TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
Ying Wang4540a852015-03-12 18:30:39 -0700741ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangf15250e2014-06-26 14:12:35 -0700742TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
743else
744TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
745endif
Ying Wangb8888432014-03-11 17:13:27 -0700746# We don't expect Java libraries in the oem.img.
747# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
Ying Wangf15250e2014-06-26 14:12:35 -0700748TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
Ying Wangb8888432014-03-11 17:13:27 -0700749TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700750.KATI_READONLY := \
751 TARGET_OUT_OEM \
752 TARGET_OUT_OEM_EXECUTABLES \
753 TARGET_OUT_OEM_SHARED_LIBRARIES \
754 TARGET_OUT_OEM_APPS \
755 TARGET_OUT_OEM_ETC
Ying Wangb8888432014-03-11 17:13:27 -0700756
Ying Wangf15250e2014-06-26 14:12:35 -0700757$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
758$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
759$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700760.KATI_READONLY := \
761 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \
762 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \
763 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
Ying Wangf15250e2014-06-26 14:12:35 -0700764
Ying Wang4540a852015-03-12 18:30:39 -0700765TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800766ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100767target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800768ifeq ($(SANITIZE_LITE),true)
769# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
770# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100771target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Ying Wang4540a852015-03-12 18:30:39 -0700772else
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800773target_out_odm_app_base := $(TARGET_OUT_ODM)
Ying Wang4540a852015-03-12 18:30:39 -0700774endif
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800775else
776target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
777target_out_odm_app_base := $(TARGET_OUT_ODM)
778endif
779
780TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
781TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
782ifeq ($(TARGET_IS_64_BIT),true)
783TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
784else
785TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
786endif
787TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
788TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
789TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
790TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
Ying Wang4540a852015-03-12 18:30:39 -0700791TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400792TARGET_OUT_ODM_FAKE := $(PRODUCT_OUT)/odm_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700793.KATI_READONLY := \
794 TARGET_OUT_ODM \
795 TARGET_OUT_ODM_EXECUTABLES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800796 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700797 TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800798 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
799 TARGET_OUT_ODM_JAVA_LIBRARIES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700800 TARGET_OUT_ODM_APPS \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800801 TARGET_OUT_ODM_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400802 TARGET_OUT_ODM_ETC \
803 TARGET_OUT_ODM_FAKE
Ying Wang4540a852015-03-12 18:30:39 -0700804
805$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800806$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800807$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES)
Ying Wang4540a852015-03-12 18:30:39 -0700808$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800809$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700810.KATI_READONLY := \
811 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
812 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800813 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
814 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
815 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
Ying Wang4540a852015-03-12 18:30:39 -0700816
Yifan Hongcfb917a2020-05-07 14:58:20 -0700817TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM)
818
819TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc
820.KATI_READONLY := \
821 TARGET_OUT_VENDOR_DLKM_ETC
822
823# Unlike other partitions, vendor_dlkm should only contain kernel modules.
824TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
825TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES :=
826TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
827TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
828TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES :=
829TARGET_OUT_VENDOR_DLKM_APPS :=
830TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
831$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
832$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
833$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
834$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS :=
835$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
836$(KATI_obsolete_var \
837 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
838 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \
839 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
840 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
841 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \
842 TARGET_OUT_VENDOR_DLKM_APPS \
843 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
844 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
845 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
846 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
847 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \
848 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
849 , vendor_dlkm should not contain any executables, libraries, or apps)
850
Yifan Hongf496f1b2020-07-15 16:52:59 -0700851TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM)
852
853TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc
854.KATI_READONLY := \
855 TARGET_OUT_ODM_DLKM_ETC
856
857# Unlike other partitions, odm_dlkm should only contain kernel modules.
858TARGET_OUT_ODM_DLKM_EXECUTABLES :=
859TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES :=
860TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
861TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
862TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES :=
863TARGET_OUT_ODM_DLKM_APPS :=
864TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
865$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES :=
866$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
867$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
868$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS :=
869$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
870$(KATI_obsolete_var \
871 TARGET_OUT_ODM_DLKM_EXECUTABLES \
872 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \
873 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
874 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
875 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \
876 TARGET_OUT_ODM_DLKM_APPS \
877 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
878 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \
879 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
880 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
881 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \
882 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
883 , odm_dlkm should not contain any executables, libraries, or apps)
884
Ramji Jiyani13a41372022-01-27 07:05:08 +0000885TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
886
887# Unlike other partitions, system_dlkm should only contain kernel modules.
888TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
889TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES :=
890TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
891TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
892TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES :=
893TARGET_OUT_SYSTEM_DLKM_APPS :=
894TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
895$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
896$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
897$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
898$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS :=
899$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
900$(KATI_obsolete_var \
901 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
902 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \
903 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
904 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
905 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \
906 TARGET_OUT_SYSTEM_DLKM_APPS \
907 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
908 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
909 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
910 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
911 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \
912 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
913 , system_dlkm should not contain any executables, libraries, or apps)
914
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900915TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
Doheon Lee09d9b902018-06-25 10:56:01 +0900916TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700917.KATI_READONLY := TARGET_OUT_PRODUCT
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900918ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100919target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900920ifeq ($(SANITIZE_LITE),true)
921# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
922# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100923target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900924else
925target_out_product_app_base := $(TARGET_OUT_PRODUCT)
926endif
927else
Inseob Kim47c13522018-05-04 11:20:43 +0900928target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900929target_out_product_app_base := $(TARGET_OUT_PRODUCT)
930endif
931
932ifeq ($(TARGET_IS_64_BIT),true)
933TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64
934else
935TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
936endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700937TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900938TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app
939TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app
940TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400941TARGET_OUT_PRODUCT_FAKE := $(TARGET_OUT_PRODUCT)/product_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700942.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900943 TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700944 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
945 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \
946 TARGET_OUT_PRODUCT_APPS \
947 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400948 TARGET_OUT_PRODUCT_ETC \
949 TARGET_OUT_PRODUCT_FAKE
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900950
Doheon Lee09d9b902018-06-25 10:56:01 +0900951$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900952$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900953$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS)
954$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700955.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900956 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700957 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
958 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
959 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900960
Justin Yun6151e3f2019-06-25 15:58:13 +0900961TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100962ifneq ($(filter address,$(SANITIZE_TARGET)),)
Justin Yun6151e3f2019-06-25 15:58:13 +0900963target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100964ifeq ($(SANITIZE_LITE),true)
965# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
966# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Justin Yun6151e3f2019-06-25 15:58:13 +0900967target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100968else
Justin Yun6151e3f2019-06-25 15:58:13 +0900969target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100970endif
971else
Justin Yun6151e3f2019-06-25 15:58:13 +0900972target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT)
973target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100974endif
975
976ifeq ($(TARGET_IS_64_BIT),true)
Justin Yun6151e3f2019-06-25 15:58:13 +0900977TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64
Dario Freni5f681e12018-05-29 13:09:01 +0100978else
Justin Yun6151e3f2019-06-25 15:58:13 +0900979TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
Dario Freni5f681e12018-05-29 13:09:01 +0100980endif
Justin Yun6151e3f2019-06-25 15:58:13 +0900981TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework
982TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app
983TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app
984TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900985TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400986TARGET_OUT_SYSTEM_EXT_FAKE := $(PRODUCT_OUT)/system_ext_fake_packages
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900987.KATI_READONLY := \
988 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
989 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
990 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \
991 TARGET_OUT_SYSTEM_EXT_APPS \
992 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400993 TARGET_OUT_SYSTEM_EXT_ETC \
994 TARGET_OUT_SYSTEM_EXT_FAKE
Dario Freni5f681e12018-05-29 13:09:01 +0100995
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900996$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES)
Justin Yun6151e3f2019-06-25 15:58:13 +0900997$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
Justin Yun6151e3f2019-06-25 15:58:13 +0900998$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS)
999$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)
Jeongik Cha6a5e9a22019-08-20 19:24:43 +09001000.KATI_READONLY := \
1001 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
1002 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
1003 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
1004 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
Dario Freni5f681e12018-05-29 13:09:01 +01001005
Steve Fungdfbab492015-09-24 18:12:33 -07001006TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
Dan Willemsen11677ed2018-03-28 14:33:10 -07001007.KATI_READONLY := TARGET_OUT_BREAKPAD
Steve Fungdfbab492015-09-24 18:12:33 -07001008
The Android Open Source Project88b60792009-03-03 19:28:42 -08001009TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
1010TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
1011TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
Colin Crossa58f8e02014-06-20 13:33:36 -07001012TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
The Android Open Source Project88b60792009-03-03 19:28:42 -08001013TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001014TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
Ryan Campbell737bc022016-09-15 17:32:13 -07001015TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
Dan Willemsen11677ed2018-03-28 14:33:10 -07001016.KATI_READONLY := \
1017 TARGET_OUT_UNSTRIPPED \
1018 TARGET_OUT_EXECUTABLES_UNSTRIPPED \
1019 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \
1020 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \
1021 TARGET_ROOT_OUT_UNSTRIPPED \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001022 TARGET_ROOT_OUT_BIN_UNSTRIPPED \
1023 TARGET_OUT_COVERAGE
The Android Open Source Project88b60792009-03-03 19:28:42 -08001024
Tom Cherryd14b8952018-08-09 14:26:00 -07001025TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
1026TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
Bowgo Tsai0013f552019-03-20 17:59:52 +08001027TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
Bowgo Tsai6a683672020-02-14 19:00:15 +08001028TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK)
Bowgo Tsai5c40c712019-10-08 10:22:19 +08001029TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK)
Tom Cherryd14b8952018-08-09 14:26:00 -07001030
Ramji Jiyani10655232022-01-20 06:43:09 +00001031TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
1032.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT
1033
Steve Mucklee1b10862019-07-10 10:49:37 -07001034TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK)
Lucas Weif57333f2022-02-24 10:30:15 +08001035TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK)
Steve Mucklee1b10862019-07-10 10:49:37 -07001036
Ying Wang2b6aaa32011-10-27 15:18:39 -07001037TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001038TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
The Android Open Source Project88b60792009-03-03 19:28:42 -08001039TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
1040TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
Dan Willemsen11677ed2018-03-28 14:33:10 -07001041.KATI_READONLY := \
1042 TARGET_ROOT_OUT \
1043 TARGET_ROOT_OUT_BIN \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001044 TARGET_ROOT_OUT_ETC \
1045 TARGET_ROOT_OUT_USR
The Android Open Source Project88b60792009-03-03 19:28:42 -08001046
Ying Wang2b6aaa32011-10-27 15:18:39 -07001047TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001048TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
Dan Willemsen11677ed2018-03-28 14:33:10 -07001049.KATI_READONLY := \
1050 TARGET_RECOVERY_OUT \
1051 TARGET_RECOVERY_ROOT_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001052
1053TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
1054TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
1055TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001056.KATI_READONLY := \
1057 TARGET_SYSLOADER_OUT \
1058 TARGET_SYSLOADER_ROOT_OUT \
1059 TARGET_SYSLOADER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001060
1061TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
1062TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
1063TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
1064TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001065.KATI_READONLY := \
1066 TARGET_INSTALLER_OUT \
1067 TARGET_INSTALLER_DATA_OUT \
1068 TARGET_INSTALLER_ROOT_OUT \
1069 TARGET_INSTALLER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001070
Dan Willemsen8447b812020-06-08 21:00:18 -07001071COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES
Ivan Lozanod62e7122019-08-27 11:23:35 -07001072PER_ARCH_MODULE_CLASSES := SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP RENDERSCRIPT_BITCODE NATIVE_TESTS HEADER_LIBRARIES RLIB_LIBRARIES DYLIB_LIBRARIES
Dan Willemsen11677ed2018-03-28 14:33:10 -07001073.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES
The Android Open Source Project88b60792009-03-03 19:28:42 -08001074
Dan Willemsen20f99a62017-10-12 01:35:14 -07001075ifeq ($(CALLED_FROM_SETUP),true)
Dan Willemsen0d255292017-02-18 10:32:13 -08001076PRINT_BUILD_CONFIG ?= true
The Android Open Source Project88b60792009-03-03 19:28:42 -08001077endif