1# Variables we check: 2# HOST_BUILD_TYPE = { release debug } 3# 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 8# 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. 13 14# 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 27# Runs a starlark file, and sets all the variables in its top-level 28# 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 33# $(KATI_extra_file_deps). 34# 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 39define run-starlark 40$(eval _starlark_results := $(OUT_DIR)/starlark_results/$(subst /,_,$(1)).mk) 41$(KATI_shell_no_rerun mkdir -p $(OUT_DIR)/starlark_results && $(OUT_DIR)/rbcrun --mode=make $(3) $(1) >$(_starlark_results) && touch -t 200001010000 $(_starlark_results)) 42$(if $(filter-out 0,$(.SHELLSTATUS)),$(error Starlark failed to run)) 43$(eval include $(_starlark_results)) 44$(KATI_extra_file_deps $(filter-out $(2),$(LOADED_STARLARK_FILES))) 45$(eval LOADED_STARLARK_FILES :=) 46$(eval _starlark_results :=) 47endef 48 49# --------------------------------------------------------------- 50# Release config 51include $(BUILD_SYSTEM)/release_config.mk 52 53# --------------------------------------------------------------- 54# Set up version information 55include $(BUILD_SYSTEM)/version_util.mk 56 57# 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. 61 62ENABLED_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" 63 64$(foreach v,$(ENABLED_VERSIONS), \ 65 $(eval IS_AT_LEAST_$(v) := true)) 66 67# --------------------------------------------------------------- 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. 73CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13 74 75# --------------------------------------------------------------- 76# The product defaults to generic on hardware 77ifeq ($(TARGET_PRODUCT),) 78TARGET_PRODUCT := aosp_arm64 79endif 80 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 87TARGET_BUILD_APPS ?= 88TARGET_BUILD_UNBUNDLED_IMAGE ?= 89 90# 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 103# 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 110.KATI_READONLY := \ 111 TARGET_PRODUCT \ 112 TARGET_BUILD_VARIANT \ 113 TARGET_BUILD_APPS \ 114 TARGET_BUILD_UNBUNDLED \ 115 TARGET_BUILD_UNBUNDLED_IMAGE \ 116 117# --------------------------------------------------------------- 118# Set up configuration for host machine. We don't do cross- 119# compiles except for arm, so the HOST is whatever we are 120# running on 121 122# HOST_OS 123ifneq (,$(findstring Linux,$(UNAME))) 124 HOST_OS := linux 125endif 126ifneq (,$(findstring Darwin,$(UNAME))) 127 HOST_OS := darwin 128endif 129 130ifeq ($(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) 138 endif 139 HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA)) 140endif 141 142# BUILD_OS is the real host doing the build. 143BUILD_OS := $(HOST_OS) 144 145# We can do the cross-build only on Linux 146ifeq ($(HOST_OS),linux) 147 # 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 164else ifeq ($(HOST_OS),darwin) 165 HOST_CROSS_OS := darwin 166 HOST_CROSS_ARCH := arm64 167 HOST_CROSS_2ND_ARCH := 168endif 169 170ifeq ($(HOST_OS),) 171$(error Unable to determine HOST_OS from uname -sm: $(UNAME)!) 172endif 173 174# HOST_ARCH 175ifneq (,$(findstring x86_64,$(UNAME))) 176 HOST_ARCH := x86_64 177 HOST_2ND_ARCH := x86 178 HOST_IS_64_BIT := true 179else 180ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME))) 181$(error Building on a 32-bit x86 host is not supported: $(UNAME)!) 182endif 183endif 184 185ifeq ($(HOST_OS),darwin) 186 # Mac no longer supports 32-bit executables 187 HOST_2ND_ARCH := 188endif 189 190HOST_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 229BUILD_ARCH := $(HOST_ARCH) 230BUILD_2ND_ARCH := $(HOST_2ND_ARCH) 231 232ifeq ($(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 247# We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir. 248HOST_PREBUILT_ARCH := x86 249# This is the standard way to name a directory containing prebuilt host 250# objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc 251# This must match the logic in get_host_prebuilt_prefix in envsetup.sh 252HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH) 253 254# TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT. 255# Define them here so they can be used in product config files. 256TARGET_COPY_OUT_SYSTEM := system 257TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm 258TARGET_COPY_OUT_SYSTEM_OTHER := system_other 259TARGET_COPY_OUT_DATA := data 260TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan 261TARGET_COPY_OUT_OEM := oem 262TARGET_COPY_OUT_RAMDISK := ramdisk 263TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk 264TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk 265TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk 266TARGET_COPY_OUT_ROOT := root 267TARGET_COPY_OUT_RECOVERY := recovery 268# The directory used for optional partitions depend on the BoardConfig, so 269# they're defined to placeholder values here and swapped after reading the 270# BoardConfig, to be either the partition dir, or a subdir within 'system'. 271_vendor_path_placeholder := ||VENDOR-PATH-PH|| 272_product_path_placeholder := ||PRODUCT-PATH-PH|| 273_system_ext_path_placeholder := ||SYSTEM_EXT-PATH-PH|| 274_odm_path_placeholder := ||ODM-PATH-PH|| 275_vendor_dlkm_path_placeholder := ||VENDOR_DLKM-PATH-PH|| 276_odm_dlkm_path_placeholder := ||ODM_DLKM-PATH-PH|| 277_system_dlkm_path_placeholder := ||SYSTEM_DLKM-PATH-PH|| 278TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) 279TARGET_COPY_OUT_VENDOR_RAMDISK := vendor_ramdisk 280TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK := vendor_kernel_ramdisk 281TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder) 282# TODO(b/135957588) TARGET_COPY_OUT_PRODUCT_SERVICES will copy the target to 283# product 284TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_path_placeholder) 285TARGET_COPY_OUT_SYSTEM_EXT := $(_system_ext_path_placeholder) 286TARGET_COPY_OUT_ODM := $(_odm_path_placeholder) 287TARGET_COPY_OUT_VENDOR_DLKM := $(_vendor_dlkm_path_placeholder) 288TARGET_COPY_OUT_ODM_DLKM := $(_odm_dlkm_path_placeholder) 289TARGET_COPY_OUT_SYSTEM_DLKM := $(_system_dlkm_path_placeholder) 290 291# Returns the non-sanitized version of the path provided in $1. 292define get_non_asan_path 293$(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1) 294endef 295 296################################################################# 297# Set up minimal BOOTCLASSPATH list of jars to build/execute 298# java code with dalvikvm/art. 299# Jars present in the ART apex. These should match exactly the list of Java 300# libraries in art-bootclasspath-fragment. The APEX variant name 301# (com.android.art) is the same regardless which Soong module provides the ART 302# APEX. See the long comment in build/soong/java/dexprepopt_bootjars.go for 303# details. 304ART_APEX_JARS := \ 305 com.android.art:core-oj \ 306 com.android.art:core-libart \ 307 com.android.art:okhttp \ 308 com.android.art:bouncycastle \ 309 com.android.art:apache-xml 310# With EMMA_INSTRUMENT_FRAMEWORK=true the Core libraries depend on jacoco. 311ifeq (true,$(EMMA_INSTRUMENT_FRAMEWORK)) 312 ART_APEX_JARS += com.android.art:jacocoagent 313endif 314################################################################# 315 316# Dumps all variables that match [A-Z][A-Z0-9_]* (with a few exceptions) 317# to the file at $(1). It is used to print only the variables that are 318# likely to be relevant to the product or board configuration. 319# Soong config variables are dumped as $(call soong_config_set) calls 320# instead of the raw variable values, because mk2rbc can't read the 321# raw ones. There is a final sed command on the output file to 322# remove leading spaces because I couldn't figure out how to remove 323# them in pure make code. 324define dump-variables-rbc 325$(eval _dump_variables_rbc_excluded := \ 326 BUILD_NUMBER \ 327 DATE \ 328 LOCAL_PATH \ 329 MAKEFILE_LIST \ 330 PRODUCTS \ 331 PRODUCT_COPY_OUT_% \ 332 RBC_PRODUCT_CONFIG \ 333 RBC_BOARD_CONFIG \ 334 SOONG_% \ 335 TARGET_RELEASE \ 336 TOPDIR \ 337 TRACE_BEGIN_SOONG \ 338 USER) 339$(file >$(OUT_DIR)/dump-variables-rbc-temp.txt,$(subst $(space),$(newline),$(sort $(filter-out $(_dump_variables_rbc_excluded),$(.VARIABLES))))) 340$(file >$(1),\ 341$(foreach v, $(shell grep -he "^[A-Z][A-Z0-9_]*$$" $(OUT_DIR)/dump-variables-rbc-temp.txt),\ 342$(v) := $(strip $($(v)))$(newline))\ 343$(foreach ns,$(sort $(SOONG_CONFIG_NAMESPACES)),\ 344$(foreach v,$(sort $(SOONG_CONFIG_$(ns))),\ 345$$(call soong_config_set,$(ns),$(v),$(SOONG_CONFIG_$(ns)_$(v)))$(newline)))) 346$(shell sed -i "s/^ *//g" $(1)) 347endef 348 349# Read the product specs so we can get TARGET_DEVICE and other 350# variables that we need in order to locate the output files. 351include $(BUILD_SYSTEM)/product_config.mk 352 353build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT)) 354ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1) 355$(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT)) 356$(error must be empty or one of: eng user userdebug) 357endif 358 359SDK_HOST_ARCH := x86 360TARGET_OS := linux 361 362# Some board configuration files use $(PRODUCT_OUT) 363TARGET_OUT_ROOT := $(OUT_DIR)/target 364TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product 365PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE) 366.KATI_READONLY := TARGET_OUT_ROOT TARGET_PRODUCT_OUT_ROOT PRODUCT_OUT 367 368include $(BUILD_SYSTEM)/board_config.mk 369 370# the target build type defaults to release 371ifneq ($(TARGET_BUILD_TYPE),debug) 372TARGET_BUILD_TYPE := release 373endif 374 375include $(BUILD_SYSTEM)/product_validation_checks.mk 376 377# --------------------------------------------------------------- 378# figure out the output directories 379 380SOONG_OUT_DIR := $(OUT_DIR)/soong 381 382HOST_OUT_ROOT := $(OUT_DIR)/host 383 384.KATI_READONLY := SOONG_OUT_DIR HOST_OUT_ROOT 385 386# We want to avoid two host bin directories in multilib build. 387HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH) 388 389# Soong now installs to the same directory as Make. 390SOONG_HOST_OUT := $(HOST_OUT) 391 392HOST_CROSS_OUT := $(HOST_OUT_ROOT)/$(HOST_CROSS_OS)-$(HOST_CROSS_ARCH) 393 394.KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT 395 396TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common 397HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common 398 399.KATI_READONLY := TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT 400 401OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs 402OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs 403.KATI_READONLY := OUT_DOCS OUT_NDK_DOCS 404 405$(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead) 406 407BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin 408SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin 409.KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES 410 411HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin 412HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64 413HOST_OUT_DYLIB_LIBRARIES := $(HOST_OUT)/lib64 414HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES) 415HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework 416HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon 417HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64 418HOST_OUT_COVERAGE := $(HOST_OUT)/coverage 419HOST_OUT_TESTCASES := $(HOST_OUT)/testcases 420HOST_OUT_ETC := $(HOST_OUT)/etc 421.KATI_READONLY := \ 422 HOST_OUT_EXECUTABLES \ 423 HOST_OUT_SHARED_LIBRARIES \ 424 HOST_OUT_RENDERSCRIPT_BITCODE \ 425 HOST_OUT_JAVA_LIBRARIES \ 426 HOST_OUT_SDK_ADDON \ 427 HOST_OUT_NATIVE_TESTS \ 428 HOST_OUT_COVERAGE \ 429 HOST_OUT_TESTCASES \ 430 HOST_OUT_ETC 431 432HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin 433HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib 434HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest 435HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage 436HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases 437.KATI_READONLY := \ 438 HOST_CROSS_OUT_EXECUTABLES \ 439 HOST_CROSS_OUT_SHARED_LIBRARIES \ 440 HOST_CROSS_OUT_NATIVE_TESTS \ 441 HOST_CROSS_OUT_COVERAGE \ 442 HOST_CROSS_OUT_TESTCASES 443 444HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj 445HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES 446HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj 447HOST_OUT_FAKE := $(HOST_OUT)/fake_packages 448.KATI_READONLY := \ 449 HOST_OUT_INTERMEDIATES \ 450 HOST_OUT_NOTICE_FILES \ 451 HOST_OUT_COMMON_INTERMEDIATES \ 452 HOST_OUT_FAKE 453 454HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj 455HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES 456.KATI_READONLY := \ 457 HOST_CROSS_OUT_INTERMEDIATES \ 458 HOST_CROSS_OUT_NOTICE_FILES 459 460HOST_OUT_GEN := $(HOST_OUT)/gen 461HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen 462.KATI_READONLY := \ 463 HOST_OUT_GEN \ 464 HOST_OUT_COMMON_GEN 465 466HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen 467.KATI_READONLY := HOST_CROSS_OUT_GEN 468 469# Out for HOST_2ND_ARCH 470$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32 471$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib 472$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES) 473$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES) 474$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest 475$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES) 476.KATI_READONLY := \ 477 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \ 478 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \ 479 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \ 480 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \ 481 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \ 482 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES 483 484# The default host library path. 485# It always points to the path where we build libraries in the default bitness. 486HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) 487.KATI_READONLY := HOST_LIBRARY_PATH 488 489# Out for HOST_CROSS_2ND_ARCH 490$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64 491$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64 492$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES) 493$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64 494.KATI_READONLY := \ 495 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \ 496 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \ 497 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \ 498 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS 499 500ifneq ($(filter address,$(SANITIZE_TARGET)),) 501 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan 502else 503 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj 504endif 505TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include 506.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS 507 508ifneq ($(filter address,$(SANITIZE_TARGET)),) 509 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan 510else 511 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj 512endif 513.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES 514 515TARGET_OUT_GEN := $(PRODUCT_OUT)/gen 516TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen 517.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN 518 519TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) 520.KATI_READONLY := TARGET_OUT 521ifneq ($(filter address,$(SANITIZE_TARGET)),) 522target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 523ifeq ($(SANITIZE_LITE),true) 524# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 525# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 526target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 527else 528target_out_app_base := $(TARGET_OUT) 529endif 530else 531target_out_shared_libraries_base := $(TARGET_OUT) 532target_out_app_base := $(TARGET_OUT) 533endif 534 535TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin 536TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin 537ifeq ($(TARGET_IS_64_BIT),true) 538# /system/lib always contains 32-bit libraries, 539# and /system/lib64 (if present) always contains 64-bit libraries. 540TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64 541else 542TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 543endif 544TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES) 545TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework 546TARGET_OUT_APPS := $(target_out_app_base)/app 547TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app 548TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout 549TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars 550TARGET_OUT_ETC := $(TARGET_OUT)/etc 551TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES 552TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages 553TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases 554TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS 555 556.KATI_READONLY := \ 557 TARGET_OUT_EXECUTABLES \ 558 TARGET_OUT_OPTIONAL_EXECUTABLES \ 559 TARGET_OUT_SHARED_LIBRARIES \ 560 TARGET_OUT_RENDERSCRIPT_BITCODE \ 561 TARGET_OUT_JAVA_LIBRARIES \ 562 TARGET_OUT_APPS \ 563 TARGET_OUT_APPS_PRIVILEGED \ 564 TARGET_OUT_KEYLAYOUT \ 565 TARGET_OUT_KEYCHARS \ 566 TARGET_OUT_ETC \ 567 TARGET_OUT_NOTICE_FILES \ 568 TARGET_OUT_FAKE \ 569 TARGET_OUT_TESTCASES \ 570 TARGET_OUT_FLAGS 571 572ifeq ($(SANITIZE_LITE),true) 573# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 574# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 575TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 576else 577TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 578endif 579.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER 580 581# Out for TARGET_2ND_ARCH 582TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) 583.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX 584 585ifneq ($(filter address,$(SANITIZE_TARGET)),) 586 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan 587else 588 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH) 589endif 590$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 591$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 592$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 593$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) 594$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED) 595$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES) 596.KATI_READONLY := \ 597 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \ 598 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \ 599 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \ 600 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \ 601 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \ 602 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \ 603 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES 604 605MODULE_CLASS_APPS := app 606MODULE_CLASS_EXECUTABLES := bin 607MODULE_CLASS_JAVA_LIBRARIES := framework 608MODULE_CLASS_NATIVE_TESTS := nativetest 609MODULE_CLASS_METRIC_TESTS := benchmarktest 610TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) 611TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 612TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES) 613TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework 614TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app 615TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) 616TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) 617TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) 618ifeq ($(TARGET_IS_64_BIT),true) 619TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64 620TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64 621TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX) 622TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX) 623else 624TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 625TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 626TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 627TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 628endif 629MODULE_CLASS_FAKE := fake_packages 630TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages 631.KATI_READONLY := \ 632 TARGET_OUT_DATA \ 633 TARGET_OUT_DATA_EXECUTABLES \ 634 TARGET_OUT_DATA_SHARED_LIBRARIES \ 635 TARGET_OUT_DATA_JAVA_LIBRARIES \ 636 TARGET_OUT_DATA_APPS \ 637 TARGET_OUT_DATA_KEYLAYOUT \ 638 TARGET_OUT_DATA_KEYCHARS \ 639 TARGET_OUT_DATA_ETC \ 640 TARGET_OUT_DATA_NATIVE_TESTS \ 641 TARGET_OUT_DATA_METRIC_TESTS \ 642 TARGET_OUT_VENDOR_NATIVE_TESTS \ 643 TARGET_OUT_VENDOR_METRIC_TESTS \ 644 TARGET_OUT_DATA_FAKE \ 645 MODULE_CLASS_APPS \ 646 MODULE_CLASS_EXECUTABLES \ 647 MODULE_CLASS_JAVA_LIBRARIES \ 648 MODULE_CLASS_NATIVE_TESTS \ 649 MODULE_CLASS_METRIC_TESTS \ 650 MODULE_CLASS_FAKE 651 652$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) 653$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 654$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) 655$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 656$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 657$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 658$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 659.KATI_READONLY := \ 660 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \ 661 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \ 662 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \ 663 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \ 664 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \ 665 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \ 666 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \ 667 668TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache 669.KATI_READONLY := TARGET_OUT_CACHE 670 671TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) 672.KATI_READONLY := TARGET_OUT_VENDOR 673ifneq ($(filter address,$(SANITIZE_TARGET)),) 674target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 675ifeq ($(SANITIZE_LITE),true) 676# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 677# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 678target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 679else 680target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 681endif 682else 683target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR) 684target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 685endif 686 687TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin 688TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin 689ifeq ($(TARGET_IS_64_BIT),true) 690TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64 691else 692TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 693endif 694TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES) 695TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework 696TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app 697TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app 698TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc 699TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages 700.KATI_READONLY := \ 701 TARGET_OUT_VENDOR_EXECUTABLES \ 702 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \ 703 TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 704 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 705 TARGET_OUT_VENDOR_JAVA_LIBRARIES \ 706 TARGET_OUT_VENDOR_APPS \ 707 TARGET_OUT_VENDOR_APPS_PRIVILEGED \ 708 TARGET_OUT_VENDOR_ETC \ 709 TARGET_OUT_VENDOR_FAKE 710 711$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) 712$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 713$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES) 714$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) 715$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED) 716.KATI_READONLY := \ 717 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \ 718 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 719 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 720 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \ 721 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED 722 723TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) 724TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin 725ifeq ($(TARGET_IS_64_BIT),true) 726TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64 727else 728TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 729endif 730# We don't expect Java libraries in the oem.img. 731# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework 732TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app 733TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc 734.KATI_READONLY := \ 735 TARGET_OUT_OEM \ 736 TARGET_OUT_OEM_EXECUTABLES \ 737 TARGET_OUT_OEM_SHARED_LIBRARIES \ 738 TARGET_OUT_OEM_APPS \ 739 TARGET_OUT_OEM_ETC 740 741$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) 742$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 743$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) 744.KATI_READONLY := \ 745 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \ 746 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \ 747 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \ 748 749TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) 750ifneq ($(filter address,$(SANITIZE_TARGET)),) 751target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 752ifeq ($(SANITIZE_LITE),true) 753# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 754# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 755target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 756else 757target_out_odm_app_base := $(TARGET_OUT_ODM) 758endif 759else 760target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM) 761target_out_odm_app_base := $(TARGET_OUT_ODM) 762endif 763 764TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin 765TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin 766ifeq ($(TARGET_IS_64_BIT),true) 767TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64 768else 769TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 770endif 771TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES) 772TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework 773TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app 774TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app 775TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc 776TARGET_OUT_ODM_FAKE := $(PRODUCT_OUT)/odm_fake_packages 777.KATI_READONLY := \ 778 TARGET_OUT_ODM \ 779 TARGET_OUT_ODM_EXECUTABLES \ 780 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \ 781 TARGET_OUT_ODM_SHARED_LIBRARIES \ 782 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 783 TARGET_OUT_ODM_JAVA_LIBRARIES \ 784 TARGET_OUT_ODM_APPS \ 785 TARGET_OUT_ODM_APPS_PRIVILEGED \ 786 TARGET_OUT_ODM_ETC \ 787 TARGET_OUT_ODM_FAKE 788 789$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) 790$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 791$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES) 792$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) 793$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED) 794.KATI_READONLY := \ 795 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \ 796 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \ 797 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 798 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \ 799 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED 800 801TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM) 802 803TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc 804.KATI_READONLY := \ 805 TARGET_OUT_VENDOR_DLKM_ETC 806 807# Unlike other partitions, vendor_dlkm should only contain kernel modules. 808TARGET_OUT_VENDOR_DLKM_EXECUTABLES := 809TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES := 810TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES := 811TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE := 812TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES := 813TARGET_OUT_VENDOR_DLKM_APPS := 814TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED := 815$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES := 816$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES := 817$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE := 818$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS := 819$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED := 820$(KATI_obsolete_var \ 821 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \ 822 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \ 823 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \ 824 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \ 825 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \ 826 TARGET_OUT_VENDOR_DLKM_APPS \ 827 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \ 828 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \ 829 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \ 830 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \ 831 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \ 832 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \ 833 , vendor_dlkm should not contain any executables, libraries, or apps) 834 835TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM) 836 837TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc 838.KATI_READONLY := \ 839 TARGET_OUT_ODM_DLKM_ETC 840 841# Unlike other partitions, odm_dlkm should only contain kernel modules. 842TARGET_OUT_ODM_DLKM_EXECUTABLES := 843TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES := 844TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES := 845TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE := 846TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES := 847TARGET_OUT_ODM_DLKM_APPS := 848TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED := 849$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES := 850$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES := 851$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE := 852$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS := 853$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED := 854$(KATI_obsolete_var \ 855 TARGET_OUT_ODM_DLKM_EXECUTABLES \ 856 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \ 857 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \ 858 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \ 859 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \ 860 TARGET_OUT_ODM_DLKM_APPS \ 861 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \ 862 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \ 863 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \ 864 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \ 865 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \ 866 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \ 867 , odm_dlkm should not contain any executables, libraries, or apps) 868 869TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM) 870 871# Unlike other partitions, system_dlkm should only contain kernel modules. 872TARGET_OUT_SYSTEM_DLKM_EXECUTABLES := 873TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES := 874TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES := 875TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE := 876TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES := 877TARGET_OUT_SYSTEM_DLKM_APPS := 878TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED := 879$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES := 880$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES := 881$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE := 882$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS := 883$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED := 884$(KATI_obsolete_var \ 885 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \ 886 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \ 887 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \ 888 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \ 889 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \ 890 TARGET_OUT_SYSTEM_DLKM_APPS \ 891 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \ 892 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \ 893 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \ 894 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \ 895 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \ 896 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \ 897 , system_dlkm should not contain any executables, libraries, or apps) 898 899TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT) 900TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin 901.KATI_READONLY := TARGET_OUT_PRODUCT 902ifneq ($(filter address,$(SANITIZE_TARGET)),) 903target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 904ifeq ($(SANITIZE_LITE),true) 905# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 906# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 907target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 908else 909target_out_product_app_base := $(TARGET_OUT_PRODUCT) 910endif 911else 912target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT) 913target_out_product_app_base := $(TARGET_OUT_PRODUCT) 914endif 915 916ifeq ($(TARGET_IS_64_BIT),true) 917TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64 918else 919TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 920endif 921TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework 922TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app 923TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app 924TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc 925TARGET_OUT_PRODUCT_FAKE := $(TARGET_OUT_PRODUCT)/product_fake_packages 926.KATI_READONLY := \ 927 TARGET_OUT_PRODUCT_EXECUTABLES \ 928 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \ 929 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \ 930 TARGET_OUT_PRODUCT_APPS \ 931 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \ 932 TARGET_OUT_PRODUCT_ETC \ 933 TARGET_OUT_PRODUCT_FAKE 934 935$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES) 936$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 937$(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) 939.KATI_READONLY := \ 940 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \ 941 $(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 944 945TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT) 946ifneq ($(filter address,$(SANITIZE_TARGET)),) 947target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT) 948ifeq ($(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/. 951target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT) 952else 953target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT) 954endif 955else 956target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT) 957target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT) 958endif 959 960ifeq ($(TARGET_IS_64_BIT),true) 961TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64 962else 963TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib 964endif 965TARGET_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 969TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin 970TARGET_OUT_SYSTEM_EXT_FAKE := $(PRODUCT_OUT)/system_ext_fake_packages 971.KATI_READONLY := \ 972 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \ 973 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \ 974 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \ 975 TARGET_OUT_SYSTEM_EXT_APPS \ 976 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \ 977 TARGET_OUT_SYSTEM_EXT_ETC \ 978 TARGET_OUT_SYSTEM_EXT_FAKE 979 980$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES) 981$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib 982$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS) 983$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED) 984.KATI_READONLY := \ 985 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \ 986 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \ 987 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \ 988 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED 989 990TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad 991.KATI_READONLY := TARGET_OUT_BREAKPAD 992 993TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols 994TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin 995TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib 996TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib 997TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 998TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin 999TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage 1000.KATI_READONLY := \ 1001 TARGET_OUT_UNSTRIPPED \ 1002 TARGET_OUT_EXECUTABLES_UNSTRIPPED \ 1003 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \ 1004 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \ 1005 TARGET_ROOT_OUT_UNSTRIPPED \ 1006 TARGET_ROOT_OUT_BIN_UNSTRIPPED \ 1007 TARGET_OUT_COVERAGE 1008 1009TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK) 1010TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 1011TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK) 1012TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK) 1013TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK) 1014 1015TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM) 1016.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT 1017 1018TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK) 1019TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK) 1020 1021TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT) 1022TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin 1023TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc 1024TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr 1025.KATI_READONLY := \ 1026 TARGET_ROOT_OUT \ 1027 TARGET_ROOT_OUT_BIN \ 1028 TARGET_ROOT_OUT_ETC \ 1029 TARGET_ROOT_OUT_USR 1030 1031TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY) 1032TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root 1033.KATI_READONLY := \ 1034 TARGET_RECOVERY_OUT \ 1035 TARGET_RECOVERY_ROOT_OUT 1036 1037TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader 1038TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root 1039TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system 1040.KATI_READONLY := \ 1041 TARGET_SYSLOADER_OUT \ 1042 TARGET_SYSLOADER_ROOT_OUT \ 1043 TARGET_SYSLOADER_SYSTEM_OUT 1044 1045TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer 1046TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data 1047TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root 1048TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system 1049.KATI_READONLY := \ 1050 TARGET_INSTALLER_OUT \ 1051 TARGET_INSTALLER_DATA_OUT \ 1052 TARGET_INSTALLER_ROOT_OUT \ 1053 TARGET_INSTALLER_SYSTEM_OUT 1054 1055COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES 1056PER_ARCH_MODULE_CLASSES := SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP RENDERSCRIPT_BITCODE NATIVE_TESTS HEADER_LIBRARIES RLIB_LIBRARIES DYLIB_LIBRARIES 1057.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES 1058 1059ifeq ($(CALLED_FROM_SETUP),true) 1060PRINT_BUILD_CONFIG ?= true 1061endif 1062