blob: c286135ebf849ffc75beb7339944fe5ea7cabf3e [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),)
Ying Wang0a76df52015-06-08 11:57:26 -070085TARGET_PRODUCT := aosp_arm
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
Dan Albert216ecac2015-05-04 12:44:44 -0700258HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800259
Ying Wang2b6aaa32011-10-27 15:18:39 -0700260# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
261# Define them here so they can be used in product config files.
262TARGET_COPY_OUT_SYSTEM := system
Ramji Jiyani10655232022-01-20 06:43:09 +0000263TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
Alex Light4e358ab2016-06-16 14:47:10 -0700264TARGET_COPY_OUT_SYSTEM_OTHER := system_other
Ying Wang2b6aaa32011-10-27 15:18:39 -0700265TARGET_COPY_OUT_DATA := data
Vishwath Mohanb285c462017-03-29 15:32:04 -0700266TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
Ying Wangb8888432014-03-11 17:13:27 -0700267TARGET_COPY_OUT_OEM := oem
Tom Cherryd14b8952018-08-09 14:26:00 -0700268TARGET_COPY_OUT_RAMDISK := ramdisk
Bowgo Tsai0013f552019-03-20 17:59:52 +0800269TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
Bowgo Tsai6a683672020-02-14 19:00:15 +0800270TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
Bowgo Tsai5c40c712019-10-08 10:22:19 +0800271TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
Ying Wang2b6aaa32011-10-27 15:18:39 -0700272TARGET_COPY_OUT_ROOT := root
273TARGET_COPY_OUT_RECOVERY := recovery
Anton Hansson379b2ba2018-10-02 14:10:16 +0100274# The directory used for optional partitions depend on the BoardConfig, so
275# they're defined to placeholder values here and swapped after reading the
276# BoardConfig, to be either the partition dir, or a subdir within 'system'.
277_vendor_path_placeholder := ||VENDOR-PATH-PH||
278_product_path_placeholder := ||PRODUCT-PATH-PH||
Justin Yun6151e3f2019-06-25 15:58:13 +0900279_system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100280_odm_path_placeholder := ||ODM-PATH-PH||
Yifan Hongcfb917a2020-05-07 14:58:20 -0700281_vendor_dlkm_path_placeholder := ||VENDOR_DLKM-PATH-PH||
Yifan Hongf496f1b2020-07-15 16:52:59 -0700282_odm_dlkm_path_placeholder := ||ODM_DLKM-PATH-PH||
Ramji Jiyani13a41372022-01-27 07:05:08 +0000283_system_dlkm_path_placeholder := ||SYSTEM_DLKM-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100284TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
Petri Gyntherdc24d882021-03-02 23:54:08 -0800285TARGET_COPY_OUT_VENDOR_RAMDISK := vendor_ramdisk
Lucas Weif57333f2022-02-24 10:30:15 +0800286TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK := vendor_kernel_ramdisk
Anton Hansson379b2ba2018-10-02 14:10:16 +0100287TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
Justin Yun6151e3f2019-06-25 15:58:13 +0900288# TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to
289# product
290TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder)
291TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder)
Anton Hansson379b2ba2018-10-02 14:10:16 +0100292TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
Yifan Hongcfb917a2020-05-07 14:58:20 -0700293TARGET_COPY_OUT_VENDOR_DLKM := $(_vendor_dlkm_path_placeholder)
Yifan Hongf496f1b2020-07-15 16:52:59 -0700294TARGET_COPY_OUT_ODM_DLKM := $(_odm_dlkm_path_placeholder)
Ramji Jiyani13a41372022-01-27 07:05:08 +0000295TARGET_COPY_OUT_SYSTEM_DLKM := $(_system_dlkm_path_placeholder)
Vishwath Mohand4dbf792017-05-16 14:27:34 -0700296
297# Returns the non-sanitized version of the path provided in $1.
298define get_non_asan_path
299$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
300endef
301
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700302#################################################################
303# Set up minimal BOOTCLASSPATH list of jars to build/execute
304# java code with dalvikvm/art.
Martin Stjernholm743513c2021-07-05 20:53:57 +0100305# Jars present in the ART apex. These should match exactly the list of Java
306# libraries in art-bootclasspath-fragment. The APEX variant name
307# (com.android.art) is the same regardless which Soong module provides the ART
308# APEX. See the long comment in build/soong/java/dexprepopt_bootjars.go for
309# details.
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100310ART_APEX_JARS := \
311 com.android.art:core-oj \
312 com.android.art:core-libart \
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100313 com.android.art:okhttp \
314 com.android.art:bouncycastle \
315 com.android.art:apache-xml
Martin Stjernholmfa832282021-02-17 12:26:19 +0000316# With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
317ifeq (true,$(EMMA_INSTRUMENT_FRAMEWORK))
318 ART_APEX_JARS += com.android.art:jacocoagent
319endif
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700320#################################################################
321
Cole Faustf1f49bb2021-12-01 13:49:12 -0800322# Dumps all variables that match [A-Z][A-Z0-9_]* (with a few exceptions)
323# to the file at $(1). It is used to print only the variables that are
324# likely to be relevant to the product or board configuration.
Cole Faustc7226592022-01-12 21:20:07 -0800325# Soong config variables are dumped as $(call soong_config_set) calls
326# instead of the raw variable values, because mk2rbc can't read the
Cole Fausta1b215c2022-07-21 08:08:32 -0700327# raw ones. There is a final sed command on the output file to
328# remove leading spaces because I couldn't figure out how to remove
329# them in pure make code.
Cole Faustf1f49bb2021-12-01 13:49:12 -0800330define dump-variables-rbc
Cole Faust0a746002022-03-24 12:21:55 -0700331$(eval _dump_variables_rbc_excluded := \
Cole Faustec8316d2022-04-04 11:52:52 -0700332 BUILD_NUMBER \
333 DATE \
Cole Faust0a746002022-03-24 12:21:55 -0700334 LOCAL_PATH \
Cole Faustec8316d2022-04-04 11:52:52 -0700335 MAKEFILE_LIST \
336 PRODUCTS \
337 PRODUCT_COPY_OUT_% \
338 RBC_PRODUCT_CONFIG \
339 RBC_BOARD_CONFIG \
340 SOONG_% \
Joe Onorato964f4012023-05-06 12:29:01 -0700341 TARGET_RELEASE \
Cole Faust0a746002022-03-24 12:21:55 -0700342 TOPDIR \
343 TRACE_BEGIN_SOONG \
Cole Faustec8316d2022-04-04 11:52:52 -0700344 USER)
345$(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 -0800346$(file >$(1),\
Cole Faust971ef8e2022-04-06 11:58:37 -0700347$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\
Cole Faustc7226592022-01-12 21:20:07 -0800348$(v) := $(strip $($(v)))$(newline))\
Cole Faustec8316d2022-04-04 11:52:52 -0700349$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\
350$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\
Cole Faustc7226592022-01-12 21:20:07 -0800351$$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline))))
Cole Fausta1b215c2022-07-21 08:08:32 -0700352$(shell sed -i "s/^ *//g" $(1))
Cole Faustf1f49bb2021-12-01 13:49:12 -0800353endef
354
Ying Wang6aef0472014-07-23 20:20:49 -0700355# Read the product specs so we can get TARGET_DEVICE and other
Ryo Fujiicbb32662011-06-16 16:58:11 -0700356# variables that we need in order to locate the output files.
357include $(BUILD_SYSTEM)/product_config.mk
Jesse Wilsonce7d5022010-09-22 10:59:10 -0700358
Ying Wangd0244b32011-11-17 14:51:12 -0800359build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
Ryo Fujiicbb32662011-06-16 16:58:11 -0700360ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
361$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
Ying Wangd0244b32011-11-17 14:51:12 -0800362$(error must be empty or one of: eng user userdebug)
Ryo Fujiicbb32662011-06-16 16:58:11 -0700363endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800364
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700365SDK_HOST_ARCH := x86
Anton Hansson19279852019-02-28 17:15:57 +0000366TARGET_OS := linux
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700367
Cole Faust52e5d9c2021-11-30 11:24:33 -0800368# Some board configuration files use $(PRODUCT_OUT)
369TARGET_OUT_ROOT := $(OUT_DIR)/target
370TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
371PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
372.KATI_READONLY := TARGET_OUT_ROOT TARGET_PRODUCT_OUT_ROOT PRODUCT_OUT
373
Anton Hanssonbb76ce82019-02-26 12:34:03 +0000374include $(BUILD_SYSTEM)/board_config.mk
Jiyong Park641b6cc2018-01-15 14:48:40 +0900375
The Android Open Source Project88b60792009-03-03 19:28:42 -0800376# the target build type defaults to release
377ifneq ($(TARGET_BUILD_TYPE),debug)
378TARGET_BUILD_TYPE := release
379endif
380
Cole Faust7aa649a2023-11-03 12:27:43 -0700381include $(BUILD_SYSTEM)/product_validation_checks.mk
382
The Android Open Source Project88b60792009-03-03 19:28:42 -0800383# ---------------------------------------------------------------
384# figure out the output directories
385
Dan Willemsen60d9c672016-05-27 15:15:47 -0700386SOONG_OUT_DIR := $(OUT_DIR)/soong
387
Dan Willemsend6ed3682017-09-08 14:29:51 -0700388HOST_OUT_ROOT := $(OUT_DIR)/host
The Android Open Source Project88b60792009-03-03 19:28:42 -0800389
Cole Faust52e5d9c2021-11-30 11:24:33 -0800390.KATI_READONLY := SOONG_OUT_DIR HOST_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700391
Ying Wang6feb6d52014-04-17 10:03:35 -0700392# We want to avoid two host bin directories in multilib build.
Dan Willemsend6ed3682017-09-08 14:29:51 -0700393HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
Colin Crossda166c52021-11-18 15:42:19 -0800394
395# Soong now installs to the same directory as Make.
396SOONG_HOST_OUT := $(HOST_OUT)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800397
Jiyong Parkeccc4612020-07-13 19:19:27 +0900398HOST_CROSS_OUT := $(HOST_OUT_ROOT)/$(HOST_CROSS_OS)-$(HOST_CROSS_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700399
Dan Willemsen11677ed2018-03-28 14:33:10 -0700400.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT
401
The Android Open Source Project88b60792009-03-03 19:28:42 -0800402TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
403HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
404
Cole Faust52e5d9c2021-11-30 11:24:33 -0800405.KATI_READONLY := TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700406
The Android Open Source Project88b60792009-03-03 19:28:42 -0800407OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
Dan Albert303e6032017-10-04 10:20:20 -0700408OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs
Dan Willemsen11677ed2018-03-28 14:33:10 -0700409.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800410
Dan Willemsen11677ed2018-03-28 14:33:10 -0700411$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead)
412
413BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin
Dan Willemsen60d9c672016-05-27 15:15:47 -0700414SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700415.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES
Raphael9ca16282010-04-16 17:50:09 -0700416
Ying Wangc6349742014-01-13 16:14:20 -0800417HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
Ying Wang36ef50f2014-06-30 17:06:21 -0700418HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
Ivan Lozanod62e7122019-08-27 11:23:35 -0700419HOST_OUT_DYLIB_LIBRARIES := $(HOST_OUT)/lib64
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800420HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800421HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
Joe Onorato64d85d02009-04-09 19:31:12 -0700422HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800423HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64
Ryan Campbell81c9d292016-09-12 13:56:50 -0700424HOST_OUT_COVERAGE := $(HOST_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700425HOST_OUT_TESTCASES := $(HOST_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700426.KATI_READONLY := \
427 HOST_OUT_EXECUTABLES \
428 HOST_OUT_SHARED_LIBRARIES \
429 HOST_OUT_RENDERSCRIPT_BITCODE \
430 HOST_OUT_JAVA_LIBRARIES \
431 HOST_OUT_SDK_ADDON \
432 HOST_OUT_NATIVE_TESTS \
433 HOST_OUT_COVERAGE \
434 HOST_OUT_TESTCASES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800435
Dan Willemsen057aaea2015-08-14 12:59:50 -0700436HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
437HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800438HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest
Ryan Campbell81c9d292016-09-12 13:56:50 -0700439HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700440HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700441.KATI_READONLY := \
442 HOST_CROSS_OUT_EXECUTABLES \
443 HOST_CROSS_OUT_SHARED_LIBRARIES \
444 HOST_CROSS_OUT_NATIVE_TESTS \
445 HOST_CROSS_OUT_COVERAGE \
446 HOST_CROSS_OUT_TESTCASES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700447
The Android Open Source Project88b60792009-03-03 19:28:42 -0800448HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
Ying Wangc6349742014-01-13 16:14:20 -0800449HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800450HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
Ying Wangec900ac2013-11-13 15:56:18 -0800451HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700452.KATI_READONLY := \
453 HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700454 HOST_OUT_NOTICE_FILES \
455 HOST_OUT_COMMON_INTERMEDIATES \
456 HOST_OUT_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800457
Dan Willemsen057aaea2015-08-14 12:59:50 -0700458HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
Dan Willemsen057aaea2015-08-14 12:59:50 -0700459HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
Dan Willemsen11677ed2018-03-28 14:33:10 -0700460.KATI_READONLY := \
461 HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700462 HOST_CROSS_OUT_NOTICE_FILES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700463
Colin Crossd8262642014-01-24 23:17:21 -0800464HOST_OUT_GEN := $(HOST_OUT)/gen
465HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700466.KATI_READONLY := \
467 HOST_OUT_GEN \
468 HOST_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800469
Dan Willemsen057aaea2015-08-14 12:59:50 -0700470HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700471.KATI_READONLY := HOST_CROSS_OUT_GEN
Dan Willemsen057aaea2015-08-14 12:59:50 -0700472
Ying Wang6feb6d52014-04-17 10:03:35 -0700473# Out for HOST_2ND_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700474$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
Ying Wang966c1e02014-05-20 14:43:51 -0700475$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
Ying Wang6feb6d52014-04-17 10:03:35 -0700476$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
Dan Albertdc941372015-05-04 18:17:52 -0700477$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800478$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest
Simran Basi7166d1f2017-01-25 15:11:55 -0800479$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700480.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700481 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700482 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \
483 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \
484 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \
485 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \
486 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES
Ying Wang6feb6d52014-04-17 10:03:35 -0700487
Ying Wangc4595862014-06-10 12:04:56 -0700488# The default host library path.
489# It always points to the path where we build libraries in the default bitness.
Ying Wang5bac9622014-08-14 11:03:56 -0700490HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700491.KATI_READONLY := HOST_LIBRARY_PATH
Ying Wang6feb6d52014-04-17 10:03:35 -0700492
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800493# Out for HOST_CROSS_2ND_ARCH
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800494$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800495$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64
496$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800497$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
Dan Willemsen11677ed2018-03-28 14:33:10 -0700498.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700499 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700500 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \
501 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \
502 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800503
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700504ifneq ($(filter address,$(SANITIZE_TARGET)),)
505 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
506else
507 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
508endif
Ying Wangc6349742014-01-13 16:14:20 -0800509TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
Dan Willemsen8cf6b652018-09-05 11:01:12 -0700510.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700511
512ifneq ($(filter address,$(SANITIZE_TARGET)),)
513 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
514else
515 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
516endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700517.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800518
Colin Crossd8262642014-01-24 23:17:21 -0800519TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
520TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700521.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800522
Ying Wang2b6aaa32011-10-27 15:18:39 -0700523TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700524.KATI_READONLY := TARGET_OUT
Ivan Krasin74b32b82015-09-18 11:54:43 -0700525ifneq ($(filter address,$(SANITIZE_TARGET)),)
Vishwath Mohanb285c462017-03-29 15:32:04 -0700526target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700527ifeq ($(SANITIZE_LITE),true)
528# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
529# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
530target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
531else
532target_out_app_base := $(TARGET_OUT)
533endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700534else
535target_out_shared_libraries_base := $(TARGET_OUT)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700536target_out_app_base := $(TARGET_OUT)
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700537endif
538
Ying Wangc6349742014-01-13 16:14:20 -0800539TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
540TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700541ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangc6349742014-01-13 16:14:20 -0800542# /system/lib always contains 32-bit libraries,
543# and /system/lib64 (if present) always contains 64-bit libraries.
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700544TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800545else
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700546TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800547endif
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800548TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800549TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700550TARGET_OUT_APPS := $(target_out_app_base)/app
551TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800552TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
553TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
554TARGET_OUT_ETC := $(TARGET_OUT)/etc
Ying Wangc6349742014-01-13 16:14:20 -0800555TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
Dima Zavin531f5242010-09-27 17:37:17 -0700556TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
Simran Basi7166d1f2017-01-25 15:11:55 -0800557TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases
Joe Onorato964f4012023-05-06 12:29:01 -0700558TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS
559
Dan Willemsen11677ed2018-03-28 14:33:10 -0700560.KATI_READONLY := \
561 TARGET_OUT_EXECUTABLES \
562 TARGET_OUT_OPTIONAL_EXECUTABLES \
563 TARGET_OUT_SHARED_LIBRARIES \
564 TARGET_OUT_RENDERSCRIPT_BITCODE \
565 TARGET_OUT_JAVA_LIBRARIES \
566 TARGET_OUT_APPS \
567 TARGET_OUT_APPS_PRIVILEGED \
568 TARGET_OUT_KEYLAYOUT \
569 TARGET_OUT_KEYCHARS \
570 TARGET_OUT_ETC \
571 TARGET_OUT_NOTICE_FILES \
572 TARGET_OUT_FAKE \
Joe Onorato964f4012023-05-06 12:29:01 -0700573 TARGET_OUT_TESTCASES \
574 TARGET_OUT_FLAGS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800575
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700576ifeq ($(SANITIZE_LITE),true)
577# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
578# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
579TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
580else
Alex Light4e358ab2016-06-16 14:47:10 -0700581TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700582endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700583.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER
Alex Light4e358ab2016-06-16 14:47:10 -0700584
Ying Wange1d44c32013-12-27 11:09:36 -0800585# Out for TARGET_2ND_ARCH
Ying Wangc4595862014-06-10 12:04:56 -0700586TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
Anton Hansson19279852019-02-28 17:15:57 +0000587.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700588
589ifneq ($(filter address,$(SANITIZE_TARGET)),)
590 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
591else
592 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
593endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700594$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800595$(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 -0800596$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
Colin Crossd9574462014-01-24 13:37:07 -0800597$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
598$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
Simran Basi7166d1f2017-01-25 15:11:55 -0800599$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700600.KATI_READONLY := \
601 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700602 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \
603 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \
604 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \
605 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \
606 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
607 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
Ying Wange1d44c32013-12-27 11:09:36 -0800608
Nelson Li1f8357f2019-03-14 01:04:05 +0000609MODULE_CLASS_APPS := app
610MODULE_CLASS_EXECUTABLES := bin
611MODULE_CLASS_JAVA_LIBRARIES := framework
612MODULE_CLASS_NATIVE_TESTS := nativetest
613MODULE_CLASS_METRIC_TESTS := benchmarktest
Ying Wang2b6aaa32011-10-27 15:18:39 -0700614TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
Ying Wangc6349742014-01-13 16:14:20 -0800615TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
616TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
617TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework
618TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800619TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
620TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
621TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700622ifeq ($(TARGET_IS_64_BIT),true)
623TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
Julien Desprez188a1dd2016-04-12 10:22:06 +0100624TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64
Steven Morelandcbfba702017-07-11 14:59:30 -0700625TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX)
626TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700627else
Ying Wang4c681742010-07-20 11:08:47 -0700628TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100629TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700630TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
631TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700632endif
Nelson Li1f8357f2019-03-14 01:04:05 +0000633MODULE_CLASS_FAKE := fake_packages
Tsu Chiang Chuang40da8832012-07-13 13:47:09 -0700634TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700635.KATI_READONLY := \
636 TARGET_OUT_DATA \
637 TARGET_OUT_DATA_EXECUTABLES \
638 TARGET_OUT_DATA_SHARED_LIBRARIES \
639 TARGET_OUT_DATA_JAVA_LIBRARIES \
640 TARGET_OUT_DATA_APPS \
641 TARGET_OUT_DATA_KEYLAYOUT \
642 TARGET_OUT_DATA_KEYCHARS \
643 TARGET_OUT_DATA_ETC \
644 TARGET_OUT_DATA_NATIVE_TESTS \
645 TARGET_OUT_DATA_METRIC_TESTS \
646 TARGET_OUT_VENDOR_NATIVE_TESTS \
647 TARGET_OUT_VENDOR_METRIC_TESTS \
Nelson Li1f8357f2019-03-14 01:04:05 +0000648 TARGET_OUT_DATA_FAKE \
649 MODULE_CLASS_APPS \
650 MODULE_CLASS_EXECUTABLES \
651 MODULE_CLASS_JAVA_LIBRARIES \
652 MODULE_CLASS_NATIVE_TESTS \
653 MODULE_CLASS_METRIC_TESTS \
654 MODULE_CLASS_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800655
Ying Wange3d06792014-01-23 15:09:04 -0800656$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
657$(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 -0800658$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700659$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100660$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700661$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
662$(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 -0700663.KATI_READONLY := \
664 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \
665 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \
666 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \
667 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \
668 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \
669 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \
670 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \
Ying Wange3d06792014-01-23 15:09:04 -0800671
Ying Wang9f8e8db2011-11-04 11:37:01 -0700672TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
Dan Willemsen11677ed2018-03-28 14:33:10 -0700673.KATI_READONLY := TARGET_OUT_CACHE
Ying Wang9f8e8db2011-11-04 11:37:01 -0700674
Ying Wang2b6aaa32011-10-27 15:18:39 -0700675TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700676.KATI_READONLY := TARGET_OUT_VENDOR
Ivan Krasin74b32b82015-09-18 11:54:43 -0700677ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100678target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700679ifeq ($(SANITIZE_LITE),true)
680# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
681# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100682target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700683else
684target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
685endif
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700686else
687target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700688target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700689endif
690
Ying Wangc6349742014-01-13 16:14:20 -0800691TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
692TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700693ifeq ($(TARGET_IS_64_BIT),true)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700694TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800695else
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700696TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800697endif
Miao Wang57be5642017-03-01 19:39:19 -0800698TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800699TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700700TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app
701TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app
Ying Wang8f779362011-09-13 13:57:26 -0700702TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
Cole Faust976a52c2023-10-03 12:58:27 -0700703TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700704.KATI_READONLY := \
705 TARGET_OUT_VENDOR_EXECUTABLES \
706 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \
707 TARGET_OUT_VENDOR_SHARED_LIBRARIES \
708 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
709 TARGET_OUT_VENDOR_JAVA_LIBRARIES \
710 TARGET_OUT_VENDOR_APPS \
711 TARGET_OUT_VENDOR_APPS_PRIVILEGED \
Cole Faust976a52c2023-10-03 12:58:27 -0700712 TARGET_OUT_VENDOR_ETC \
713 TARGET_OUT_VENDOR_FAKE
Ying Wang8f779362011-09-13 13:57:26 -0700714
Ying Wange3d06792014-01-23 15:09:04 -0800715$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
Andreas Gampecf6268f2016-06-30 20:20:38 -0700716$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Miao Wang57be5642017-03-01 19:39:19 -0800717$(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 -0800718$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
Hung-ying Tyan665e7402016-07-20 17:51:56 +0800719$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700720.KATI_READONLY := \
721 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \
722 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \
723 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
724 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \
725 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED
Ying Wang61d499b2014-01-15 16:02:16 -0800726
Ying Wangb8888432014-03-11 17:13:27 -0700727TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
Ying Wangf15250e2014-06-26 14:12:35 -0700728TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
Ying Wang4540a852015-03-12 18:30:39 -0700729ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangf15250e2014-06-26 14:12:35 -0700730TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
731else
732TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
733endif
Ying Wangb8888432014-03-11 17:13:27 -0700734# We don't expect Java libraries in the oem.img.
735# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
Ying Wangf15250e2014-06-26 14:12:35 -0700736TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
Ying Wangb8888432014-03-11 17:13:27 -0700737TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700738.KATI_READONLY := \
739 TARGET_OUT_OEM \
740 TARGET_OUT_OEM_EXECUTABLES \
741 TARGET_OUT_OEM_SHARED_LIBRARIES \
742 TARGET_OUT_OEM_APPS \
743 TARGET_OUT_OEM_ETC
Ying Wangb8888432014-03-11 17:13:27 -0700744
Ying Wangf15250e2014-06-26 14:12:35 -0700745$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
746$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
747$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700748.KATI_READONLY := \
749 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \
750 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \
751 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
Ying Wangf15250e2014-06-26 14:12:35 -0700752
Ying Wang4540a852015-03-12 18:30:39 -0700753TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800754ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100755target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800756ifeq ($(SANITIZE_LITE),true)
757# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
758# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100759target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Ying Wang4540a852015-03-12 18:30:39 -0700760else
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800761target_out_odm_app_base := $(TARGET_OUT_ODM)
Ying Wang4540a852015-03-12 18:30:39 -0700762endif
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800763else
764target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
765target_out_odm_app_base := $(TARGET_OUT_ODM)
766endif
767
768TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
769TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
770ifeq ($(TARGET_IS_64_BIT),true)
771TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
772else
773TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
774endif
775TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
776TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
777TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
778TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
Ying Wang4540a852015-03-12 18:30:39 -0700779TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700780.KATI_READONLY := \
781 TARGET_OUT_ODM \
782 TARGET_OUT_ODM_EXECUTABLES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800783 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700784 TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800785 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
786 TARGET_OUT_ODM_JAVA_LIBRARIES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700787 TARGET_OUT_ODM_APPS \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800788 TARGET_OUT_ODM_APPS_PRIVILEGED \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700789 TARGET_OUT_ODM_ETC
Ying Wang4540a852015-03-12 18:30:39 -0700790
791$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800792$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800793$(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 -0700794$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800795$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700796.KATI_READONLY := \
797 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
798 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800799 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
800 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
801 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
Ying Wang4540a852015-03-12 18:30:39 -0700802
Yifan Hongcfb917a2020-05-07 14:58:20 -0700803TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM)
804
805TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc
806.KATI_READONLY := \
807 TARGET_OUT_VENDOR_DLKM_ETC
808
809# Unlike other partitions, vendor_dlkm should only contain kernel modules.
810TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
811TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES :=
812TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
813TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
814TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES :=
815TARGET_OUT_VENDOR_DLKM_APPS :=
816TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
817$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
818$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
819$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
820$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS :=
821$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
822$(KATI_obsolete_var \
823 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
824 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \
825 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
826 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
827 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \
828 TARGET_OUT_VENDOR_DLKM_APPS \
829 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
830 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
831 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
832 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
833 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \
834 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
835 , vendor_dlkm should not contain any executables, libraries, or apps)
836
Yifan Hongf496f1b2020-07-15 16:52:59 -0700837TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM)
838
839TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc
840.KATI_READONLY := \
841 TARGET_OUT_ODM_DLKM_ETC
842
843# Unlike other partitions, odm_dlkm should only contain kernel modules.
844TARGET_OUT_ODM_DLKM_EXECUTABLES :=
845TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES :=
846TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
847TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
848TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES :=
849TARGET_OUT_ODM_DLKM_APPS :=
850TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
851$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES :=
852$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
853$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
854$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS :=
855$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
856$(KATI_obsolete_var \
857 TARGET_OUT_ODM_DLKM_EXECUTABLES \
858 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \
859 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
860 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
861 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \
862 TARGET_OUT_ODM_DLKM_APPS \
863 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
864 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \
865 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
866 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
867 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \
868 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
869 , odm_dlkm should not contain any executables, libraries, or apps)
870
Ramji Jiyani13a41372022-01-27 07:05:08 +0000871TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
872
873# Unlike other partitions, system_dlkm should only contain kernel modules.
874TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
875TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES :=
876TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
877TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
878TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES :=
879TARGET_OUT_SYSTEM_DLKM_APPS :=
880TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
881$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
882$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
883$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
884$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS :=
885$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
886$(KATI_obsolete_var \
887 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
888 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \
889 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
890 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
891 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \
892 TARGET_OUT_SYSTEM_DLKM_APPS \
893 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
894 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
895 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
896 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
897 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \
898 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
899 , system_dlkm should not contain any executables, libraries, or apps)
900
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900901TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
Doheon Lee09d9b902018-06-25 10:56:01 +0900902TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700903.KATI_READONLY := TARGET_OUT_PRODUCT
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900904ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100905target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900906ifeq ($(SANITIZE_LITE),true)
907# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
908# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100909target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900910else
911target_out_product_app_base := $(TARGET_OUT_PRODUCT)
912endif
913else
Inseob Kim47c13522018-05-04 11:20:43 +0900914target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900915target_out_product_app_base := $(TARGET_OUT_PRODUCT)
916endif
917
918ifeq ($(TARGET_IS_64_BIT),true)
919TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64
920else
921TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
922endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700923TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900924TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app
925TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app
926TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700927.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900928 TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700929 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
930 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \
931 TARGET_OUT_PRODUCT_APPS \
932 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \
933 TARGET_OUT_PRODUCT_ETC
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900934
Doheon Lee09d9b902018-06-25 10:56:01 +0900935$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900936$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900937$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS)
938$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700939.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900940 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700941 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
942 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
943 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900944
Justin Yun6151e3f2019-06-25 15:58:13 +0900945TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100946ifneq ($(filter address,$(SANITIZE_TARGET)),)
Justin Yun6151e3f2019-06-25 15:58:13 +0900947target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100948ifeq ($(SANITIZE_LITE),true)
949# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
950# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Justin Yun6151e3f2019-06-25 15:58:13 +0900951target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100952else
Justin Yun6151e3f2019-06-25 15:58:13 +0900953target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100954endif
955else
Justin Yun6151e3f2019-06-25 15:58:13 +0900956target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT)
957target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100958endif
959
960ifeq ($(TARGET_IS_64_BIT),true)
Justin Yun6151e3f2019-06-25 15:58:13 +0900961TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64
Dario Freni5f681e12018-05-29 13:09:01 +0100962else
Justin Yun6151e3f2019-06-25 15:58:13 +0900963TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
Dario Freni5f681e12018-05-29 13:09:01 +0100964endif
Justin Yun6151e3f2019-06-25 15:58:13 +0900965TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework
966TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app
967TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app
968TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900969TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin
970.KATI_READONLY := \
971 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
972 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
973 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \
974 TARGET_OUT_SYSTEM_EXT_APPS \
975 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \
976 TARGET_OUT_SYSTEM_EXT_ETC
Dario Freni5f681e12018-05-29 13:09:01 +0100977
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900978$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES)
Justin Yun6151e3f2019-06-25 15:58:13 +0900979$(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 +0900980$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS)
981$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900982.KATI_READONLY := \
983 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
984 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
985 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
986 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
Dario Freni5f681e12018-05-29 13:09:01 +0100987
Steve Fungdfbab492015-09-24 18:12:33 -0700988TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
Dan Willemsen11677ed2018-03-28 14:33:10 -0700989.KATI_READONLY := TARGET_OUT_BREAKPAD
Steve Fungdfbab492015-09-24 18:12:33 -0700990
The Android Open Source Project88b60792009-03-03 19:28:42 -0800991TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
992TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
993TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
Colin Crossa58f8e02014-06-20 13:33:36 -0700994TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
The Android Open Source Project88b60792009-03-03 19:28:42 -0800995TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800996TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
Ryan Campbell737bc022016-09-15 17:32:13 -0700997TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
Dan Willemsen11677ed2018-03-28 14:33:10 -0700998.KATI_READONLY := \
999 TARGET_OUT_UNSTRIPPED \
1000 TARGET_OUT_EXECUTABLES_UNSTRIPPED \
1001 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \
1002 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \
1003 TARGET_ROOT_OUT_UNSTRIPPED \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001004 TARGET_ROOT_OUT_BIN_UNSTRIPPED \
1005 TARGET_OUT_COVERAGE
The Android Open Source Project88b60792009-03-03 19:28:42 -08001006
Tom Cherryd14b8952018-08-09 14:26:00 -07001007TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
1008TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
Bowgo Tsai0013f552019-03-20 17:59:52 +08001009TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
Bowgo Tsai6a683672020-02-14 19:00:15 +08001010TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK)
Bowgo Tsai5c40c712019-10-08 10:22:19 +08001011TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK)
Tom Cherryd14b8952018-08-09 14:26:00 -07001012
Ramji Jiyani10655232022-01-20 06:43:09 +00001013TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
1014.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT
1015
Steve Mucklee1b10862019-07-10 10:49:37 -07001016TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK)
Lucas Weif57333f2022-02-24 10:30:15 +08001017TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK)
Steve Mucklee1b10862019-07-10 10:49:37 -07001018
Ying Wang2b6aaa32011-10-27 15:18:39 -07001019TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001020TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
The Android Open Source Project88b60792009-03-03 19:28:42 -08001021TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
1022TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
Dan Willemsen11677ed2018-03-28 14:33:10 -07001023.KATI_READONLY := \
1024 TARGET_ROOT_OUT \
1025 TARGET_ROOT_OUT_BIN \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001026 TARGET_ROOT_OUT_ETC \
1027 TARGET_ROOT_OUT_USR
The Android Open Source Project88b60792009-03-03 19:28:42 -08001028
Ying Wang2b6aaa32011-10-27 15:18:39 -07001029TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001030TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
Dan Willemsen11677ed2018-03-28 14:33:10 -07001031.KATI_READONLY := \
1032 TARGET_RECOVERY_OUT \
1033 TARGET_RECOVERY_ROOT_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001034
1035TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
1036TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
1037TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001038.KATI_READONLY := \
1039 TARGET_SYSLOADER_OUT \
1040 TARGET_SYSLOADER_ROOT_OUT \
1041 TARGET_SYSLOADER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001042
1043TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
1044TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
1045TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
1046TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001047.KATI_READONLY := \
1048 TARGET_INSTALLER_OUT \
1049 TARGET_INSTALLER_DATA_OUT \
1050 TARGET_INSTALLER_ROOT_OUT \
1051 TARGET_INSTALLER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001052
Dan Willemsen8447b812020-06-08 21:00:18 -07001053COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES
Ivan Lozanod62e7122019-08-27 11:23:35 -07001054PER_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 -07001055.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES
The Android Open Source Project88b60792009-03-03 19:28:42 -08001056
Dan Willemsen20f99a62017-10-12 01:35:14 -07001057ifeq ($(CALLED_FROM_SETUP),true)
Dan Willemsen0d255292017-02-18 10:32:13 -08001058PRINT_BUILD_CONFIG ?= true
The Android Open Source Project88b60792009-03-03 19:28:42 -08001059endif