blob: cfb8a6618bac786c47bf49fc68f9edfeb6b24661 [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
53# ---------------------------------------------------------------
Jeff Hamilton426a9f82023-10-19 04:54:15 +000054# Set up version information
55include $(BUILD_SYSTEM)/version_util.mk
Colin Crossc9016592017-03-28 13:07:56 -070056
Jeff Hamilton426a9f82023-10-19 04:54:15 +000057# This used to be calculated, but is now fixed and not expected
58# to change over time anymore. New code attempting to use a
59# variable like IS_AT_LAST_* should instead use a
60# build system flag.
Colin Crossc9016592017-03-28 13:07:56 -070061
Jeff Hamilton426a9f82023-10-19 04:54:15 +000062ENABLED_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 -070063
64$(foreach v,$(ENABLED_VERSIONS), \
65 $(eval IS_AT_LEAST_$(v) := true))
66
The Android Open Source Project88b60792009-03-03 19:28:42 -080067# ---------------------------------------------------------------
68# If you update the build system such that the environment setup
69# or buildspec.mk need to be updated, increment this number, and
70# people who haven't re-run those will have to do so before they
71# can build. Make sure to also update the corresponding value in
72# buildspec.mk.default and envsetup.sh.
Colin Cross88737132017-03-21 17:41:03 -070073CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13
The Android Open Source Project88b60792009-03-03 19:28:42 -080074
75# ---------------------------------------------------------------
Jeff Browne33ba4c2011-07-11 22:11:46 -070076# The product defaults to generic on hardware
The Android Open Source Project88b60792009-03-03 19:28:42 -080077ifeq ($(TARGET_PRODUCT),)
Ying Wang0a76df52015-06-08 11:57:26 -070078TARGET_PRODUCT := aosp_arm
The Android Open Source Project88b60792009-03-03 19:28:42 -080079endif
The Android Open Source Project88b60792009-03-03 19:28:42 -080080
81
82# the variant -- the set of files that are included for a build
83ifeq ($(strip $(TARGET_BUILD_VARIANT)),)
84TARGET_BUILD_VARIANT := eng
85endif
86
Dan Willemsen8a5d5972019-07-29 14:22:05 -070087TARGET_BUILD_APPS ?=
Jeongik Chad05b57a2020-07-08 18:10:38 +090088TARGET_BUILD_UNBUNDLED_IMAGE ?=
Dan Willemsen8a5d5972019-07-29 14:22:05 -070089
Martin Stjernholm7a430fd2020-06-04 15:16:39 +010090# Set to true for an unbundled build, i.e. a build without
91# support for platform targets like the system image. This also
92# disables consistency checks that only apply to full platform
93# builds.
94TARGET_BUILD_UNBUNDLED ?=
95
96# TARGET_BUILD_APPS implies unbundled build, otherwise we default
97# to bundled (i.e. platform targets such as the system image are
98# included).
99ifneq ($(TARGET_BUILD_APPS),)
100 TARGET_BUILD_UNBUNDLED := true
101endif
102
Jeongik Chad05b57a2020-07-08 18:10:38 +0900103# TARGET_BUILD_UNBUNDLED_IMAGE also implies unbundled build.
104# (i.e. it targets to only unbundled image, such as the vendor image,
105# ,or the product image).
106ifneq ($(TARGET_BUILD_UNBUNDLED_IMAGE),)
107 TARGET_BUILD_UNBUNDLED := true
108endif
109
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700110.KATI_READONLY := \
111 TARGET_PRODUCT \
112 TARGET_BUILD_VARIANT \
Martin Stjernholm7a430fd2020-06-04 15:16:39 +0100113 TARGET_BUILD_APPS \
114 TARGET_BUILD_UNBUNDLED \
Jeongik Chad05b57a2020-07-08 18:10:38 +0900115 TARGET_BUILD_UNBUNDLED_IMAGE \
Dan Willemsen8a5d5972019-07-29 14:22:05 -0700116
The Android Open Source Project88b60792009-03-03 19:28:42 -0800117# ---------------------------------------------------------------
118# Set up configuration for host machine. We don't do cross-
Elliott Hughesf71c05a2020-03-06 16:46:59 -0800119# compiles except for arm, so the HOST is whatever we are
The Android Open Source Project88b60792009-03-03 19:28:42 -0800120# running on
121
The Android Open Source Project88b60792009-03-03 19:28:42 -0800122# HOST_OS
123ifneq (,$(findstring Linux,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700124 HOST_OS := linux
The Android Open Source Project88b60792009-03-03 19:28:42 -0800125endif
126ifneq (,$(findstring Darwin,$(UNAME)))
Ying Wang6feb6d52014-04-17 10:03:35 -0700127 HOST_OS := darwin
The Android Open Source Project88b60792009-03-03 19:28:42 -0800128endif
Raphael9ca16282010-04-16 17:50:09 -0700129
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700130ifeq ($(CALLED_FROM_SETUP),true)
131 HOST_OS_EXTRA := $(shell uname -rsm)
132 ifeq ($(HOST_OS),linux)
133 ifneq ($(wildcard /etc/os-release),)
134 HOST_OS_EXTRA += $(shell source /etc/os-release; echo $$PRETTY_NAME)
135 endif
136 else ifeq ($(HOST_OS),darwin)
137 HOST_OS_EXTRA += $(shell sw_vers -productVersion)
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700138 endif
Peter Collingbourne0d06f702022-11-02 15:26:31 -0700139 HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA))
Dan Willemsence7f8dd2017-07-25 00:57:38 -0700140endif
Ying Wang08800fd2016-03-03 20:57:21 -0800141
Raphael9ca16282010-04-16 17:50:09 -0700142# BUILD_OS is the real host doing the build.
143BUILD_OS := $(HOST_OS)
144
Jiyong Parke80c45f2020-07-13 13:53:52 +0900145# We can do the cross-build only on Linux
Raphael9ca16282010-04-16 17:50:09 -0700146ifeq ($(HOST_OS),linux)
Jiyong Parke80c45f2020-07-13 13:53:52 +0900147 # Windows has been the default host_cross OS
148 ifeq (,$(filter-out windows,$(HOST_CROSS_OS)))
149 # We can only create static host binaries for Linux, so if static host
150 # binaries are requested, turn off Windows cross-builds.
151 ifeq ($(BUILD_HOST_static),)
152 HOST_CROSS_OS := windows
153 HOST_CROSS_ARCH := x86
154 HOST_CROSS_2ND_ARCH := x86_64
155 2ND_HOST_CROSS_IS_64_BIT := true
156 endif
157 else ifeq ($(HOST_CROSS_OS),linux_bionic)
158 ifeq (,$(HOST_CROSS_ARCH))
159 $(error HOST_CROSS_ARCH missing.)
160 endif
161 else
162 $(error Unsupported HOST_CROSS_OS $(HOST_CROSS_OS))
163 endif
Dan Willemsen88208402021-10-19 00:30:37 -0700164else ifeq ($(HOST_OS),darwin)
165 HOST_CROSS_OS := darwin
166 HOST_CROSS_ARCH := arm64
167 HOST_CROSS_2ND_ARCH :=
Dan Willemsen2a6e3b02017-11-06 11:03:28 -0800168endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800169
170ifeq ($(HOST_OS),)
171$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!)
172endif
173
The Android Open Source Project88b60792009-03-03 19:28:42 -0800174# HOST_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700175ifneq (,$(findstring x86_64,$(UNAME)))
Ying Wang2713fce2014-06-09 12:31:12 -0700176 HOST_ARCH := x86_64
177 HOST_2ND_ARCH := x86
Ying Wang4b1c95d2014-07-08 17:07:36 -0700178 HOST_IS_64_BIT := true
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700179else
Dan Willemsen88225fd2016-06-29 12:26:53 -0700180ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME)))
Brian Carlstrom2cd8a742015-03-20 11:39:00 -0700181$(error Building on a 32-bit x86 host is not supported: $(UNAME)!)
182endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800183endif
184
Dan Willemsen1d090fc2018-08-28 01:51:25 -0700185ifeq ($(HOST_OS),darwin)
186 # Mac no longer supports 32-bit executables
187 HOST_2ND_ARCH :=
188endif
189
Anton Hansson19279852019-02-28 17:15:57 +0000190HOST_2ND_ARCH_VAR_PREFIX := 2ND_
191HOST_2ND_ARCH_MODULE_SUFFIX := _32
192HOST_CROSS_2ND_ARCH_VAR_PREFIX := 2ND_
193HOST_CROSS_2ND_ARCH_MODULE_SUFFIX := _64
194TARGET_2ND_ARCH_VAR_PREFIX := 2ND_
195.KATI_READONLY := \
196 HOST_ARCH \
197 HOST_2ND_ARCH \
198 HOST_IS_64_BIT \
199 HOST_2ND_ARCH_VAR_PREFIX \
200 HOST_2ND_ARCH_MODULE_SUFFIX \
201 HOST_CROSS_2ND_ARCH_VAR_PREFIX \
202 HOST_CROSS_2ND_ARCH_MODULE_SUFFIX \
203 TARGET_2ND_ARCH_VAR_PREFIX \
204
205combo_target := HOST_
206combo_2nd_arch_prefix :=
207include $(BUILD_COMBOS)/select.mk
208
209ifdef HOST_2ND_ARCH
210 combo_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
211 include $(BUILD_SYSTEM)/combo/select.mk
212endif
213
214# Load the windows cross compiler under Linux
215ifdef HOST_CROSS_OS
216 combo_target := HOST_CROSS_
217 combo_2nd_arch_prefix :=
218 include $(BUILD_SYSTEM)/combo/select.mk
219
220 ifdef HOST_CROSS_2ND_ARCH
221 combo_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
222 include $(BUILD_SYSTEM)/combo/select.mk
223 endif
224endif
225
226# on windows, the tools have .exe at the end, and we depend on the
227# host config stuff being done first
228
Raphael9ca16282010-04-16 17:50:09 -0700229BUILD_ARCH := $(HOST_ARCH)
Ying Wang6feb6d52014-04-17 10:03:35 -0700230BUILD_2ND_ARCH := $(HOST_2ND_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700231
The Android Open Source Project88b60792009-03-03 19:28:42 -0800232ifeq ($(HOST_ARCH),)
233$(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!)
234endif
235
236# the host build defaults to release, and it must be release or debug
237ifeq ($(HOST_BUILD_TYPE),)
238HOST_BUILD_TYPE := release
239endif
240
241ifneq ($(HOST_BUILD_TYPE),release)
242ifneq ($(HOST_BUILD_TYPE),debug)
243$(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)')
244endif
245endif
246
Ying Wang6feb6d52014-04-17 10:03:35 -0700247# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir.
248HOST_PREBUILT_ARCH := x86
The Android Open Source Project88b60792009-03-03 19:28:42 -0800249# This is the standard way to name a directory containing prebuilt host
250# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc
Dan Albert216ecac2015-05-04 12:44:44 -0700251HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800252
Ying Wang2b6aaa32011-10-27 15:18:39 -0700253# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT.
254# Define them here so they can be used in product config files.
255TARGET_COPY_OUT_SYSTEM := system
Ramji Jiyani10655232022-01-20 06:43:09 +0000256TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm
Alex Light4e358ab2016-06-16 14:47:10 -0700257TARGET_COPY_OUT_SYSTEM_OTHER := system_other
Ying Wang2b6aaa32011-10-27 15:18:39 -0700258TARGET_COPY_OUT_DATA := data
Vishwath Mohanb285c462017-03-29 15:32:04 -0700259TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan
Ying Wangb8888432014-03-11 17:13:27 -0700260TARGET_COPY_OUT_OEM := oem
Tom Cherryd14b8952018-08-09 14:26:00 -0700261TARGET_COPY_OUT_RAMDISK := ramdisk
Bowgo Tsai0013f552019-03-20 17:59:52 +0800262TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk
Bowgo Tsai6a683672020-02-14 19:00:15 +0800263TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk
Bowgo Tsai5c40c712019-10-08 10:22:19 +0800264TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk
Ying Wang2b6aaa32011-10-27 15:18:39 -0700265TARGET_COPY_OUT_ROOT := root
266TARGET_COPY_OUT_RECOVERY := recovery
Anton Hansson379b2ba2018-10-02 14:10:16 +0100267# The directory used for optional partitions depend on the BoardConfig, so
268# they're defined to placeholder values here and swapped after reading the
269# BoardConfig, to be either the partition dir, or a subdir within 'system'.
270_vendor_path_placeholder := ||VENDOR-PATH-PH||
271_product_path_placeholder := ||PRODUCT-PATH-PH||
Justin Yun6151e3f2019-06-25 15:58:13 +0900272_system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100273_odm_path_placeholder := ||ODM-PATH-PH||
Yifan Hongcfb917a2020-05-07 14:58:20 -0700274_vendor_dlkm_path_placeholder := ||VENDOR_DLKM-PATH-PH||
Yifan Hongf496f1b2020-07-15 16:52:59 -0700275_odm_dlkm_path_placeholder := ||ODM_DLKM-PATH-PH||
Ramji Jiyani13a41372022-01-27 07:05:08 +0000276_system_dlkm_path_placeholder := ||SYSTEM_DLKM-PATH-PH||
Anton Hansson379b2ba2018-10-02 14:10:16 +0100277TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder)
Petri Gyntherdc24d882021-03-02 23:54:08 -0800278TARGET_COPY_OUT_VENDOR_RAMDISK := vendor_ramdisk
Lucas Weif57333f2022-02-24 10:30:15 +0800279TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK := vendor_kernel_ramdisk
Anton Hansson379b2ba2018-10-02 14:10:16 +0100280TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder)
Justin Yun6151e3f2019-06-25 15:58:13 +0900281# TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to
282# product
283TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder)
284TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder)
Anton Hansson379b2ba2018-10-02 14:10:16 +0100285TARGET_COPY_OUT_ODM := $(_odm_path_placeholder)
Yifan Hongcfb917a2020-05-07 14:58:20 -0700286TARGET_COPY_OUT_VENDOR_DLKM := $(_vendor_dlkm_path_placeholder)
Yifan Hongf496f1b2020-07-15 16:52:59 -0700287TARGET_COPY_OUT_ODM_DLKM := $(_odm_dlkm_path_placeholder)
Ramji Jiyani13a41372022-01-27 07:05:08 +0000288TARGET_COPY_OUT_SYSTEM_DLKM := $(_system_dlkm_path_placeholder)
Vishwath Mohand4dbf792017-05-16 14:27:34 -0700289
290# Returns the non-sanitized version of the path provided in $1.
291define get_non_asan_path
292$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1)
293endef
294
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700295#################################################################
296# Set up minimal BOOTCLASSPATH list of jars to build/execute
297# java code with dalvikvm/art.
Martin Stjernholm743513c2021-07-05 20:53:57 +0100298# Jars present in the ART apex. These should match exactly the list of Java
299# libraries in art-bootclasspath-fragment. The APEX variant name
300# (com.android.art) is the same regardless which Soong module provides the ART
301# APEX. See the long comment in build/soong/java/dexprepopt_bootjars.go for
302# details.
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100303ART_APEX_JARS := \
304 com.android.art:core-oj \
305 com.android.art:core-libart \
Ulya Trafimovich4c69c2f2020-04-30 10:59:48 +0100306 com.android.art:okhttp \
307 com.android.art:bouncycastle \
308 com.android.art:apache-xml
Martin Stjernholmfa832282021-02-17 12:26:19 +0000309# With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco.
310ifeq (true,$(EMMA_INSTRUMENT_FRAMEWORK))
311 ART_APEX_JARS += com.android.art:jacocoagent
312endif
Igor Murashkin9d4639c2017-06-15 10:41:02 -0700313#################################################################
314
Cole Faustf1f49bb2021-12-01 13:49:12 -0800315# Dumps all variables that match [A-Z][A-Z0-9_]* (with a few exceptions)
316# to the file at $(1). It is used to print only the variables that are
317# likely to be relevant to the product or board configuration.
Cole Faustc7226592022-01-12 21:20:07 -0800318# Soong config variables are dumped as $(call soong_config_set) calls
319# instead of the raw variable values, because mk2rbc can't read the
Cole Fausta1b215c2022-07-21 08:08:32 -0700320# raw ones. There is a final sed command on the output file to
321# remove leading spaces because I couldn't figure out how to remove
322# them in pure make code.
Cole Faustf1f49bb2021-12-01 13:49:12 -0800323define dump-variables-rbc
Cole Faust0a746002022-03-24 12:21:55 -0700324$(eval _dump_variables_rbc_excluded := \
Cole Faustec8316d2022-04-04 11:52:52 -0700325 BUILD_NUMBER \
326 DATE \
Cole Faust0a746002022-03-24 12:21:55 -0700327 LOCAL_PATH \
Cole Faustec8316d2022-04-04 11:52:52 -0700328 MAKEFILE_LIST \
329 PRODUCTS \
330 PRODUCT_COPY_OUT_% \
331 RBC_PRODUCT_CONFIG \
332 RBC_BOARD_CONFIG \
333 SOONG_% \
Joe Onorato964f4012023-05-06 12:29:01 -0700334 TARGET_RELEASE \
Cole Faust0a746002022-03-24 12:21:55 -0700335 TOPDIR \
336 TRACE_BEGIN_SOONG \
Cole Faustec8316d2022-04-04 11:52:52 -0700337 USER)
338$(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 -0800339$(file >$(1),\
Cole Faust971ef8e2022-04-06 11:58:37 -0700340$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\
Cole Faustc7226592022-01-12 21:20:07 -0800341$(v) := $(strip $($(v)))$(newline))\
Cole Faustec8316d2022-04-04 11:52:52 -0700342$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\
343$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\
Cole Faustc7226592022-01-12 21:20:07 -0800344$$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline))))
Cole Fausta1b215c2022-07-21 08:08:32 -0700345$(shell sed -i "s/^ *//g" $(1))
Cole Faustf1f49bb2021-12-01 13:49:12 -0800346endef
347
Ying Wang6aef0472014-07-23 20:20:49 -0700348# Read the product specs so we can get TARGET_DEVICE and other
Ryo Fujiicbb32662011-06-16 16:58:11 -0700349# variables that we need in order to locate the output files.
350include $(BUILD_SYSTEM)/product_config.mk
Jesse Wilsonce7d5022010-09-22 10:59:10 -0700351
Ying Wangd0244b32011-11-17 14:51:12 -0800352build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT))
Ryo Fujiicbb32662011-06-16 16:58:11 -0700353ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1)
354$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT))
Ying Wangd0244b32011-11-17 14:51:12 -0800355$(error must be empty or one of: eng user userdebug)
Ryo Fujiicbb32662011-06-16 16:58:11 -0700356endif
The Android Open Source Project88b60792009-03-03 19:28:42 -0800357
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700358SDK_HOST_ARCH := x86
Anton Hansson19279852019-02-28 17:15:57 +0000359TARGET_OS := linux
Ying Wang7ba7d7f2014-09-02 15:11:20 -0700360
Cole Faust52e5d9c2021-11-30 11:24:33 -0800361# Some board configuration files use $(PRODUCT_OUT)
362TARGET_OUT_ROOT := $(OUT_DIR)/target
363TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product
364PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)
365.KATI_READONLY := TARGET_OUT_ROOT TARGET_PRODUCT_OUT_ROOT PRODUCT_OUT
366
Anton Hanssonbb76ce82019-02-26 12:34:03 +0000367include $(BUILD_SYSTEM)/board_config.mk
Jiyong Park641b6cc2018-01-15 14:48:40 +0900368
The Android Open Source Project88b60792009-03-03 19:28:42 -0800369# the target build type defaults to release
370ifneq ($(TARGET_BUILD_TYPE),debug)
371TARGET_BUILD_TYPE := release
372endif
373
Cole Faust7aa649a2023-11-03 12:27:43 -0700374include $(BUILD_SYSTEM)/product_validation_checks.mk
375
The Android Open Source Project88b60792009-03-03 19:28:42 -0800376# ---------------------------------------------------------------
377# figure out the output directories
378
Dan Willemsen60d9c672016-05-27 15:15:47 -0700379SOONG_OUT_DIR := $(OUT_DIR)/soong
380
Dan Willemsend6ed3682017-09-08 14:29:51 -0700381HOST_OUT_ROOT := $(OUT_DIR)/host
The Android Open Source Project88b60792009-03-03 19:28:42 -0800382
Cole Faust52e5d9c2021-11-30 11:24:33 -0800383.KATI_READONLY := SOONG_OUT_DIR HOST_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700384
Ying Wang6feb6d52014-04-17 10:03:35 -0700385# We want to avoid two host bin directories in multilib build.
Dan Willemsend6ed3682017-09-08 14:29:51 -0700386HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH)
Colin Crossda166c52021-11-18 15:42:19 -0800387
388# Soong now installs to the same directory as Make.
389SOONG_HOST_OUT := $(HOST_OUT)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800390
Jiyong Parkeccc4612020-07-13 19:19:27 +0900391HOST_CROSS_OUT := $(HOST_OUT_ROOT)/$(HOST_CROSS_OS)-$(HOST_CROSS_ARCH)
Raphael9ca16282010-04-16 17:50:09 -0700392
Dan Willemsen11677ed2018-03-28 14:33:10 -0700393.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT
394
The Android Open Source Project88b60792009-03-03 19:28:42 -0800395TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common
396HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common
397
Cole Faust52e5d9c2021-11-30 11:24:33 -0800398.KATI_READONLY := TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT
Dan Willemsen11677ed2018-03-28 14:33:10 -0700399
The Android Open Source Project88b60792009-03-03 19:28:42 -0800400OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs
Dan Albert303e6032017-10-04 10:20:20 -0700401OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs
Dan Willemsen11677ed2018-03-28 14:33:10 -0700402.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800403
Dan Willemsen11677ed2018-03-28 14:33:10 -0700404$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead)
405
406BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin
Dan Willemsen60d9c672016-05-27 15:15:47 -0700407SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700408.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES
Raphael9ca16282010-04-16 17:50:09 -0700409
Ying Wangc6349742014-01-13 16:14:20 -0800410HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin
Ying Wang36ef50f2014-06-30 17:06:21 -0700411HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64
Ivan Lozanod62e7122019-08-27 11:23:35 -0700412HOST_OUT_DYLIB_LIBRARIES := $(HOST_OUT)/lib64
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800413HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800414HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework
Joe Onorato64d85d02009-04-09 19:31:12 -0700415HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800416HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64
Ryan Campbell81c9d292016-09-12 13:56:50 -0700417HOST_OUT_COVERAGE := $(HOST_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700418HOST_OUT_TESTCASES := $(HOST_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700419.KATI_READONLY := \
420 HOST_OUT_EXECUTABLES \
421 HOST_OUT_SHARED_LIBRARIES \
422 HOST_OUT_RENDERSCRIPT_BITCODE \
423 HOST_OUT_JAVA_LIBRARIES \
424 HOST_OUT_SDK_ADDON \
425 HOST_OUT_NATIVE_TESTS \
426 HOST_OUT_COVERAGE \
427 HOST_OUT_TESTCASES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800428
Dan Willemsen057aaea2015-08-14 12:59:50 -0700429HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin
430HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800431HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest
Ryan Campbell81c9d292016-09-12 13:56:50 -0700432HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage
Colin Crosse887ccb2018-03-16 22:09:50 -0700433HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases
Dan Willemsen11677ed2018-03-28 14:33:10 -0700434.KATI_READONLY := \
435 HOST_CROSS_OUT_EXECUTABLES \
436 HOST_CROSS_OUT_SHARED_LIBRARIES \
437 HOST_CROSS_OUT_NATIVE_TESTS \
438 HOST_CROSS_OUT_COVERAGE \
439 HOST_CROSS_OUT_TESTCASES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700440
The Android Open Source Project88b60792009-03-03 19:28:42 -0800441HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj
Ying Wangc6349742014-01-13 16:14:20 -0800442HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800443HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj
Ying Wangec900ac2013-11-13 15:56:18 -0800444HOST_OUT_FAKE := $(HOST_OUT)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700445.KATI_READONLY := \
446 HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700447 HOST_OUT_NOTICE_FILES \
448 HOST_OUT_COMMON_INTERMEDIATES \
449 HOST_OUT_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800450
Dan Willemsen057aaea2015-08-14 12:59:50 -0700451HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj
Dan Willemsen057aaea2015-08-14 12:59:50 -0700452HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES
Dan Willemsen11677ed2018-03-28 14:33:10 -0700453.KATI_READONLY := \
454 HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700455 HOST_CROSS_OUT_NOTICE_FILES
Dan Willemsen057aaea2015-08-14 12:59:50 -0700456
Colin Crossd8262642014-01-24 23:17:21 -0800457HOST_OUT_GEN := $(HOST_OUT)/gen
458HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700459.KATI_READONLY := \
460 HOST_OUT_GEN \
461 HOST_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800462
Dan Willemsen057aaea2015-08-14 12:59:50 -0700463HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700464.KATI_READONLY := HOST_CROSS_OUT_GEN
Dan Willemsen057aaea2015-08-14 12:59:50 -0700465
Ying Wang6feb6d52014-04-17 10:03:35 -0700466# Out for HOST_2ND_ARCH
Ying Wang6feb6d52014-04-17 10:03:35 -0700467$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32
Ying Wang966c1e02014-05-20 14:43:51 -0700468$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib
Ying Wang6feb6d52014-04-17 10:03:35 -0700469$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES)
Dan Albertdc941372015-05-04 18:17:52 -0700470$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800471$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest
Simran Basi7166d1f2017-01-25 15:11:55 -0800472$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700473.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700474 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700475 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \
476 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \
477 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \
478 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \
479 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES
Ying Wang6feb6d52014-04-17 10:03:35 -0700480
Ying Wangc4595862014-06-10 12:04:56 -0700481# The default host library path.
482# It always points to the path where we build libraries in the default bitness.
Ying Wang5bac9622014-08-14 11:03:56 -0700483HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700484.KATI_READONLY := HOST_LIBRARY_PATH
Ying Wang6feb6d52014-04-17 10:03:35 -0700485
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800486# Out for HOST_CROSS_2ND_ARCH
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800487$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800488$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64
489$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES)
Dan Willemsen7fe992c2016-03-02 13:54:51 -0800490$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64
Dan Willemsen11677ed2018-03-28 14:33:10 -0700491.KATI_READONLY := \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700492 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700493 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \
494 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \
495 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800496
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700497ifneq ($(filter address,$(SANITIZE_TARGET)),)
498 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan
499else
500 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj
501endif
Ying Wangc6349742014-01-13 16:14:20 -0800502TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include
Dan Willemsen8cf6b652018-09-05 11:01:12 -0700503.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700504
505ifneq ($(filter address,$(SANITIZE_TARGET)),)
506 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan
507else
508 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj
509endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700510.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES
The Android Open Source Project88b60792009-03-03 19:28:42 -0800511
Colin Crossd8262642014-01-24 23:17:21 -0800512TARGET_OUT_GEN := $(PRODUCT_OUT)/gen
513TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen
Dan Willemsen11677ed2018-03-28 14:33:10 -0700514.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN
Colin Crossd8262642014-01-24 23:17:21 -0800515
Ying Wang2b6aaa32011-10-27 15:18:39 -0700516TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700517.KATI_READONLY := TARGET_OUT
Ivan Krasin74b32b82015-09-18 11:54:43 -0700518ifneq ($(filter address,$(SANITIZE_TARGET)),)
Vishwath Mohanb285c462017-03-29 15:32:04 -0700519target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700520ifeq ($(SANITIZE_LITE),true)
521# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
522# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
523target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system
524else
525target_out_app_base := $(TARGET_OUT)
526endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700527else
528target_out_shared_libraries_base := $(TARGET_OUT)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700529target_out_app_base := $(TARGET_OUT)
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700530endif
531
Ying Wangc6349742014-01-13 16:14:20 -0800532TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin
533TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700534ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangc6349742014-01-13 16:14:20 -0800535# /system/lib always contains 32-bit libraries,
536# and /system/lib64 (if present) always contains 64-bit libraries.
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700537TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800538else
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700539TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800540endif
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800541TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800542TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700543TARGET_OUT_APPS := $(target_out_app_base)/app
544TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800545TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout
546TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars
547TARGET_OUT_ETC := $(TARGET_OUT)/etc
Ying Wangc6349742014-01-13 16:14:20 -0800548TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES
Dima Zavin531f5242010-09-27 17:37:17 -0700549TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages
Simran Basi7166d1f2017-01-25 15:11:55 -0800550TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases
Joe Onorato964f4012023-05-06 12:29:01 -0700551TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS
552
Dan Willemsen11677ed2018-03-28 14:33:10 -0700553.KATI_READONLY := \
554 TARGET_OUT_EXECUTABLES \
555 TARGET_OUT_OPTIONAL_EXECUTABLES \
556 TARGET_OUT_SHARED_LIBRARIES \
557 TARGET_OUT_RENDERSCRIPT_BITCODE \
558 TARGET_OUT_JAVA_LIBRARIES \
559 TARGET_OUT_APPS \
560 TARGET_OUT_APPS_PRIVILEGED \
561 TARGET_OUT_KEYLAYOUT \
562 TARGET_OUT_KEYCHARS \
563 TARGET_OUT_ETC \
564 TARGET_OUT_NOTICE_FILES \
565 TARGET_OUT_FAKE \
Joe Onorato964f4012023-05-06 12:29:01 -0700566 TARGET_OUT_TESTCASES \
567 TARGET_OUT_FLAGS
The Android Open Source Project88b60792009-03-03 19:28:42 -0800568
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700569ifeq ($(SANITIZE_LITE),true)
570# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
571# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
572TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
573else
Alex Light4e358ab2016-06-16 14:47:10 -0700574TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700575endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700576.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER
Alex Light4e358ab2016-06-16 14:47:10 -0700577
Ying Wange1d44c32013-12-27 11:09:36 -0800578# Out for TARGET_2ND_ARCH
Ying Wangc4595862014-06-10 12:04:56 -0700579TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX)
Anton Hansson19279852019-02-28 17:15:57 +0000580.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX
Vishwath Mohand8eabaa2017-05-09 19:36:54 -0700581
582ifneq ($(filter address,$(SANITIZE_TARGET)),)
583 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan
584else
585 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)
586endif
Evgenii Stepanov4d3d4142015-06-11 17:32:31 -0700587$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib
Dan Willemsenc6e194f2016-02-13 00:19:40 -0800588$(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 -0800589$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
Colin Crossd9574462014-01-24 13:37:07 -0800590$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS)
591$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED)
Simran Basi7166d1f2017-01-25 15:11:55 -0800592$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700593.KATI_READONLY := \
594 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700595 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \
596 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \
597 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \
598 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \
599 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \
600 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES
Ying Wange1d44c32013-12-27 11:09:36 -0800601
Nelson Li1f8357f2019-03-14 01:04:05 +0000602MODULE_CLASS_APPS := app
603MODULE_CLASS_EXECUTABLES := bin
604MODULE_CLASS_JAVA_LIBRARIES := framework
605MODULE_CLASS_NATIVE_TESTS := nativetest
606MODULE_CLASS_METRIC_TESTS := benchmarktest
Ying Wang2b6aaa32011-10-27 15:18:39 -0700607TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA)
Ying Wangc6349742014-01-13 16:14:20 -0800608TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES)
609TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES)
610TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework
611TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app
The Android Open Source Project88b60792009-03-03 19:28:42 -0800612TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT)
613TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS)
614TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700615ifeq ($(TARGET_IS_64_BIT),true)
616TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64
Julien Desprez188a1dd2016-04-12 10:22:06 +0100617TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64
Steven Morelandcbfba702017-07-11 14:59:30 -0700618TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX)
619TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700620else
Ying Wang4c681742010-07-20 11:08:47 -0700621TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100622TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700623TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
624TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700625endif
Nelson Li1f8357f2019-03-14 01:04:05 +0000626MODULE_CLASS_FAKE := fake_packages
Tsu Chiang Chuang40da8832012-07-13 13:47:09 -0700627TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700628.KATI_READONLY := \
629 TARGET_OUT_DATA \
630 TARGET_OUT_DATA_EXECUTABLES \
631 TARGET_OUT_DATA_SHARED_LIBRARIES \
632 TARGET_OUT_DATA_JAVA_LIBRARIES \
633 TARGET_OUT_DATA_APPS \
634 TARGET_OUT_DATA_KEYLAYOUT \
635 TARGET_OUT_DATA_KEYCHARS \
636 TARGET_OUT_DATA_ETC \
637 TARGET_OUT_DATA_NATIVE_TESTS \
638 TARGET_OUT_DATA_METRIC_TESTS \
639 TARGET_OUT_VENDOR_NATIVE_TESTS \
640 TARGET_OUT_VENDOR_METRIC_TESTS \
Nelson Li1f8357f2019-03-14 01:04:05 +0000641 TARGET_OUT_DATA_FAKE \
642 MODULE_CLASS_APPS \
643 MODULE_CLASS_EXECUTABLES \
644 MODULE_CLASS_JAVA_LIBRARIES \
645 MODULE_CLASS_NATIVE_TESTS \
646 MODULE_CLASS_METRIC_TESTS \
647 MODULE_CLASS_FAKE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800648
Ying Wange3d06792014-01-23 15:09:04 -0800649$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES)
650$(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 -0800651$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS)
Ying Wang4b1c95d2014-07-08 17:07:36 -0700652$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest
Julien Desprez188a1dd2016-04-12 10:22:06 +0100653$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest
Steven Morelandcbfba702017-07-11 14:59:30 -0700654$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX)
655$(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 -0700656.KATI_READONLY := \
657 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \
658 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \
659 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \
660 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \
661 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \
662 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \
663 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \
Ying Wange3d06792014-01-23 15:09:04 -0800664
Ying Wang9f8e8db2011-11-04 11:37:01 -0700665TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache
Dan Willemsen11677ed2018-03-28 14:33:10 -0700666.KATI_READONLY := TARGET_OUT_CACHE
Ying Wang9f8e8db2011-11-04 11:37:01 -0700667
Ying Wang2b6aaa32011-10-27 15:18:39 -0700668TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700669.KATI_READONLY := TARGET_OUT_VENDOR
Ivan Krasin74b32b82015-09-18 11:54:43 -0700670ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100671target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700672ifeq ($(SANITIZE_LITE),true)
673# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
674# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100675target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700676else
677target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
678endif
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700679else
680target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR)
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700681target_out_vendor_app_base := $(TARGET_OUT_VENDOR)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700682endif
683
Ying Wangc6349742014-01-13 16:14:20 -0800684TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin
685TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin
Ying Wang4b1c95d2014-07-08 17:07:36 -0700686ifeq ($(TARGET_IS_64_BIT),true)
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700687TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64
Ying Wangc6349742014-01-13 16:14:20 -0800688else
Evgenii Stepanovbf140972015-06-30 14:02:02 -0700689TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Ying Wangc6349742014-01-13 16:14:20 -0800690endif
Miao Wang57be5642017-03-01 19:39:19 -0800691TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES)
Ying Wangc6349742014-01-13 16:14:20 -0800692TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework
Andreas Gampe4ed21d12017-06-16 10:24:54 -0700693TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app
694TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app
Ying Wang8f779362011-09-13 13:57:26 -0700695TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc
Cole Faust976a52c2023-10-03 12:58:27 -0700696TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages
Dan Willemsen11677ed2018-03-28 14:33:10 -0700697.KATI_READONLY := \
698 TARGET_OUT_VENDOR_EXECUTABLES \
699 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \
700 TARGET_OUT_VENDOR_SHARED_LIBRARIES \
701 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
702 TARGET_OUT_VENDOR_JAVA_LIBRARIES \
703 TARGET_OUT_VENDOR_APPS \
704 TARGET_OUT_VENDOR_APPS_PRIVILEGED \
Cole Faust976a52c2023-10-03 12:58:27 -0700705 TARGET_OUT_VENDOR_ETC \
706 TARGET_OUT_VENDOR_FAKE
Ying Wang8f779362011-09-13 13:57:26 -0700707
Ying Wange3d06792014-01-23 15:09:04 -0800708$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES)
Andreas Gampecf6268f2016-06-30 20:20:38 -0700709$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib
Miao Wang57be5642017-03-01 19:39:19 -0800710$(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 -0800711$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS)
Hung-ying Tyan665e7402016-07-20 17:51:56 +0800712$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700713.KATI_READONLY := \
714 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \
715 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \
716 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \
717 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \
718 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED
Ying Wang61d499b2014-01-15 16:02:16 -0800719
Ying Wangb8888432014-03-11 17:13:27 -0700720TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM)
Ying Wangf15250e2014-06-26 14:12:35 -0700721TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin
Ying Wang4540a852015-03-12 18:30:39 -0700722ifeq ($(TARGET_IS_64_BIT),true)
Ying Wangf15250e2014-06-26 14:12:35 -0700723TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64
724else
725TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
726endif
Ying Wangb8888432014-03-11 17:13:27 -0700727# We don't expect Java libraries in the oem.img.
728# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework
Ying Wangf15250e2014-06-26 14:12:35 -0700729TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app
Ying Wangb8888432014-03-11 17:13:27 -0700730TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700731.KATI_READONLY := \
732 TARGET_OUT_OEM \
733 TARGET_OUT_OEM_EXECUTABLES \
734 TARGET_OUT_OEM_SHARED_LIBRARIES \
735 TARGET_OUT_OEM_APPS \
736 TARGET_OUT_OEM_ETC
Ying Wangb8888432014-03-11 17:13:27 -0700737
Ying Wangf15250e2014-06-26 14:12:35 -0700738$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES)
739$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib
740$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700741.KATI_READONLY := \
742 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \
743 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \
744 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \
Ying Wangf15250e2014-06-26 14:12:35 -0700745
Ying Wang4540a852015-03-12 18:30:39 -0700746TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800747ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100748target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800749ifeq ($(SANITIZE_LITE),true)
750# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
751# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100752target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM)
Ying Wang4540a852015-03-12 18:30:39 -0700753else
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800754target_out_odm_app_base := $(TARGET_OUT_ODM)
Ying Wang4540a852015-03-12 18:30:39 -0700755endif
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800756else
757target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM)
758target_out_odm_app_base := $(TARGET_OUT_ODM)
759endif
760
761TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin
762TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin
763ifeq ($(TARGET_IS_64_BIT),true)
764TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64
765else
766TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
767endif
768TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES)
769TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework
770TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app
771TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app
Ying Wang4540a852015-03-12 18:30:39 -0700772TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700773.KATI_READONLY := \
774 TARGET_OUT_ODM \
775 TARGET_OUT_ODM_EXECUTABLES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800776 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700777 TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800778 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
779 TARGET_OUT_ODM_JAVA_LIBRARIES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700780 TARGET_OUT_ODM_APPS \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800781 TARGET_OUT_ODM_APPS_PRIVILEGED \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700782 TARGET_OUT_ODM_ETC
Ying Wang4540a852015-03-12 18:30:39 -0700783
784$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800785$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800786$(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 -0700787$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS)
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800788$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700789.KATI_READONLY := \
790 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \
791 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \
Bowgo Tsaid624fa62017-11-14 23:42:30 +0800792 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \
793 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \
794 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED
Ying Wang4540a852015-03-12 18:30:39 -0700795
Yifan Hongcfb917a2020-05-07 14:58:20 -0700796TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM)
797
798TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc
799.KATI_READONLY := \
800 TARGET_OUT_VENDOR_DLKM_ETC
801
802# Unlike other partitions, vendor_dlkm should only contain kernel modules.
803TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
804TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES :=
805TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
806TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
807TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES :=
808TARGET_OUT_VENDOR_DLKM_APPS :=
809TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
810$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES :=
811$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES :=
812$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE :=
813$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS :=
814$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED :=
815$(KATI_obsolete_var \
816 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
817 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \
818 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
819 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
820 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \
821 TARGET_OUT_VENDOR_DLKM_APPS \
822 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
823 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \
824 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \
825 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \
826 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \
827 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \
828 , vendor_dlkm should not contain any executables, libraries, or apps)
829
Yifan Hongf496f1b2020-07-15 16:52:59 -0700830TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM)
831
832TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc
833.KATI_READONLY := \
834 TARGET_OUT_ODM_DLKM_ETC
835
836# Unlike other partitions, odm_dlkm should only contain kernel modules.
837TARGET_OUT_ODM_DLKM_EXECUTABLES :=
838TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES :=
839TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
840TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
841TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES :=
842TARGET_OUT_ODM_DLKM_APPS :=
843TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
844$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES :=
845$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES :=
846$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE :=
847$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS :=
848$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED :=
849$(KATI_obsolete_var \
850 TARGET_OUT_ODM_DLKM_EXECUTABLES \
851 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \
852 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
853 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
854 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \
855 TARGET_OUT_ODM_DLKM_APPS \
856 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
857 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \
858 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \
859 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \
860 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \
861 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \
862 , odm_dlkm should not contain any executables, libraries, or apps)
863
Ramji Jiyani13a41372022-01-27 07:05:08 +0000864TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
865
866# Unlike other partitions, system_dlkm should only contain kernel modules.
867TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
868TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES :=
869TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
870TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
871TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES :=
872TARGET_OUT_SYSTEM_DLKM_APPS :=
873TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
874$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES :=
875$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES :=
876$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE :=
877$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS :=
878$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED :=
879$(KATI_obsolete_var \
880 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
881 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \
882 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
883 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
884 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \
885 TARGET_OUT_SYSTEM_DLKM_APPS \
886 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
887 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \
888 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \
889 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \
890 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \
891 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \
892 , system_dlkm should not contain any executables, libraries, or apps)
893
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900894TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT)
Doheon Lee09d9b902018-06-25 10:56:01 +0900895TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin
Dan Willemsen11677ed2018-03-28 14:33:10 -0700896.KATI_READONLY := TARGET_OUT_PRODUCT
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900897ifneq ($(filter address,$(SANITIZE_TARGET)),)
Anton Hanssonae9f1052018-10-02 13:16:05 +0100898target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900899ifeq ($(SANITIZE_LITE),true)
900# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
901# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Anton Hanssonae9f1052018-10-02 13:16:05 +0100902target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900903else
904target_out_product_app_base := $(TARGET_OUT_PRODUCT)
905endif
906else
Inseob Kim47c13522018-05-04 11:20:43 +0900907target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900908target_out_product_app_base := $(TARGET_OUT_PRODUCT)
909endif
910
911ifeq ($(TARGET_IS_64_BIT),true)
912TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64
913else
914TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
915endif
Dan Willemsen11677ed2018-03-28 14:33:10 -0700916TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900917TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app
918TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app
919TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc
Dan Willemsen11677ed2018-03-28 14:33:10 -0700920.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900921 TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700922 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
923 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \
924 TARGET_OUT_PRODUCT_APPS \
925 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \
926 TARGET_OUT_PRODUCT_ETC
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900927
Doheon Lee09d9b902018-06-25 10:56:01 +0900928$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES)
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900929$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900930$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS)
931$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED)
Dan Willemsen11677ed2018-03-28 14:33:10 -0700932.KATI_READONLY := \
Doheon Lee09d9b902018-06-25 10:56:01 +0900933 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700934 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \
935 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \
936 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED
Jaekyun Seokb7735d82017-11-27 17:04:47 +0900937
Justin Yun6151e3f2019-06-25 15:58:13 +0900938TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100939ifneq ($(filter address,$(SANITIZE_TARGET)),)
Justin Yun6151e3f2019-06-25 15:58:13 +0900940target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100941ifeq ($(SANITIZE_LITE),true)
942# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not
943# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/.
Justin Yun6151e3f2019-06-25 15:58:13 +0900944target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100945else
Justin Yun6151e3f2019-06-25 15:58:13 +0900946target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100947endif
948else
Justin Yun6151e3f2019-06-25 15:58:13 +0900949target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT)
950target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT)
Dario Freni5f681e12018-05-29 13:09:01 +0100951endif
952
953ifeq ($(TARGET_IS_64_BIT),true)
Justin Yun6151e3f2019-06-25 15:58:13 +0900954TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64
Dario Freni5f681e12018-05-29 13:09:01 +0100955else
Justin Yun6151e3f2019-06-25 15:58:13 +0900956TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib
Dario Freni5f681e12018-05-29 13:09:01 +0100957endif
Justin Yun6151e3f2019-06-25 15:58:13 +0900958TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework
959TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app
960TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app
961TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900962TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin
963.KATI_READONLY := \
964 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
965 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
966 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \
967 TARGET_OUT_SYSTEM_EXT_APPS \
968 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \
969 TARGET_OUT_SYSTEM_EXT_ETC
Dario Freni5f681e12018-05-29 13:09:01 +0100970
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900971$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES)
Justin Yun6151e3f2019-06-25 15:58:13 +0900972$(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 +0900973$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS)
974$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)
Jeongik Cha6a5e9a22019-08-20 19:24:43 +0900975.KATI_READONLY := \
976 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \
977 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \
978 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \
979 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED
Dario Freni5f681e12018-05-29 13:09:01 +0100980
Steve Fungdfbab492015-09-24 18:12:33 -0700981TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad
Dan Willemsen11677ed2018-03-28 14:33:10 -0700982.KATI_READONLY := TARGET_OUT_BREAKPAD
Steve Fungdfbab492015-09-24 18:12:33 -0700983
The Android Open Source Project88b60792009-03-03 19:28:42 -0800984TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols
985TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin
986TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib
Colin Crossa58f8e02014-06-20 13:33:36 -0700987TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib
The Android Open Source Project88b60792009-03-03 19:28:42 -0800988TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
The Android Open Source Project88b60792009-03-03 19:28:42 -0800989TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin
Ryan Campbell737bc022016-09-15 17:32:13 -0700990TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage
Dan Willemsen11677ed2018-03-28 14:33:10 -0700991.KATI_READONLY := \
992 TARGET_OUT_UNSTRIPPED \
993 TARGET_OUT_EXECUTABLES_UNSTRIPPED \
994 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \
995 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \
996 TARGET_ROOT_OUT_UNSTRIPPED \
Dan Willemsen11677ed2018-03-28 14:33:10 -0700997 TARGET_ROOT_OUT_BIN_UNSTRIPPED \
998 TARGET_OUT_COVERAGE
The Android Open Source Project88b60792009-03-03 19:28:42 -0800999
Tom Cherryd14b8952018-08-09 14:26:00 -07001000TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK)
1001TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)
Bowgo Tsai0013f552019-03-20 17:59:52 +08001002TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK)
Bowgo Tsai6a683672020-02-14 19:00:15 +08001003TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK)
Bowgo Tsai5c40c712019-10-08 10:22:19 +08001004TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK)
Tom Cherryd14b8952018-08-09 14:26:00 -07001005
Ramji Jiyani10655232022-01-20 06:43:09 +00001006TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM)
1007.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT
1008
Steve Mucklee1b10862019-07-10 10:49:37 -07001009TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK)
Lucas Weif57333f2022-02-24 10:30:15 +08001010TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK)
Steve Mucklee1b10862019-07-10 10:49:37 -07001011
Ying Wang2b6aaa32011-10-27 15:18:39 -07001012TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001013TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin
The Android Open Source Project88b60792009-03-03 19:28:42 -08001014TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc
1015TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr
Dan Willemsen11677ed2018-03-28 14:33:10 -07001016.KATI_READONLY := \
1017 TARGET_ROOT_OUT \
1018 TARGET_ROOT_OUT_BIN \
Dan Willemsen11677ed2018-03-28 14:33:10 -07001019 TARGET_ROOT_OUT_ETC \
1020 TARGET_ROOT_OUT_USR
The Android Open Source Project88b60792009-03-03 19:28:42 -08001021
Ying Wang2b6aaa32011-10-27 15:18:39 -07001022TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY)
The Android Open Source Project88b60792009-03-03 19:28:42 -08001023TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root
Dan Willemsen11677ed2018-03-28 14:33:10 -07001024.KATI_READONLY := \
1025 TARGET_RECOVERY_OUT \
1026 TARGET_RECOVERY_ROOT_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001027
1028TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader
1029TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root
1030TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001031.KATI_READONLY := \
1032 TARGET_SYSLOADER_OUT \
1033 TARGET_SYSLOADER_ROOT_OUT \
1034 TARGET_SYSLOADER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001035
1036TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer
1037TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data
1038TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root
1039TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system
Dan Willemsen11677ed2018-03-28 14:33:10 -07001040.KATI_READONLY := \
1041 TARGET_INSTALLER_OUT \
1042 TARGET_INSTALLER_DATA_OUT \
1043 TARGET_INSTALLER_ROOT_OUT \
1044 TARGET_INSTALLER_SYSTEM_OUT
The Android Open Source Project88b60792009-03-03 19:28:42 -08001045
Dan Willemsen8447b812020-06-08 21:00:18 -07001046COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES
Ivan Lozanod62e7122019-08-27 11:23:35 -07001047PER_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 -07001048.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES
The Android Open Source Project88b60792009-03-03 19:28:42 -08001049
Dan Willemsen20f99a62017-10-12 01:35:14 -07001050ifeq ($(CALLED_FROM_SETUP),true)
Dan Willemsen0d255292017-02-18 10:32:13 -08001051PRINT_BUILD_CONFIG ?= true
The Android Open Source Project88b60792009-03-03 19:28:42 -08001052endif