blob: 93cec64ec46311b2140fa68d17725b6903c0d24e [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
Joe Onorato964f4012023-05-06 12:29:01 -070060# ---------------------------------------------------------------
Jeff Hamilton426a9f82023-10-19 04:54:15 +000061# Set up version information
62include $(BUILD_SYSTEM)/version_util.mk
Colin Crossc9016592017-03-28 13:07:56 -070063
Jeff Hamilton426a9f82023-10-19 04:54:15 +000064# This used to be calculated, but is now fixed and not expected
65# to change over time anymore. New code attempting to use a
66# variable like IS_AT_LAST_* should instead use a
67# build system flag.
Colin Crossc9016592017-03-28 13:07:56 -070068
Jeff Hamilton426a9f82023-10-19 04:54:15 +000069ENABLED_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 -070070
71$(foreach v,$(ENABLED_VERSIONS), \
72 $(eval IS_AT_LEAST_$(v) := true))
73
The Android Open Source Project88b60792009-03-03 19:28:42 -080074# ---------------------------------------------------------------
75# If you update the build system such that the environment setup
76# or buildspec.mk need to be updated, increment this number, and
77# people who haven't re-run those will have to do so before they
78# can build. Make sure to also update the corresponding value in
79# buildspec.mk.default and envsetup.sh.
Colin Cross88737132017-03-21 17:41:03 -070080CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13
The Android Open Source Project88b60792009-03-03 19:28:42 -080081
82# ---------------------------------------------------------------
Jeff Browne33ba4c2011-07-11 22:11:46 -070083# The product defaults to generic on hardware
The Android Open Source Project88b60792009-03-03 19:28:42 -080084ifeq ($(TARGET_PRODUCT),)
Steven Morelandc89cf962024-05-31 18:07:34 +000085TARGET_PRODUCT := aosp_arm64
The Android Open Source Project88b60792009-03-03 19:28:42 -080086endif
The Android Open Source Project88b60792009-03-03 19:28:42 -080087
88
89# the variant -- the set of files that are included for a build
90ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
91TARGET_BUILD_VARIANT := eng
92endif
93
Dan Willemsen8a5d5972019-07-29 14:22:05 -070094TARGET_BUILD_APPS ?=
Jeongik Chad05b57a2020-07-08 18:10:38 +090095TARGET_BUILD_UNBUNDLED_IMAGE ?=
Dan Willemsen8a5d5972019-07-29 14:22:05 -070096
Martin Stjernholm7a430fd2020-06-04 15:16:39 +010097# Set to true for an unbundled build, i.e. a build without
98# support for platform targets like the system image. This also
99# disables consistency checks that only apply to full platform
100# builds.
101TARGET_BUILD_UNBUNDLED ?=
102
103# TARGET_BUILD_APPS implies unbundled build, otherwise we default
104# to bundled (i.e. platform targets such as the system image are
105# included).
106ifneq ($(TARGET_BUILD_APPS),)
107 TARGET_BUILD_UNBUNDLED := true
108endif
109
Jeongik Chad05b57a2020-07-08 18:10:38 +0900110# TARGET_BUILD_UNBUNDLED_IMAGE also implies unbundled build.
111# (i.e. it targets to only unbundled image, such as the vendor image,
112# ,or the product image).
113ifneq ($(TARGET_BUILD_UNBUNDLED_IMAGE),)
114 TARGET_BUILD_UNBUNDLED := true
115endif
116
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700117.KATI_READONLY := \
118 TARGET_PRODUCT \
119 TARGET_BUILD_VARIANT \
Martin Stjernholm7a430fd2020-06-04 15:16:39 +0100120 TARGET_BUILD_APPS \
121 TARGET_BUILD_UNBUNDLED \
Jeongik Chad05b57a2020-07-08 18:10:38 +0900122 TARGET_BUILD_UNBUNDLED_IMAGE \
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700123
The Android Open Source Project88b60792009-03-03 19:28:42 -0800124# ---------------------------------------------------------------
125# Set up configuration for host machine. We don't do cross-
Elliott Hughesf71c05a2020-03-06 16:46:59 -0800126# compiles except for arm, so the HOST is whatever we are
The Android Open Source Project88b60792009-03-03 19:28:42 -0800127# running on
128
The Android Open Source Project88b60792009-03-03 19:28:42 -0800129# HOST_OS
130ifneq (,$(findstring Linux,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700131 HOST_OS := linux
The Android Open Source Project88b60792009-03-03 19:28:42 -0800132endif
133ifneq (,$(findstring Darwin,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700134 HOST_OS := darwin
The Android Open Source Project88b60792009-03-03 19:28:42 -0800135endif
Raphael9ca16282010-04-16 17:50:09 -0700136
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700137ifeq ($(CALLED_FROM_SETUP),true)
138 HOST_OS_EXTRA := $(shell uname -rsm)
139 ifeq ($(HOST_OS),linux)
140 ifneq ($(wildcard /etc/os-release),)
141 HOST_OS_EXTRA += $(shell source /etc/os-release; echo $$PRETTY_NAME)
142 endif
143 else ifeq ($(HOST_OS),darwin)
144 HOST_OS_EXTRA += $(shell sw_vers -productVersion)
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700145 endif
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700146 HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA))
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700147endif
Ying Wang08800fd2016-03-03 20:57:21 -0800148
Raphael9ca16282010-04-16 17:50:09 -0700149# BUILD_OS is the real host doing the build.
150BUILD_OS := $(HOST_OS)
151
Jiyong Parke80c45f2020-07-13 13:53:52 +0900152# We can do the cross-build only on Linux
Raphael9ca16282010-04-16 17:50:09 -0700153ifeq ($(HOST_OS),linux)
Jiyong Parke80c45f2020-07-13 13:53:52 +0900154 # Windows has been the default host_cross OS
155 ifeq (,$(filter-out windows,$(HOST_CROSS_OS)))
156 # We can only create static host binaries for Linux, so if static host
157 # binaries are requested, turn off Windows cross-builds.
158 ifeq ($(BUILD_HOST_static),)
159 HOST_CROSS_OS := windows
160 HOST_CROSS_ARCH := x86
161 HOST_CROSS_2ND_ARCH := x86_64
162 2ND_HOST_CROSS_IS_64_BIT := true
163 endif
164 else ifeq ($(HOST_CROSS_OS),linux_bionic)
165 ifeq (,$(HOST_CROSS_ARCH))
166 $(error HOST_CROSS_ARCH missing.)
167 endif
168 else
169 $(error Unsupported HOST_CROSS_OS $(HOST_CROSS_OS))
170 endif
Dan Willemsen88208402021-10-19 00:30:37 -0700171else ifeq ($(HOST_OS),darwin)
172 HOST_CROSS_OS := darwin
173 HOST_CROSS_ARCH := arm64
174 HOST_CROSS_2ND_ARCH :=
Dan Willemsen2a6e3b02017-11-06 11:03:28 -0800175endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800176
177ifeq ($(HOST_OS),)
178$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
179endif
180
The Android Open Source Project88b60792009-03-03 19:28:42 -0800181# HOST_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700182ifneq (,$(findstring x86_64,$(UNAME)))
Ying Wang2713fce2014-06-09 12:31:12 -0700183 HOST_ARCH := x86_64
184 HOST_2ND_ARCH := x86
Ying Wang4b1c95d2014-07-08 17:07:36 -0700185 HOST_IS_64_BIT := true
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700186else
Dan Willemsen88225fd2016-06-29 12:26:53 -0700187ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700188$(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
189endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800190endif
191
Dan Willemsen1d090fc2018-08-28 01:51:25 -0700192ifeq ($(HOST_OS),darwin)
193 # Mac no longer supports 32-bit executables
194 HOST_2ND_ARCH :=
195endif
196
Anton Hansson19279852019-02-28 17:15:57 +0000197HOST_2ND_ARCH_VAR_PREFIX := 2ND_
198HOST_2ND_ARCH_MODULE_SUFFIX := _32
199HOST_CROSS_2ND_ARCH_VAR_PREFIX := 2ND_
200HOST_CROSS_2ND_ARCH_MODULE_SUFFIX := _64
201TARGET_2ND_ARCH_VAR_PREFIX := 2ND_
202.KATI_READONLY := \
203 HOST_ARCH \
204 HOST_2ND_ARCH \
205 HOST_IS_64_BIT \
206 HOST_2ND_ARCH_VAR_PREFIX \
207 HOST_2ND_ARCH_MODULE_SUFFIX \
208 HOST_CROSS_2ND_ARCH_VAR_PREFIX \
209 HOST_CROSS_2ND_ARCH_MODULE_SUFFIX \
210 TARGET_2ND_ARCH_VAR_PREFIX \
211
212combo_target := HOST_
213combo_2nd_arch_prefix :=
214include $(BUILD_COMBOS)/select.mk
215
216ifdef HOST_2ND_ARCH
217 combo_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
218 include $(BUILD_SYSTEM)/combo/select.mk
219endif
220
221# Load the windows cross compiler under Linux
222ifdef HOST_CROSS_OS
223 combo_target := HOST_CROSS_
224 combo_2nd_arch_prefix :=
225 include $(BUILD_SYSTEM)/combo/select.mk
226
227 ifdef HOST_CROSS_2ND_ARCH
228 combo_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
229 include $(BUILD_SYSTEM)/combo/select.mk
230 endif
231endif
232
233# on windows, the tools have .exe at the end, and we depend on the
234# host config stuff being done first
235
Raphael9ca16282010-04-16 17:50:09 -0700236BUILD_ARCH := $(HOST_ARCH)
Ying Wang6feb6d52014-04-17 10:03:35 -0700237BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700238
The Android Open Source Project88b60792009-03-03 19:28:42 -0800239ifeq ($(HOST_ARCH),)
240$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!)
241endif
242
243# the host build defaults to release, and it must be release or debug
244ifeq ($(HOST_BUILD_TYPE),)
245HOST_BUILD_TYPE := release
246endif
247
248ifneq ($(HOST_BUILD_TYPE),release)
249ifneq ($(HOST_BUILD_TYPE),debug)
250$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)')
251endif
252endif
253
Ying Wang6feb6d52014-04-17 10:03:35 -0700254# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
255HOST_PREBUILT_ARCH := x86
The Android Open Source Project88b60792009-03-03 19:28:42 -0800256# This is the standard way to name a directory containing prebuilt host
257# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
Joe Onorato32b2aa32024-05-14 13:54:13 -0700258# This must match the logic in get_host_prebuilt_prefix in envsetup.sh
Dan Albert216ecac2015-05-04 12:44:44 -0700259HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800260
Ying Wang2b6aaa32011-10-27 15:18:39 -0700261# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
262# Define them here so they can be used in product config files.
263TARGET_COPY_OUT_SYSTEM := system
Ramji Jiyani10655232022-01-20 06:43:09 +0000264TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
Alex Light4e358ab2016-06-16 14:47:10 -0700265TARGET_COPY_OUT_SYSTEM_OTHER := system_other
Ying Wang2b6aaa32011-10-27 15:18:39 -0700266TARGET_COPY_OUT_DATA := data
Vishwath Mohanb285c462017-03-29 15:32:04 -0700267TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
Ying Wangb8888432014-03-11 17:13:27 -0700268TARGET_COPY_OUT_OEM := oem
Tom Cherryd14b8952018-08-09 14:26:00 -0700269TARGET_COPY_OUT_RAMDISK := ramdisk
Bowgo Tsai0013f552019-03-20 17:59:52 +0800270TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
Bowgo Tsai6a683672020-02-14 19:00:15 +0800271TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
Bowgo Tsai5c40c712019-10-08 10:22:19 +0800272TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
Ying Wang2b6aaa32011-10-27 15:18:39 -0700273TARGET_COPY_OUT_ROOT := root
274TARGET_COPY_OUT_RECOVERY := recovery
Anton Hansson379b2ba2018-10-02 14:10:16 +0100275# The directory used for optional partitions depend on the BoardConfig, so
276# they're defined to placeholder values here and swapped after reading the
277# BoardConfig, to be either the partition dir, or a subdir within 'system'.
278_vendor_path_placeholder := ||VENDOR-PATH-PH||
279_product_path_placeholder := ||PRODUCT-PATH-PH||
Justin Yun6151e3f2019-06-25 15:58:13 +0900280_system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100281_odm_path_placeholder := ||ODM-PATH-PH||
Yifan Hongcfb917a2020-05-07 14:58:20 -0700282_vendor_dlkm_path_placeholder := ||VENDOR_DLKM-PATH-PH||
Yifan Hongf496f1b2020-07-15 16:52:59 -0700283_odm_dlkm_path_placeholder := ||ODM_DLKM-PATH-PH||
Ramji Jiyani13a41372022-01-27 07:05:08 +0000284_system_dlkm_path_placeholder := ||SYSTEM_DLKM-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100285TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
Petri Gyntherdc24d882021-03-02 23:54:08 -0800286TARGET_COPY_OUT_VENDOR_RAMDISK := vendor_ramdisk
Lucas Weif57333f2022-02-24 10:30:15 +0800287TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK := vendor_kernel_ramdisk
Anton Hansson379b2ba2018-10-02 14:10:16 +0100288TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
Justin Yun6151e3f2019-06-25 15:58:13 +0900289# TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to
290# product
291TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder)
292TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder)
Anton Hansson379b2ba2018-10-02 14:10:16 +0100293TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
Yifan Hongcfb917a2020-05-07 14:58:20 -0700294TARGET_COPY_OUT_VENDOR_DLKM := $(_vendor_dlkm_path_placeholder)
Yifan Hongf496f1b2020-07-15 16:52:59 -0700295TARGET_COPY_OUT_ODM_DLKM := $(_odm_dlkm_path_placeholder)
Ramji Jiyani13a41372022-01-27 07:05:08 +0000296TARGET_COPY_OUT_SYSTEM_DLKM := $(_system_dlkm_path_placeholder)
Vishwath Mohand4dbf792017-05-16 14:27:34 -0700297
298# Returns the non-sanitized version of the path provided in $1.
299define get_non_asan_path
300$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
301endef
302
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700303#################################################################
304# Set up minimal BOOTCLASSPATH list of jars to build/execute
305# java code with dalvikvm/art.
Martin Stjernholm743513c2021-07-05 20:53:57 +0100306# Jars present in the ART apex. These should match exactly the list of Java
307# libraries in art-bootclasspath-fragment. The APEX variant name
308# (com.android.art) is the same regardless which Soong module provides the ART
309# APEX. See the long comment in build/soong/java/dexprepopt_bootjars.go for
310# details.
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100311ART_APEX_JARS := \
312 com.android.art:core-oj \
313 com.android.art:core-libart \
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100314 com.android.art:okhttp \
315 com.android.art:bouncycastle \
316 com.android.art:apache-xml
Martin Stjernholmfa832282021-02-17 12:26:19 +0000317# With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
318ifeq (true,$(EMMA_INSTRUMENT_FRAMEWORK))
319 ART_APEX_JARS += com.android.art:jacocoagent
320endif
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700321#################################################################
322
Cole Faustf1f49bb2021-12-01 13:49:12 -0800323# Dumps all variables that match [A-Z][A-Z0-9_]* (with a few exceptions)
324# to the file at $(1). It is used to print only the variables that are
325# likely to be relevant to the product or board configuration.
Cole Faustc7226592022-01-12 21:20:07 -0800326# Soong config variables are dumped as $(call soong_config_set) calls
327# instead of the raw variable values, because mk2rbc can't read the
Cole Fausta1b215c2022-07-21 08:08:32 -0700328# raw ones. There is a final sed command on the output file to
329# remove leading spaces because I couldn't figure out how to remove
330# them in pure make code.
Cole Faustf1f49bb2021-12-01 13:49:12 -0800331define dump-variables-rbc
Cole Faust0a746002022-03-24 12:21:55 -0700332$(eval _dump_variables_rbc_excluded := \
Cole Faustec8316d2022-04-04 11:52:52 -0700333 BUILD_NUMBER \
334 DATE \
Cole Faust0a746002022-03-24 12:21:55 -0700335 LOCAL_PATH \
Cole Faustec8316d2022-04-04 11:52:52 -0700336 MAKEFILE_LIST \
337 PRODUCTS \
338 PRODUCT_COPY_OUT_% \
339 RBC_PRODUCT_CONFIG \
340 RBC_BOARD_CONFIG \
341 SOONG_% \
Joe Onorato964f4012023-05-06 12:29:01 -0700342 TARGET_RELEASE \
Cole Faust0a746002022-03-24 12:21:55 -0700343 TOPDIR \
344 TRACE_BEGIN_SOONG \
Cole Faustec8316d2022-04-04 11:52:52 -0700345 USER)
346$(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 -0800347$(file >$(1),\
Cole Faust971ef8e2022-04-06 11:58:37 -0700348$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\
Cole Faustc7226592022-01-12 21:20:07 -0800349$(v) := $(strip $($(v)))$(newline))\
Cole Faustec8316d2022-04-04 11:52:52 -0700350$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\
351$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\
Cole Faustc7226592022-01-12 21:20:07 -0800352$$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline))))
Cole Fausta1b215c2022-07-21 08:08:32 -0700353$(shell sed -i "s/^ *//g" $(1))
Cole Faustf1f49bb2021-12-01 13:49:12 -0800354endef
355
Ying Wang6aef0472014-07-23 20:20:49 -0700356# Read the product specs so we can get TARGET_DEVICE and other
Ryo Fujiicbb32662011-06-16 16:58:11 -0700357# variables that we need in order to locate the output files.
358include $(BUILD_SYSTEM)/product_config.mk
Jesse Wilsonce7d5022010-09-22 10:59:10 -0700359
Ying Wangd0244b32011-11-17 14:51:12 -0800360build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
Ryo Fujiicbb32662011-06-16 16:58:11 -0700361ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
362$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
Ying Wangd0244b32011-11-17 14:51:12 -0800363$(error must be empty or one of: eng user userdebug)
Ryo Fujiicbb32662011-06-16 16:58:11 -0700364endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800365
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700366SDK_HOST_ARCH := x86
Anton Hansson19279852019-02-28 17:15:57 +0000367TARGET_OS := linux
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700368
Cole Faust52e5d9c2021-11-30 11:24:33 -0800369# Some board configuration files use $(PRODUCT_OUT)
370TARGET_OUT_ROOT := $(OUT_DIR)/target
371TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
372PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
373.KATI_READONLY := TARGET_OUT_ROOT TARGET_PRODUCT_OUT_ROOT PRODUCT_OUT
374
Anton Hanssonbb76ce82019-02-26 12:34:03 +0000375include $(BUILD_SYSTEM)/board_config.mk
Jiyong Park641b6cc2018-01-15 14:48:40 +0900376
The Android Open Source Project88b60792009-03-03 19:28:42 -0800377# the target build type defaults to release
378ifneq ($(TARGET_BUILD_TYPE),debug)
379TARGET_BUILD_TYPE := release
380endif
381
Cole Faust7aa649a2023-11-03 12:27:43 -0700382include $(BUILD_SYSTEM)/product_validation_checks.mk
383
The Android Open Source Project88b60792009-03-03 19:28:42 -0800384# ---------------------------------------------------------------
385# figure out the output directories
386
Dan Willemsen60d9c672016-05-27 15:15:47 -0700387SOONG_OUT_DIR := $(OUT_DIR)/soong
388
Dan Willemsend6ed3682017-09-08 14:29:51 -0700389HOST_OUT_ROOT := $(OUT_DIR)/host
The Android Open Source Project88b60792009-03-03 19:28:42 -0800390
Cole Faust52e5d9c2021-11-30 11:24:33 -0800391.KATI_READONLY := SOONG_OUT_DIR HOST_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700392
Ying Wang6feb6d52014-04-17 10:03:35 -0700393# We want to avoid two host bin directories in multilib build.
Dan Willemsend6ed3682017-09-08 14:29:51 -0700394HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
Colin Crossda166c52021-11-18 15:42:19 -0800395
396# Soong now installs to the same directory as Make.
397SOONG_HOST_OUT := $(HOST_OUT)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800398
Jiyong Parkeccc4612020-07-13 19:19:27 +0900399HOST_CROSS_OUT := $(HOST_OUT_ROOT)/$(HOST_CROSS_OS)-$(HOST_CROSS_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700400
Dan Willemsen11677ed2018-03-28 14:33:10 -0700401.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT
402
The Android Open Source Project88b60792009-03-03 19:28:42 -0800403TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
404HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
405
Cole Faust52e5d9c2021-11-30 11:24:33 -0800406.KATI_READONLY := TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700407
The Android Open Source Project88b60792009-03-03 19:28:42 -0800408OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
Dan Albert303e6032017-10-04 10:20:20 -0700409OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs
Dan Willemsen11677ed2018-03-28 14:33:10 -0700410.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800411
Dan Willemsen11677ed2018-03-28 14:33:10 -0700412$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead)
413
414BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin
Dan Willemsen60d9c672016-05-27 15:15:47 -0700415SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700416.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES
Raphael9ca16282010-04-16 17:50:09 -0700417
Ying Wangc6349742014-01-13 16:14:20 -0800418HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
Ying Wang36ef50f2014-06-30 17:06:21 -0700419HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
Ivan Lozanod62e7122019-08-27 11:23:35 -0700420HOST_OUT_DYLIB_LIBRARIES := $(HOST_OUT)/lib64
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800421HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800422HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
Joe Onorato64d85d02009-04-09 19:31:12 -0700423HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800424HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64
Ryan Campbell81c9d292016-09-12 13:56:50 -0700425HOST_OUT_COVERAGE := $(HOST_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700426HOST_OUT_TESTCASES := $(HOST_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700427.KATI_READONLY := \
428 HOST_OUT_EXECUTABLES \
429 HOST_OUT_SHARED_LIBRARIES \
430 HOST_OUT_RENDERSCRIPT_BITCODE \
431 HOST_OUT_JAVA_LIBRARIES \
432 HOST_OUT_SDK_ADDON \
433 HOST_OUT_NATIVE_TESTS \
434 HOST_OUT_COVERAGE \
435 HOST_OUT_TESTCASES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800436
Dan Willemsen057aaea2015-08-14 12:59:50 -0700437HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
438HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800439HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest
Ryan Campbell81c9d292016-09-12 13:56:50 -0700440HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700441HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700442.KATI_READONLY := \
443 HOST_CROSS_OUT_EXECUTABLES \
444 HOST_CROSS_OUT_SHARED_LIBRARIES \
445 HOST_CROSS_OUT_NATIVE_TESTS \
446 HOST_CROSS_OUT_COVERAGE \
447 HOST_CROSS_OUT_TESTCASES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700448
The Android Open Source Project88b60792009-03-03 19:28:42 -0800449HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
Ying Wangc6349742014-01-13 16:14:20 -0800450HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800451HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
Ying Wangec900ac2013-11-13 15:56:18 -0800452HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700453.KATI_READONLY := \
454 HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700455 HOST_OUT_NOTICE_FILES \
456 HOST_OUT_COMMON_INTERMEDIATES \
457 HOST_OUT_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800458
Dan Willemsen057aaea2015-08-14 12:59:50 -0700459HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
Dan Willemsen057aaea2015-08-14 12:59:50 -0700460HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
Dan Willemsen11677ed2018-03-28 14:33:10 -0700461.KATI_READONLY := \
462 HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700463 HOST_CROSS_OUT_NOTICE_FILES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700464
Colin Crossd8262642014-01-24 23:17:21 -0800465HOST_OUT_GEN := $(HOST_OUT)/gen
466HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700467.KATI_READONLY := \
468 HOST_OUT_GEN \
469 HOST_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800470
Dan Willemsen057aaea2015-08-14 12:59:50 -0700471HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700472.KATI_READONLY := HOST_CROSS_OUT_GEN
Dan Willemsen057aaea2015-08-14 12:59:50 -0700473
Ying Wang6feb6d52014-04-17 10:03:35 -0700474# Out for HOST_2ND_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700475$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
Ying Wang966c1e02014-05-20 14:43:51 -0700476$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
Ying Wang6feb6d52014-04-17 10:03:35 -0700477$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
Dan Albertdc941372015-05-04 18:17:52 -0700478$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800479$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest
Simran Basi7166d1f2017-01-25 15:11:55 -0800480$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700481.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700482 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700483 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \
484 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \
485 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \
486 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \
487 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES
Ying Wang6feb6d52014-04-17 10:03:35 -0700488
Ying Wangc4595862014-06-10 12:04:56 -0700489# The default host library path.
490# It always points to the path where we build libraries in the default bitness.
Ying Wang5bac9622014-08-14 11:03:56 -0700491HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700492.KATI_READONLY := HOST_LIBRARY_PATH
Ying Wang6feb6d52014-04-17 10:03:35 -0700493
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800494# Out for HOST_CROSS_2ND_ARCH
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800495$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800496$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64
497$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800498$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
Dan Willemsen11677ed2018-03-28 14:33:10 -0700499.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700500 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700501 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \
502 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \
503 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800504
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700505ifneq ($(filter address,$(SANITIZE_TARGET)),)
506 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
507else
508 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
509endif
Ying Wangc6349742014-01-13 16:14:20 -0800510TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
Dan Willemsen8cf6b652018-09-05 11:01:12 -0700511.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700512
513ifneq ($(filter address,$(SANITIZE_TARGET)),)
514 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
515else
516 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
517endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700518.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800519
Colin Crossd8262642014-01-24 23:17:21 -0800520TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
521TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700522.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800523
Ying Wang2b6aaa32011-10-27 15:18:39 -0700524TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700525.KATI_READONLY := TARGET_OUT
Ivan Krasin74b32b82015-09-18 11:54:43 -0700526ifneq ($(filter address,$(SANITIZE_TARGET)),)
Vishwath Mohanb285c462017-03-29 15:32:04 -0700527target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700528ifeq ($(SANITIZE_LITE),true)
529# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
530# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
531target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
532else
533target_out_app_base := $(TARGET_OUT)
534endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700535else
536target_out_shared_libraries_base := $(TARGET_OUT)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700537target_out_app_base := $(TARGET_OUT)
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700538endif
539
Ying Wangc6349742014-01-13 16:14:20 -0800540TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
541TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700542ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangc6349742014-01-13 16:14:20 -0800543# /system/lib always contains 32-bit libraries,
544# and /system/lib64 (if present) always contains 64-bit libraries.
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700545TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800546else
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700547TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800548endif
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800549TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800550TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700551TARGET_OUT_APPS := $(target_out_app_base)/app
552TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800553TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
554TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
555TARGET_OUT_ETC := $(TARGET_OUT)/etc
Ying Wangc6349742014-01-13 16:14:20 -0800556TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
Dima Zavin531f5242010-09-27 17:37:17 -0700557TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
Simran Basi7166d1f2017-01-25 15:11:55 -0800558TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases
Joe Onorato964f4012023-05-06 12:29:01 -0700559TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS
560
Dan Willemsen11677ed2018-03-28 14:33:10 -0700561.KATI_READONLY := \
562 TARGET_OUT_EXECUTABLES \
563 TARGET_OUT_OPTIONAL_EXECUTABLES \
564 TARGET_OUT_SHARED_LIBRARIES \
565 TARGET_OUT_RENDERSCRIPT_BITCODE \
566 TARGET_OUT_JAVA_LIBRARIES \
567 TARGET_OUT_APPS \
568 TARGET_OUT_APPS_PRIVILEGED \
569 TARGET_OUT_KEYLAYOUT \
570 TARGET_OUT_KEYCHARS \
571 TARGET_OUT_ETC \
572 TARGET_OUT_NOTICE_FILES \
573 TARGET_OUT_FAKE \
Joe Onorato964f4012023-05-06 12:29:01 -0700574 TARGET_OUT_TESTCASES \
575 TARGET_OUT_FLAGS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800576
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700577ifeq ($(SANITIZE_LITE),true)
578# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
579# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
580TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
581else
Alex Light4e358ab2016-06-16 14:47:10 -0700582TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700583endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700584.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER
Alex Light4e358ab2016-06-16 14:47:10 -0700585
Ying Wange1d44c32013-12-27 11:09:36 -0800586# Out for TARGET_2ND_ARCH
Ying Wangc4595862014-06-10 12:04:56 -0700587TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
Anton Hansson19279852019-02-28 17:15:57 +0000588.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700589
590ifneq ($(filter address,$(SANITIZE_TARGET)),)
591 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
592else
593 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
594endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700595$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800596$(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 -0800597$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
Colin Crossd9574462014-01-24 13:37:07 -0800598$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
599$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
Simran Basi7166d1f2017-01-25 15:11:55 -0800600$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700601.KATI_READONLY := \
602 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700603 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \
604 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \
605 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \
606 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \
607 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
608 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
Ying Wange1d44c32013-12-27 11:09:36 -0800609
Nelson Li1f8357f2019-03-14 01:04:05 +0000610MODULE_CLASS_APPS := app
611MODULE_CLASS_EXECUTABLES := bin
612MODULE_CLASS_JAVA_LIBRARIES := framework
613MODULE_CLASS_NATIVE_TESTS := nativetest
614MODULE_CLASS_METRIC_TESTS := benchmarktest
Ying Wang2b6aaa32011-10-27 15:18:39 -0700615TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
Ying Wangc6349742014-01-13 16:14:20 -0800616TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
617TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
618TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework
619TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800620TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
621TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
622TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700623ifeq ($(TARGET_IS_64_BIT),true)
624TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
Julien Desprez188a1dd2016-04-12 10:22:06 +0100625TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64
Steven Morelandcbfba702017-07-11 14:59:30 -0700626TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX)
627TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700628else
Ying Wang4c681742010-07-20 11:08:47 -0700629TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100630TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700631TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
632TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700633endif
Nelson Li1f8357f2019-03-14 01:04:05 +0000634MODULE_CLASS_FAKE := fake_packages
Tsu Chiang Chuang40da8832012-07-13 13:47:09 -0700635TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700636.KATI_READONLY := \
637 TARGET_OUT_DATA \
638 TARGET_OUT_DATA_EXECUTABLES \
639 TARGET_OUT_DATA_SHARED_LIBRARIES \
640 TARGET_OUT_DATA_JAVA_LIBRARIES \
641 TARGET_OUT_DATA_APPS \
642 TARGET_OUT_DATA_KEYLAYOUT \
643 TARGET_OUT_DATA_KEYCHARS \
644 TARGET_OUT_DATA_ETC \
645 TARGET_OUT_DATA_NATIVE_TESTS \
646 TARGET_OUT_DATA_METRIC_TESTS \
647 TARGET_OUT_VENDOR_NATIVE_TESTS \
648 TARGET_OUT_VENDOR_METRIC_TESTS \
Nelson Li1f8357f2019-03-14 01:04:05 +0000649 TARGET_OUT_DATA_FAKE \
650 MODULE_CLASS_APPS \
651 MODULE_CLASS_EXECUTABLES \
652 MODULE_CLASS_JAVA_LIBRARIES \
653 MODULE_CLASS_NATIVE_TESTS \
654 MODULE_CLASS_METRIC_TESTS \
655 MODULE_CLASS_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800656
Ying Wange3d06792014-01-23 15:09:04 -0800657$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
658$(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 -0800659$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700660$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100661$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700662$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
663$(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 -0700664.KATI_READONLY := \
665 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \
666 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \
667 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \
668 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \
669 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \
670 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \
671 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \
Ying Wange3d06792014-01-23 15:09:04 -0800672
Ying Wang9f8e8db2011-11-04 11:37:01 -0700673TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
Dan Willemsen11677ed2018-03-28 14:33:10 -0700674.KATI_READONLY := TARGET_OUT_CACHE
Ying Wang9f8e8db2011-11-04 11:37:01 -0700675
Ying Wang2b6aaa32011-10-27 15:18:39 -0700676TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700677.KATI_READONLY := TARGET_OUT_VENDOR
Ivan Krasin74b32b82015-09-18 11:54:43 -0700678ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100679target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700680ifeq ($(SANITIZE_LITE),true)
681# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
682# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100683target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700684else
685target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
686endif
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700687else
688target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700689target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700690endif
691
Ying Wangc6349742014-01-13 16:14:20 -0800692TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
693TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700694ifeq ($(TARGET_IS_64_BIT),true)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700695TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800696else
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700697TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800698endif
Miao Wang57be5642017-03-01 19:39:19 -0800699TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800700TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700701TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app
702TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app
Ying Wang8f779362011-09-13 13:57:26 -0700703TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
Cole Faust976a52c2023-10-03 12:58:27 -0700704TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700705.KATI_READONLY := \
706 TARGET_OUT_VENDOR_EXECUTABLES \
707 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \
708 TARGET_OUT_VENDOR_SHARED_LIBRARIES \
709 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
710 TARGET_OUT_VENDOR_JAVA_LIBRARIES \
711 TARGET_OUT_VENDOR_APPS \
712 TARGET_OUT_VENDOR_APPS_PRIVILEGED \
Cole Faust976a52c2023-10-03 12:58:27 -0700713 TARGET_OUT_VENDOR_ETC \
714 TARGET_OUT_VENDOR_FAKE
Ying Wang8f779362011-09-13 13:57:26 -0700715
Ying Wange3d06792014-01-23 15:09:04 -0800716$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
Andreas Gampecf6268f2016-06-30 20:20:38 -0700717$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Miao Wang57be5642017-03-01 19:39:19 -0800718$(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 -0800719$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
Hung-ying Tyan665e7402016-07-20 17:51:56 +0800720$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700721.KATI_READONLY := \
722 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \
723 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \
724 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
725 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \
726 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED
Ying Wang61d499b2014-01-15 16:02:16 -0800727
Ying Wangb8888432014-03-11 17:13:27 -0700728TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
Ying Wangf15250e2014-06-26 14:12:35 -0700729TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
Ying Wang4540a852015-03-12 18:30:39 -0700730ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangf15250e2014-06-26 14:12:35 -0700731TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
732else
733TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
734endif
Ying Wangb8888432014-03-11 17:13:27 -0700735# We don't expect Java libraries in the oem.img.
736# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
Ying Wangf15250e2014-06-26 14:12:35 -0700737TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
Ying Wangb8888432014-03-11 17:13:27 -0700738TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700739.KATI_READONLY := \
740 TARGET_OUT_OEM \
741 TARGET_OUT_OEM_EXECUTABLES \
742 TARGET_OUT_OEM_SHARED_LIBRARIES \
743 TARGET_OUT_OEM_APPS \
744 TARGET_OUT_OEM_ETC
Ying Wangb8888432014-03-11 17:13:27 -0700745
Ying Wangf15250e2014-06-26 14:12:35 -0700746$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
747$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
748$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700749.KATI_READONLY := \
750 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \
751 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \
752 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
Ying Wangf15250e2014-06-26 14:12:35 -0700753
Ying Wang4540a852015-03-12 18:30:39 -0700754TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800755ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100756target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800757ifeq ($(SANITIZE_LITE),true)
758# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
759# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100760target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Ying Wang4540a852015-03-12 18:30:39 -0700761else
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800762target_out_odm_app_base := $(TARGET_OUT_ODM)
Ying Wang4540a852015-03-12 18:30:39 -0700763endif
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800764else
765target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
766target_out_odm_app_base := $(TARGET_OUT_ODM)
767endif
768
769TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
770TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
771ifeq ($(TARGET_IS_64_BIT),true)
772TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
773else
774TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
775endif
776TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
777TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
778TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
779TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
Ying Wang4540a852015-03-12 18:30:39 -0700780TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400781TARGET_OUT_ODM_FAKE := $(PRODUCT_OUT)/odm_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700782.KATI_READONLY := \
783 TARGET_OUT_ODM \
784 TARGET_OUT_ODM_EXECUTABLES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800785 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700786 TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800787 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
788 TARGET_OUT_ODM_JAVA_LIBRARIES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700789 TARGET_OUT_ODM_APPS \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800790 TARGET_OUT_ODM_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400791 TARGET_OUT_ODM_ETC \
792 TARGET_OUT_ODM_FAKE
Ying Wang4540a852015-03-12 18:30:39 -0700793
794$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800795$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800796$(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 -0700797$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800798$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700799.KATI_READONLY := \
800 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
801 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800802 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
803 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
804 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
Ying Wang4540a852015-03-12 18:30:39 -0700805
Yifan Hongcfb917a2020-05-07 14:58:20 -0700806TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM)
807
808TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc
809.KATI_READONLY := \
810 TARGET_OUT_VENDOR_DLKM_ETC
811
812# Unlike other partitions, vendor_dlkm should only contain kernel modules.
813TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
814TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES :=
815TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
816TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
817TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES :=
818TARGET_OUT_VENDOR_DLKM_APPS :=
819TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
820$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
821$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
822$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
823$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS :=
824$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
825$(KATI_obsolete_var \
826 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
827 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \
828 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
829 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
830 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \
831 TARGET_OUT_VENDOR_DLKM_APPS \
832 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
833 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
834 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
835 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
836 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \
837 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
838 , vendor_dlkm should not contain any executables, libraries, or apps)
839
Yifan Hongf496f1b2020-07-15 16:52:59 -0700840TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM)
841
842TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc
843.KATI_READONLY := \
844 TARGET_OUT_ODM_DLKM_ETC
845
846# Unlike other partitions, odm_dlkm should only contain kernel modules.
847TARGET_OUT_ODM_DLKM_EXECUTABLES :=
848TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES :=
849TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
850TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
851TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES :=
852TARGET_OUT_ODM_DLKM_APPS :=
853TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
854$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES :=
855$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
856$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
857$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS :=
858$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
859$(KATI_obsolete_var \
860 TARGET_OUT_ODM_DLKM_EXECUTABLES \
861 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \
862 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
863 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
864 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \
865 TARGET_OUT_ODM_DLKM_APPS \
866 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
867 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \
868 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
869 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
870 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \
871 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
872 , odm_dlkm should not contain any executables, libraries, or apps)
873
Ramji Jiyani13a41372022-01-27 07:05:08 +0000874TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
875
876# Unlike other partitions, system_dlkm should only contain kernel modules.
877TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
878TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES :=
879TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
880TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
881TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES :=
882TARGET_OUT_SYSTEM_DLKM_APPS :=
883TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
884$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
885$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
886$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
887$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS :=
888$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
889$(KATI_obsolete_var \
890 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
891 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \
892 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
893 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
894 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \
895 TARGET_OUT_SYSTEM_DLKM_APPS \
896 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
897 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
898 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
899 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
900 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \
901 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
902 , system_dlkm should not contain any executables, libraries, or apps)
903
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900904TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
Doheon Lee09d9b902018-06-25 10:56:01 +0900905TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700906.KATI_READONLY := TARGET_OUT_PRODUCT
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900907ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100908target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900909ifeq ($(SANITIZE_LITE),true)
910# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
911# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100912target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900913else
914target_out_product_app_base := $(TARGET_OUT_PRODUCT)
915endif
916else
Inseob Kim47c13522018-05-04 11:20:43 +0900917target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900918target_out_product_app_base := $(TARGET_OUT_PRODUCT)
919endif
920
921ifeq ($(TARGET_IS_64_BIT),true)
922TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64
923else
924TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
925endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700926TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900927TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app
928TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app
929TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400930TARGET_OUT_PRODUCT_FAKE := $(TARGET_OUT_PRODUCT)/product_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700931.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900932 TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700933 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
934 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \
935 TARGET_OUT_PRODUCT_APPS \
936 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400937 TARGET_OUT_PRODUCT_ETC \
938 TARGET_OUT_PRODUCT_FAKE
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900939
Doheon Lee09d9b902018-06-25 10:56:01 +0900940$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900941$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900942$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS)
943$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700944.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900945 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700946 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
947 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
948 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900949
Justin Yun6151e3f2019-06-25 15:58:13 +0900950TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100951ifneq ($(filter address,$(SANITIZE_TARGET)),)
Justin Yun6151e3f2019-06-25 15:58:13 +0900952target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100953ifeq ($(SANITIZE_LITE),true)
954# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
955# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Justin Yun6151e3f2019-06-25 15:58:13 +0900956target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100957else
Justin Yun6151e3f2019-06-25 15:58:13 +0900958target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100959endif
960else
Justin Yun6151e3f2019-06-25 15:58:13 +0900961target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT)
962target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100963endif
964
965ifeq ($(TARGET_IS_64_BIT),true)
Justin Yun6151e3f2019-06-25 15:58:13 +0900966TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64
Dario Freni5f681e12018-05-29 13:09:01 +0100967else
Justin Yun6151e3f2019-06-25 15:58:13 +0900968TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
Dario Freni5f681e12018-05-29 13:09:01 +0100969endif
Justin Yun6151e3f2019-06-25 15:58:13 +0900970TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework
971TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app
972TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app
973TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900974TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400975TARGET_OUT_SYSTEM_EXT_FAKE := $(PRODUCT_OUT)/system_ext_fake_packages
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900976.KATI_READONLY := \
977 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
978 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
979 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \
980 TARGET_OUT_SYSTEM_EXT_APPS \
981 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \
Alexander Koskovichd65b6252024-03-18 15:37:41 -0400982 TARGET_OUT_SYSTEM_EXT_ETC \
983 TARGET_OUT_SYSTEM_EXT_FAKE
Dario Freni5f681e12018-05-29 13:09:01 +0100984
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900985$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES)
Justin Yun6151e3f2019-06-25 15:58:13 +0900986$(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 +0900987$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS)
988$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900989.KATI_READONLY := \
990 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
991 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
992 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
993 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
Dario Freni5f681e12018-05-29 13:09:01 +0100994
Steve Fungdfbab492015-09-24 18:12:33 -0700995TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
Dan Willemsen11677ed2018-03-28 14:33:10 -0700996.KATI_READONLY := TARGET_OUT_BREAKPAD
Steve Fungdfbab492015-09-24 18:12:33 -0700997
The Android Open Source Project88b60792009-03-03 19:28:42 -0800998TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
999TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
1000TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
Colin Crossa58f8e02014-06-20 13:33:36 -07001001TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
The Android Open Source Project88b60792009-03-03 19:28:42 -08001002TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001003TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
Ryan Campbell737bc022016-09-15 17:32:13 -07001004TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
Dan Willemsen11677ed2018-03-28 14:33:10 -07001005.KATI_READONLY := \
1006 TARGET_OUT_UNSTRIPPED \
1007 TARGET_OUT_EXECUTABLES_UNSTRIPPED \
1008 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \
1009 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \
1010 TARGET_ROOT_OUT_UNSTRIPPED \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001011 TARGET_ROOT_OUT_BIN_UNSTRIPPED \
1012 TARGET_OUT_COVERAGE
The Android Open Source Project88b60792009-03-03 19:28:42 -08001013
Tom Cherryd14b8952018-08-09 14:26:00 -07001014TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
1015TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
Bowgo Tsai0013f552019-03-20 17:59:52 +08001016TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
Bowgo Tsai6a683672020-02-14 19:00:15 +08001017TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK)
Bowgo Tsai5c40c712019-10-08 10:22:19 +08001018TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK)
Tom Cherryd14b8952018-08-09 14:26:00 -07001019
Ramji Jiyani10655232022-01-20 06:43:09 +00001020TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
1021.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT
1022
Steve Mucklee1b10862019-07-10 10:49:37 -07001023TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK)
Lucas Weif57333f2022-02-24 10:30:15 +08001024TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK)
Steve Mucklee1b10862019-07-10 10:49:37 -07001025
Ying Wang2b6aaa32011-10-27 15:18:39 -07001026TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001027TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
The Android Open Source Project88b60792009-03-03 19:28:42 -08001028TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
1029TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
Dan Willemsen11677ed2018-03-28 14:33:10 -07001030.KATI_READONLY := \
1031 TARGET_ROOT_OUT \
1032 TARGET_ROOT_OUT_BIN \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001033 TARGET_ROOT_OUT_ETC \
1034 TARGET_ROOT_OUT_USR
The Android Open Source Project88b60792009-03-03 19:28:42 -08001035
Ying Wang2b6aaa32011-10-27 15:18:39 -07001036TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001037TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
Dan Willemsen11677ed2018-03-28 14:33:10 -07001038.KATI_READONLY := \
1039 TARGET_RECOVERY_OUT \
1040 TARGET_RECOVERY_ROOT_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001041
1042TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
1043TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
1044TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001045.KATI_READONLY := \
1046 TARGET_SYSLOADER_OUT \
1047 TARGET_SYSLOADER_ROOT_OUT \
1048 TARGET_SYSLOADER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001049
1050TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
1051TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
1052TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
1053TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001054.KATI_READONLY := \
1055 TARGET_INSTALLER_OUT \
1056 TARGET_INSTALLER_DATA_OUT \
1057 TARGET_INSTALLER_ROOT_OUT \
1058 TARGET_INSTALLER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001059
Dan Willemsen8447b812020-06-08 21:00:18 -07001060COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES
Ivan Lozanod62e7122019-08-27 11:23:35 -07001061PER_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 -07001062.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES
The Android Open Source Project88b60792009-03-03 19:28:42 -08001063
Dan Willemsen20f99a62017-10-12 01:35:14 -07001064ifeq ($(CALLED_FROM_SETUP),true)
Dan Willemsen0d255292017-02-18 10:32:13 -08001065PRINT_BUILD_CONFIG ?= true
The Android Open Source Project88b60792009-03-03 19:28:42 -08001066endif