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 420.KATI_READONLY := \ 421 HOST_OUT_EXECUTABLES \ 422 HOST_OUT_SHARED_LIBRARIES \ 423 HOST_OUT_RENDERSCRIPT_BITCODE \ 424 HOST_OUT_JAVA_LIBRARIES \ 425 HOST_OUT_SDK_ADDON \ 426 HOST_OUT_NATIVE_TESTS \ 427 HOST_OUT_COVERAGE \ 428 HOST_OUT_TESTCASES 429 430HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin 431HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib 432HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest 433HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage 434HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases 435.KATI_READONLY := \ 436 HOST_CROSS_OUT_EXECUTABLES \ 437 HOST_CROSS_OUT_SHARED_LIBRARIES \ 438 HOST_CROSS_OUT_NATIVE_TESTS \ 439 HOST_CROSS_OUT_COVERAGE \ 440 HOST_CROSS_OUT_TESTCASES 441 442HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj 443HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES 444HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj 445HOST_OUT_FAKE := $(HOST_OUT)/fake_packages 446.KATI_READONLY := \ 447 HOST_OUT_INTERMEDIATES \ 448 HOST_OUT_NOTICE_FILES \ 449 HOST_OUT_COMMON_INTERMEDIATES \ 450 HOST_OUT_FAKE 451 452HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj 453HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES 454.KATI_READONLY := \ 455 HOST_CROSS_OUT_INTERMEDIATES \ 456 HOST_CROSS_OUT_NOTICE_FILES 457 458HOST_OUT_GEN := $(HOST_OUT)/gen 459HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen 460.KATI_READONLY := \ 461 HOST_OUT_GEN \ 462 HOST_OUT_COMMON_GEN 463 464HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen 465.KATI_READONLY := HOST_CROSS_OUT_GEN 466 467# Out for HOST_2ND_ARCH 468$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32 469$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib 470$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES) 471$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES) 472$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest 473$(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES) 474.KATI_READONLY := \ 475 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \ 476 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \ 477 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \ 478 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \ 479 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \ 480 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES 481 482# The default host library path. 483# It always points to the path where we build libraries in the default bitness. 484HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) 485.KATI_READONLY := HOST_LIBRARY_PATH 486 487# Out for HOST_CROSS_2ND_ARCH 488$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64 489$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64 490$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES) 491$(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64 492.KATI_READONLY := \ 493 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \ 494 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \ 495 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \ 496 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS 497 498ifneq ($(filter address,$(SANITIZE_TARGET)),) 499 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan 500else 501 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj 502endif 503TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include 504.KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS 505 506ifneq ($(filter address,$(SANITIZE_TARGET)),) 507 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan 508else 509 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj 510endif 511.KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES 512 513TARGET_OUT_GEN := $(PRODUCT_OUT)/gen 514TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen 515.KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN 516 517TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) 518.KATI_READONLY := TARGET_OUT 519ifneq ($(filter address,$(SANITIZE_TARGET)),) 520target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 521ifeq ($(SANITIZE_LITE),true) 522# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 523# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 524target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 525else 526target_out_app_base := $(TARGET_OUT) 527endif 528else 529target_out_shared_libraries_base := $(TARGET_OUT) 530target_out_app_base := $(TARGET_OUT) 531endif 532 533TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin 534TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin 535ifeq ($(TARGET_IS_64_BIT),true) 536# /system/lib always contains 32-bit libraries, 537# and /system/lib64 (if present) always contains 64-bit libraries. 538TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64 539else 540TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 541endif 542TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES) 543TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework 544TARGET_OUT_APPS := $(target_out_app_base)/app 545TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app 546TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout 547TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars 548TARGET_OUT_ETC := $(TARGET_OUT)/etc 549TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES 550TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages 551TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases 552TARGET_OUT_FLAGS := $(TARGET_OUT_INTERMEDIATES)/FLAGS 553 554.KATI_READONLY := \ 555 TARGET_OUT_EXECUTABLES \ 556 TARGET_OUT_OPTIONAL_EXECUTABLES \ 557 TARGET_OUT_SHARED_LIBRARIES \ 558 TARGET_OUT_RENDERSCRIPT_BITCODE \ 559 TARGET_OUT_JAVA_LIBRARIES \ 560 TARGET_OUT_APPS \ 561 TARGET_OUT_APPS_PRIVILEGED \ 562 TARGET_OUT_KEYLAYOUT \ 563 TARGET_OUT_KEYCHARS \ 564 TARGET_OUT_ETC \ 565 TARGET_OUT_NOTICE_FILES \ 566 TARGET_OUT_FAKE \ 567 TARGET_OUT_TESTCASES \ 568 TARGET_OUT_FLAGS 569 570ifeq ($(SANITIZE_LITE),true) 571# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 572# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 573TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 574else 575TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 576endif 577.KATI_READONLY := TARGET_OUT_SYSTEM_OTHER 578 579# Out for TARGET_2ND_ARCH 580TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) 581.KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX 582 583ifneq ($(filter address,$(SANITIZE_TARGET)),) 584 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan 585else 586 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH) 587endif 588$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 589$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 590$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 591$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) 592$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED) 593$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES) 594.KATI_READONLY := \ 595 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \ 596 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \ 597 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \ 598 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \ 599 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \ 600 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \ 601 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES 602 603MODULE_CLASS_APPS := app 604MODULE_CLASS_EXECUTABLES := bin 605MODULE_CLASS_JAVA_LIBRARIES := framework 606MODULE_CLASS_NATIVE_TESTS := nativetest 607MODULE_CLASS_METRIC_TESTS := benchmarktest 608TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) 609TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 610TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES) 611TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework 612TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app 613TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) 614TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) 615TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) 616ifeq ($(TARGET_IS_64_BIT),true) 617TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64 618TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64 619TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX) 620TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX) 621else 622TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 623TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 624TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 625TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 626endif 627MODULE_CLASS_FAKE := fake_packages 628TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages 629.KATI_READONLY := \ 630 TARGET_OUT_DATA \ 631 TARGET_OUT_DATA_EXECUTABLES \ 632 TARGET_OUT_DATA_SHARED_LIBRARIES \ 633 TARGET_OUT_DATA_JAVA_LIBRARIES \ 634 TARGET_OUT_DATA_APPS \ 635 TARGET_OUT_DATA_KEYLAYOUT \ 636 TARGET_OUT_DATA_KEYCHARS \ 637 TARGET_OUT_DATA_ETC \ 638 TARGET_OUT_DATA_NATIVE_TESTS \ 639 TARGET_OUT_DATA_METRIC_TESTS \ 640 TARGET_OUT_VENDOR_NATIVE_TESTS \ 641 TARGET_OUT_VENDOR_METRIC_TESTS \ 642 TARGET_OUT_DATA_FAKE \ 643 MODULE_CLASS_APPS \ 644 MODULE_CLASS_EXECUTABLES \ 645 MODULE_CLASS_JAVA_LIBRARIES \ 646 MODULE_CLASS_NATIVE_TESTS \ 647 MODULE_CLASS_METRIC_TESTS \ 648 MODULE_CLASS_FAKE 649 650$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) 651$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 652$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) 653$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 654$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 655$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 656$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 657.KATI_READONLY := \ 658 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \ 659 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \ 660 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \ 661 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \ 662 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \ 663 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \ 664 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \ 665 666TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache 667.KATI_READONLY := TARGET_OUT_CACHE 668 669TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) 670.KATI_READONLY := TARGET_OUT_VENDOR 671ifneq ($(filter address,$(SANITIZE_TARGET)),) 672target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 673ifeq ($(SANITIZE_LITE),true) 674# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 675# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 676target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 677else 678target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 679endif 680else 681target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR) 682target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 683endif 684 685TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin 686TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin 687ifeq ($(TARGET_IS_64_BIT),true) 688TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64 689else 690TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 691endif 692TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES) 693TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework 694TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app 695TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app 696TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc 697TARGET_OUT_VENDOR_FAKE := $(PRODUCT_OUT)/vendor_fake_packages 698.KATI_READONLY := \ 699 TARGET_OUT_VENDOR_EXECUTABLES \ 700 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \ 701 TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 702 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 703 TARGET_OUT_VENDOR_JAVA_LIBRARIES \ 704 TARGET_OUT_VENDOR_APPS \ 705 TARGET_OUT_VENDOR_APPS_PRIVILEGED \ 706 TARGET_OUT_VENDOR_ETC \ 707 TARGET_OUT_VENDOR_FAKE 708 709$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) 710$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 711$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES) 712$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) 713$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED) 714.KATI_READONLY := \ 715 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \ 716 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 717 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 718 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \ 719 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED 720 721TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) 722TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin 723ifeq ($(TARGET_IS_64_BIT),true) 724TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64 725else 726TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 727endif 728# We don't expect Java libraries in the oem.img. 729# TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework 730TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app 731TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc 732.KATI_READONLY := \ 733 TARGET_OUT_OEM \ 734 TARGET_OUT_OEM_EXECUTABLES \ 735 TARGET_OUT_OEM_SHARED_LIBRARIES \ 736 TARGET_OUT_OEM_APPS \ 737 TARGET_OUT_OEM_ETC 738 739$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) 740$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 741$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) 742.KATI_READONLY := \ 743 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \ 744 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \ 745 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \ 746 747TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) 748ifneq ($(filter address,$(SANITIZE_TARGET)),) 749target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 750ifeq ($(SANITIZE_LITE),true) 751# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 752# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 753target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 754else 755target_out_odm_app_base := $(TARGET_OUT_ODM) 756endif 757else 758target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM) 759target_out_odm_app_base := $(TARGET_OUT_ODM) 760endif 761 762TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin 763TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin 764ifeq ($(TARGET_IS_64_BIT),true) 765TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64 766else 767TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 768endif 769TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES) 770TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework 771TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app 772TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app 773TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc 774TARGET_OUT_ODM_FAKE := $(PRODUCT_OUT)/odm_fake_packages 775.KATI_READONLY := \ 776 TARGET_OUT_ODM \ 777 TARGET_OUT_ODM_EXECUTABLES \ 778 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \ 779 TARGET_OUT_ODM_SHARED_LIBRARIES \ 780 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 781 TARGET_OUT_ODM_JAVA_LIBRARIES \ 782 TARGET_OUT_ODM_APPS \ 783 TARGET_OUT_ODM_APPS_PRIVILEGED \ 784 TARGET_OUT_ODM_ETC \ 785 TARGET_OUT_ODM_FAKE 786 787$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) 788$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 789$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES) 790$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) 791$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED) 792.KATI_READONLY := \ 793 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \ 794 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \ 795 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 796 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \ 797 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED 798 799TARGET_OUT_VENDOR_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DLKM) 800 801TARGET_OUT_VENDOR_DLKM_ETC := $(TARGET_OUT_VENDOR_DLKM)/etc 802.KATI_READONLY := \ 803 TARGET_OUT_VENDOR_DLKM_ETC 804 805# Unlike other partitions, vendor_dlkm should only contain kernel modules. 806TARGET_OUT_VENDOR_DLKM_EXECUTABLES := 807TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES := 808TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES := 809TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE := 810TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES := 811TARGET_OUT_VENDOR_DLKM_APPS := 812TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED := 813$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES := 814$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES := 815$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE := 816$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS := 817$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED := 818$(KATI_obsolete_var \ 819 TARGET_OUT_VENDOR_DLKM_EXECUTABLES \ 820 TARGET_OUT_VENDOR_DLKM_OPTIONAL_EXECUTABLES \ 821 TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \ 822 TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \ 823 TARGET_OUT_VENDOR_DLKM_JAVA_LIBRARIES \ 824 TARGET_OUT_VENDOR_DLKM_APPS \ 825 TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \ 826 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_EXECUTABLES \ 827 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_SHARED_LIBRARIES \ 828 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_RENDERSCRIPT_BITCODE \ 829 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS \ 830 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_DLKM_APPS_PRIVILEGED \ 831 , vendor_dlkm should not contain any executables, libraries, or apps) 832 833TARGET_OUT_ODM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM_DLKM) 834 835TARGET_OUT_ODM_DLKM_ETC := $(TARGET_OUT_ODM_DLKM)/etc 836.KATI_READONLY := \ 837 TARGET_OUT_ODM_DLKM_ETC 838 839# Unlike other partitions, odm_dlkm should only contain kernel modules. 840TARGET_OUT_ODM_DLKM_EXECUTABLES := 841TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES := 842TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES := 843TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE := 844TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES := 845TARGET_OUT_ODM_DLKM_APPS := 846TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED := 847$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES := 848$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES := 849$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE := 850$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS := 851$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED := 852$(KATI_obsolete_var \ 853 TARGET_OUT_ODM_DLKM_EXECUTABLES \ 854 TARGET_OUT_ODM_DLKM_OPTIONAL_EXECUTABLES \ 855 TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \ 856 TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \ 857 TARGET_OUT_ODM_DLKM_JAVA_LIBRARIES \ 858 TARGET_OUT_ODM_DLKM_APPS \ 859 TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \ 860 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_EXECUTABLES \ 861 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_SHARED_LIBRARIES \ 862 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_RENDERSCRIPT_BITCODE \ 863 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS \ 864 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_DLKM_APPS_PRIVILEGED \ 865 , odm_dlkm should not contain any executables, libraries, or apps) 866 867TARGET_OUT_SYSTEM_DLKM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM) 868 869# Unlike other partitions, system_dlkm should only contain kernel modules. 870TARGET_OUT_SYSTEM_DLKM_EXECUTABLES := 871TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES := 872TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES := 873TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE := 874TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES := 875TARGET_OUT_SYSTEM_DLKM_APPS := 876TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED := 877$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES := 878$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES := 879$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE := 880$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS := 881$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED := 882$(KATI_obsolete_var \ 883 TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \ 884 TARGET_OUT_SYSTEM_DLKM_OPTIONAL_EXECUTABLES \ 885 TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \ 886 TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \ 887 TARGET_OUT_SYSTEM_DLKM_JAVA_LIBRARIES \ 888 TARGET_OUT_SYSTEM_DLKM_APPS \ 889 TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \ 890 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_EXECUTABLES \ 891 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_SHARED_LIBRARIES \ 892 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_RENDERSCRIPT_BITCODE \ 893 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS \ 894 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_DLKM_APPS_PRIVILEGED \ 895 , system_dlkm should not contain any executables, libraries, or apps) 896 897TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT) 898TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin 899.KATI_READONLY := TARGET_OUT_PRODUCT 900ifneq ($(filter address,$(SANITIZE_TARGET)),) 901target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 902ifeq ($(SANITIZE_LITE),true) 903# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 904# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 905target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 906else 907target_out_product_app_base := $(TARGET_OUT_PRODUCT) 908endif 909else 910target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT) 911target_out_product_app_base := $(TARGET_OUT_PRODUCT) 912endif 913 914ifeq ($(TARGET_IS_64_BIT),true) 915TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64 916else 917TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 918endif 919TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework 920TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app 921TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app 922TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc 923TARGET_OUT_PRODUCT_FAKE := $(TARGET_OUT_PRODUCT)/product_fake_packages 924.KATI_READONLY := \ 925 TARGET_OUT_PRODUCT_EXECUTABLES \ 926 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \ 927 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \ 928 TARGET_OUT_PRODUCT_APPS \ 929 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \ 930 TARGET_OUT_PRODUCT_ETC \ 931 TARGET_OUT_PRODUCT_FAKE 932 933$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES) 934$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 935$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS) 936$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED) 937.KATI_READONLY := \ 938 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \ 939 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \ 940 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \ 941 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED 942 943TARGET_OUT_SYSTEM_EXT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_EXT) 944ifneq ($(filter address,$(SANITIZE_TARGET)),) 945target_out_system_ext_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT) 946ifeq ($(SANITIZE_LITE),true) 947# When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 948# work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 949target_out_system_ext_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_EXT) 950else 951target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT) 952endif 953else 954target_out_system_ext_shared_libraries_base := $(TARGET_OUT_SYSTEM_EXT) 955target_out_system_ext_app_base := $(TARGET_OUT_SYSTEM_EXT) 956endif 957 958ifeq ($(TARGET_IS_64_BIT),true) 959TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib64 960else 961TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib 962endif 963TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES:= $(TARGET_OUT_SYSTEM_EXT)/framework 964TARGET_OUT_SYSTEM_EXT_APPS := $(target_out_system_ext_app_base)/app 965TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(target_out_system_ext_app_base)/priv-app 966TARGET_OUT_SYSTEM_EXT_ETC := $(TARGET_OUT_SYSTEM_EXT)/etc 967TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT)/bin 968TARGET_OUT_SYSTEM_EXT_FAKE := $(PRODUCT_OUT)/system_ext_fake_packages 969.KATI_READONLY := \ 970 TARGET_OUT_SYSTEM_EXT_EXECUTABLES \ 971 TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \ 972 TARGET_OUT_SYSTEM_EXT_JAVA_LIBRARIES \ 973 TARGET_OUT_SYSTEM_EXT_APPS \ 974 TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED \ 975 TARGET_OUT_SYSTEM_EXT_ETC \ 976 TARGET_OUT_SYSTEM_EXT_FAKE 977 978$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES := $(TARGET_OUT_SYSTEM_EXT_EXECUTABLES) 979$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES := $(target_out_system_ext_shared_libraries_base)/lib 980$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS := $(TARGET_OUT_SYSTEM_EXT_APPS) 981$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED := $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED) 982.KATI_READONLY := \ 983 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_EXECUTABLES \ 984 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_SHARED_LIBRARIES \ 985 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS \ 986 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED 987 988TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad 989.KATI_READONLY := TARGET_OUT_BREAKPAD 990 991TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols 992TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin 993TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib 994TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib 995TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 996TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin 997TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage 998.KATI_READONLY := \ 999 TARGET_OUT_UNSTRIPPED \ 1000 TARGET_OUT_EXECUTABLES_UNSTRIPPED \ 1001 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \ 1002 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \ 1003 TARGET_ROOT_OUT_UNSTRIPPED \ 1004 TARGET_ROOT_OUT_BIN_UNSTRIPPED \ 1005 TARGET_OUT_COVERAGE 1006 1007TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK) 1008TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 1009TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK) 1010TARGET_VENDOR_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK) 1011TARGET_TEST_HARNESS_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_TEST_HARNESS_RAMDISK) 1012 1013TARGET_SYSTEM_DLKM_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_DLKM) 1014.KATI_READONLY := TARGET_SYSTEM_DLKM_OUT 1015 1016TARGET_VENDOR_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_RAMDISK) 1017TARGET_VENDOR_KERNEL_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR_KERNEL_RAMDISK) 1018 1019TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT) 1020TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin 1021TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc 1022TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr 1023.KATI_READONLY := \ 1024 TARGET_ROOT_OUT \ 1025 TARGET_ROOT_OUT_BIN \ 1026 TARGET_ROOT_OUT_ETC \ 1027 TARGET_ROOT_OUT_USR 1028 1029TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY) 1030TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root 1031.KATI_READONLY := \ 1032 TARGET_RECOVERY_OUT \ 1033 TARGET_RECOVERY_ROOT_OUT 1034 1035TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader 1036TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root 1037TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system 1038.KATI_READONLY := \ 1039 TARGET_SYSLOADER_OUT \ 1040 TARGET_SYSLOADER_ROOT_OUT \ 1041 TARGET_SYSLOADER_SYSTEM_OUT 1042 1043TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer 1044TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data 1045TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root 1046TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system 1047.KATI_READONLY := \ 1048 TARGET_INSTALLER_OUT \ 1049 TARGET_INSTALLER_DATA_OUT \ 1050 TARGET_INSTALLER_ROOT_OUT \ 1051 TARGET_INSTALLER_SYSTEM_OUT 1052 1053COMMON_MODULE_CLASSES := TARGET_NOTICE_FILES HOST_NOTICE_FILES HOST_JAVA_LIBRARIES 1054PER_ARCH_MODULE_CLASSES := SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP RENDERSCRIPT_BITCODE NATIVE_TESTS HEADER_LIBRARIES RLIB_LIBRARIES DYLIB_LIBRARIES 1055.KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES 1056 1057ifeq ($(CALLED_FROM_SETUP),true) 1058PRINT_BUILD_CONFIG ?= true 1059endif 1060