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 15 define 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))))) 20 endef 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 define version-list 28 $(1)P1A $(1)P1B $(1)P2A $(1)P2B $(1)D1A $(1)D1B $(1)D2A $(1)D2B $(1)Q1A $(1)Q1B $(1)Q2A $(1)Q2B $(1)Q3A $(1)Q3B 29 endef 30 31 PREV_VERSIONS := OPR1 OPD1 OPD2 OPM1 OPM2 PPR1 PPD1 PPD2 PPM1 PPM2 QPR1 32 ALL_VERSIONS := Q R S T U V W X Y Z 33 ALL_VERSIONS := $(PREV_VERSIONS) $(foreach v,$(ALL_VERSIONS),$(call version-list,$(v))) 34 PREV_VERSIONS := 35 36 # Filters ALL_VERSIONS down to the range [$1, $2], and errors if $1 > $2 or $3 is 37 # not in [$1, $2] 38 # $(1): min platform version 39 # $(2): max platform version 40 # $(3): default platform version 41 define allowed-platform-versions 42 $(strip \ 43 $(if $(filter $(ALL_VERSIONS),$(1)),, 44 $(error Invalid MIN_PLATFORM_VERSION '$(1)')) 45 $(if $(filter $(ALL_VERSIONS),$(2)),, 46 $(error Invalid MAX_PLATFORM_VERSION '$(2)')) 47 $(if $(filter $(ALL_VERSIONS),$(3)),, 48 $(error Invalid DEFAULT_PLATFORM_VERSION '$(3)')) 49 50 $(eval allowed_versions_ := $(call find_and_earlier,$(ALL_VERSIONS),$(2))) 51 52 $(if $(filter $(allowed_versions_),$(1)),, 53 $(error MIN_PLATFORM_VERSION '$(1)' must be before MAX_PLATFORM_VERSION '$(2)')) 54 55 $(eval allowed_versions_ := $(1) \ 56 $(filter-out $(call find_and_earlier,$(allowed_versions_),$(1)),$(allowed_versions_))) 57 58 $(if $(filter $(allowed_versions_),$(3)),, 59 $(error DEFAULT_PLATFORM_VERSION '$(3)' must be between MIN_PLATFORM_VERSION '$(1)' and MAX_PLATFORM_VERSION '$(2)')) 60 61 $(allowed_versions_)) 62 endef 63 64 #$(warning $(call allowed-platform-versions,OPR1,PPR1,OPR1)) 65 #$(warning $(call allowed-platform-versions,OPM1,PPR1,OPR1)) 66 67 # Set up version information. 68 include $(BUILD_SYSTEM)/version_defaults.mk 69 70 ENABLED_VERSIONS := $(call find_and_earlier,$(ALL_VERSIONS),$(TARGET_PLATFORM_VERSION)) 71 72 $(foreach v,$(ENABLED_VERSIONS), \ 73 $(eval IS_AT_LEAST_$(v) := true)) 74 75 # --------------------------------------------------------------- 76 # If you update the build system such that the environment setup 77 # or buildspec.mk need to be updated, increment this number, and 78 # people who haven't re-run those will have to do so before they 79 # can build. Make sure to also update the corresponding value in 80 # buildspec.mk.default and envsetup.sh. 81 CORRECT_BUILD_ENV_SEQUENCE_NUMBER := 13 82 83 # --------------------------------------------------------------- 84 # The product defaults to generic on hardware 85 # NOTE: This will be overridden in product_config.mk if make 86 # was invoked with a PRODUCT-xxx-yyy goal. 87 ifeq ($(TARGET_PRODUCT),) 88 TARGET_PRODUCT := aosp_arm 89 endif 90 91 92 # the variant -- the set of files that are included for a build 93 ifeq ($(strip $(TARGET_BUILD_VARIANT)),) 94 TARGET_BUILD_VARIANT := eng 95 endif 96 97 # --------------------------------------------------------------- 98 # Set up configuration for host machine. We don't do cross- 99 # compiles except for arm/mips, so the HOST is whatever we are 100 # running on 101 102 # HOST_OS 103 ifneq (,$(findstring Linux,$(UNAME))) 104 HOST_OS := linux 105 endif 106 ifneq (,$(findstring Darwin,$(UNAME))) 107 HOST_OS := darwin 108 endif 109 ifneq (,$(findstring Macintosh,$(UNAME))) 110 HOST_OS := darwin 111 endif 112 113 HOST_OS_EXTRA := $(shell uname -rsm) 114 ifeq ($(HOST_OS),linux) 115 ifneq ($(wildcard /etc/os-release),) 116 HOST_OS_EXTRA += $(shell source /etc/os-release; echo $$PRETTY_NAME) 117 endif 118 else ifeq ($(HOST_OS),darwin) 119 HOST_OS_EXTRA += $(shell sw_vers -productVersion) 120 endif 121 HOST_OS_EXTRA := $(subst $(space),-,$(HOST_OS_EXTRA)) 122 123 # BUILD_OS is the real host doing the build. 124 BUILD_OS := $(HOST_OS) 125 126 HOST_CROSS_OS := 127 # We can cross-build Windows binaries on Linux 128 ifeq ($(HOST_OS),linux) 129 ifeq ($(BUILD_HOST_static),) 130 HOST_CROSS_OS := windows 131 HOST_CROSS_ARCH := x86 132 HOST_CROSS_2ND_ARCH := x86_64 133 2ND_HOST_CROSS_IS_64_BIT := true 134 endif 135 endif 136 137 ifeq ($(HOST_OS),) 138 $(error Unable to determine HOST_OS from uname -sm: $(UNAME)!) 139 endif 140 141 # HOST_ARCH 142 ifneq (,$(findstring x86_64,$(UNAME))) 143 HOST_ARCH := x86_64 144 HOST_2ND_ARCH := x86 145 HOST_IS_64_BIT := true 146 else 147 ifneq (,$(findstring i686,$(UNAME))$(findstring x86,$(UNAME))) 148 $(error Building on a 32-bit x86 host is not supported: $(UNAME)!) 149 endif 150 endif 151 152 ifeq ($(HOST_OS),darwin) 153 # Mac no longer supports 32-bit executables 154 HOST_2ND_ARCH := 155 endif 156 157 HOST_2ND_ARCH_VAR_PREFIX := 2ND_ 158 HOST_2ND_ARCH_MODULE_SUFFIX := _32 159 HOST_CROSS_2ND_ARCH_VAR_PREFIX := 2ND_ 160 HOST_CROSS_2ND_ARCH_MODULE_SUFFIX := _64 161 TARGET_2ND_ARCH_VAR_PREFIX := 2ND_ 162 .KATI_READONLY := \ 163 HOST_ARCH \ 164 HOST_2ND_ARCH \ 165 HOST_IS_64_BIT \ 166 HOST_2ND_ARCH_VAR_PREFIX \ 167 HOST_2ND_ARCH_MODULE_SUFFIX \ 168 HOST_CROSS_2ND_ARCH_VAR_PREFIX \ 169 HOST_CROSS_2ND_ARCH_MODULE_SUFFIX \ 170 TARGET_2ND_ARCH_VAR_PREFIX \ 171 172 combo_target := HOST_ 173 combo_2nd_arch_prefix := 174 include $(BUILD_COMBOS)/select.mk 175 176 ifdef HOST_2ND_ARCH 177 combo_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX) 178 include $(BUILD_SYSTEM)/combo/select.mk 179 endif 180 181 # Load the windows cross compiler under Linux 182 ifdef HOST_CROSS_OS 183 combo_target := HOST_CROSS_ 184 combo_2nd_arch_prefix := 185 include $(BUILD_SYSTEM)/combo/select.mk 186 187 ifdef HOST_CROSS_2ND_ARCH 188 combo_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX) 189 include $(BUILD_SYSTEM)/combo/select.mk 190 endif 191 endif 192 193 # on windows, the tools have .exe at the end, and we depend on the 194 # host config stuff being done first 195 196 BUILD_ARCH := $(HOST_ARCH) 197 BUILD_2ND_ARCH := $(HOST_2ND_ARCH) 198 199 ifeq ($(HOST_ARCH),) 200 $(error Unable to determine HOST_ARCH from uname -sm: $(UNAME)!) 201 endif 202 203 # the host build defaults to release, and it must be release or debug 204 ifeq ($(HOST_BUILD_TYPE),) 205 HOST_BUILD_TYPE := release 206 endif 207 208 ifneq ($(HOST_BUILD_TYPE),release) 209 ifneq ($(HOST_BUILD_TYPE),debug) 210 $(error HOST_BUILD_TYPE must be either release or debug, not '$(HOST_BUILD_TYPE)') 211 endif 212 endif 213 214 # We don't want to move all the prebuilt host tools to a $(HOST_OS)-x86_64 dir. 215 HOST_PREBUILT_ARCH := x86 216 # This is the standard way to name a directory containing prebuilt host 217 # objects. E.g., prebuilt/$(HOST_PREBUILT_TAG)/cc 218 HOST_PREBUILT_TAG := $(BUILD_OS)-$(HOST_PREBUILT_ARCH) 219 220 # TARGET_COPY_OUT_* are all relative to the staging directory, ie PRODUCT_OUT. 221 # Define them here so they can be used in product config files. 222 TARGET_COPY_OUT_SYSTEM := system 223 TARGET_COPY_OUT_SYSTEM_OTHER := system_other 224 TARGET_COPY_OUT_DATA := data 225 TARGET_COPY_OUT_ASAN := $(TARGET_COPY_OUT_DATA)/asan 226 TARGET_COPY_OUT_OEM := oem 227 TARGET_COPY_OUT_RAMDISK := ramdisk 228 TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk 229 TARGET_COPY_OUT_ROOT := root 230 TARGET_COPY_OUT_RECOVERY := recovery 231 # The directory used for optional partitions depend on the BoardConfig, so 232 # they're defined to placeholder values here and swapped after reading the 233 # BoardConfig, to be either the partition dir, or a subdir within 'system'. 234 _vendor_path_placeholder := ||VENDOR-PATH-PH|| 235 _product_path_placeholder := ||PRODUCT-PATH-PH|| 236 _product_services_path_placeholder := ||PRODUCT_SERVICES-PATH-PH|| 237 _odm_path_placeholder := ||ODM-PATH-PH|| 238 TARGET_COPY_OUT_VENDOR := $(_vendor_path_placeholder) 239 TARGET_COPY_OUT_PRODUCT := $(_product_path_placeholder) 240 TARGET_COPY_OUT_PRODUCT_SERVICES := $(_product_services_path_placeholder) 241 TARGET_COPY_OUT_ODM := $(_odm_path_placeholder) 242 243 # Returns the non-sanitized version of the path provided in $1. 244 define get_non_asan_path 245 $(patsubst $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/%,$(PRODUCT_OUT)/%,$1) 246 endef 247 248 ################################################################# 249 # Set up minimal BOOTCLASSPATH list of jars to build/execute 250 # java code with dalvikvm/art. 251 # Jars present in the runtime apex. These should match exactly the list of 252 # Java libraries in the runtime apex build rule. 253 RUNTIME_APEX_JARS := core-oj core-libart okhttp bouncycastle apache-xml 254 TARGET_CORE_JARS := $(RUNTIME_APEX_JARS) conscrypt 255 ifeq ($(EMMA_INSTRUMENT),true) 256 ifneq ($(EMMA_INSTRUMENT_STATIC),true) 257 # For instrumented build, if Jacoco is not being included statically 258 # in instrumented packages then include Jacoco classes into the 259 # bootclasspath. 260 TARGET_CORE_JARS += jacocoagent 261 endif # EMMA_INSTRUMENT_STATIC 262 endif # EMMA_INSTRUMENT 263 HOST_CORE_JARS := $(addsuffix -hostdex,$(TARGET_CORE_JARS)) 264 ################################################################# 265 266 # Read the product specs so we can get TARGET_DEVICE and other 267 # variables that we need in order to locate the output files. 268 include $(BUILD_SYSTEM)/product_config.mk 269 270 build_variant := $(filter-out eng user userdebug,$(TARGET_BUILD_VARIANT)) 271 ifneq ($(build_variant)-$(words $(TARGET_BUILD_VARIANT)),-1) 272 $(warning bad TARGET_BUILD_VARIANT: $(TARGET_BUILD_VARIANT)) 273 $(error must be empty or one of: eng user userdebug) 274 endif 275 276 SDK_HOST_ARCH := x86 277 TARGET_OS := linux 278 279 include $(BUILD_SYSTEM)/board_config.mk 280 281 # the target build type defaults to release 282 ifneq ($(TARGET_BUILD_TYPE),debug) 283 TARGET_BUILD_TYPE := release 284 endif 285 286 # --------------------------------------------------------------- 287 # figure out the output directories 288 289 SOONG_OUT_DIR := $(OUT_DIR)/soong 290 291 TARGET_OUT_ROOT := $(OUT_DIR)/target 292 293 HOST_OUT_ROOT := $(OUT_DIR)/host 294 295 .KATI_READONLY := SOONG_OUT_DIR TARGET_OUT_ROOT HOST_OUT_ROOT 296 297 # We want to avoid two host bin directories in multilib build. 298 HOST_OUT := $(HOST_OUT_ROOT)/$(HOST_OS)-$(HOST_PREBUILT_ARCH) 299 SOONG_HOST_OUT := $(SOONG_OUT_DIR)/host/$(HOST_OS)-$(HOST_PREBUILT_ARCH) 300 301 HOST_CROSS_OUT := $(HOST_OUT_ROOT)/windows-$(HOST_PREBUILT_ARCH) 302 303 .KATI_READONLY := HOST_OUT SOONG_HOST_OUT HOST_CROSS_OUT 304 305 TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product 306 307 TARGET_COMMON_OUT_ROOT := $(TARGET_OUT_ROOT)/common 308 HOST_COMMON_OUT_ROOT := $(HOST_OUT_ROOT)/common 309 310 PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE) 311 312 .KATI_READONLY := TARGET_PRODUCT_OUT_ROOT TARGET_COMMON_OUT_ROOT HOST_COMMON_OUT_ROOT PRODUCT_OUT 313 314 OUT_DOCS := $(TARGET_COMMON_OUT_ROOT)/docs 315 OUT_NDK_DOCS := $(TARGET_COMMON_OUT_ROOT)/ndk-docs 316 .KATI_READONLY := OUT_DOCS OUT_NDK_DOCS 317 318 $(call KATI_obsolete,BUILD_OUT,Use HOST_OUT instead) 319 320 BUILD_OUT_EXECUTABLES := $(HOST_OUT)/bin 321 SOONG_HOST_OUT_EXECUTABLES := $(SOONG_HOST_OUT)/bin 322 .KATI_READONLY := BUILD_OUT_EXECUTABLES SOONG_HOST_OUT_EXECUTABLES 323 324 HOST_OUT_EXECUTABLES := $(HOST_OUT)/bin 325 HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib64 326 HOST_OUT_RENDERSCRIPT_BITCODE := $(HOST_OUT_SHARED_LIBRARIES) 327 HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT)/framework 328 HOST_OUT_SDK_ADDON := $(HOST_OUT)/sdk_addon 329 HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest64 330 HOST_OUT_COVERAGE := $(HOST_OUT)/coverage 331 HOST_OUT_TESTCASES := $(HOST_OUT)/testcases 332 .KATI_READONLY := \ 333 HOST_OUT_EXECUTABLES \ 334 HOST_OUT_SHARED_LIBRARIES \ 335 HOST_OUT_RENDERSCRIPT_BITCODE \ 336 HOST_OUT_JAVA_LIBRARIES \ 337 HOST_OUT_SDK_ADDON \ 338 HOST_OUT_NATIVE_TESTS \ 339 HOST_OUT_COVERAGE \ 340 HOST_OUT_TESTCASES 341 342 HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT)/bin 343 HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib 344 HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest 345 HOST_CROSS_OUT_COVERAGE := $(HOST_CROSS_OUT)/coverage 346 HOST_CROSS_OUT_TESTCASES := $(HOST_CROSS_OUT)/testcases 347 .KATI_READONLY := \ 348 HOST_CROSS_OUT_EXECUTABLES \ 349 HOST_CROSS_OUT_SHARED_LIBRARIES \ 350 HOST_CROSS_OUT_NATIVE_TESTS \ 351 HOST_CROSS_OUT_COVERAGE \ 352 HOST_CROSS_OUT_TESTCASES 353 354 HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj 355 HOST_OUT_NOTICE_FILES := $(HOST_OUT_INTERMEDIATES)/NOTICE_FILES 356 HOST_OUT_COMMON_INTERMEDIATES := $(HOST_COMMON_OUT_ROOT)/obj 357 HOST_OUT_FAKE := $(HOST_OUT)/fake_packages 358 .KATI_READONLY := \ 359 HOST_OUT_INTERMEDIATES \ 360 HOST_OUT_NOTICE_FILES \ 361 HOST_OUT_COMMON_INTERMEDIATES \ 362 HOST_OUT_FAKE 363 364 # Nano environment config 365 include $(BUILD_SYSTEM)/aux_config.mk 366 367 HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj 368 HOST_CROSS_OUT_NOTICE_FILES := $(HOST_CROSS_OUT_INTERMEDIATES)/NOTICE_FILES 369 .KATI_READONLY := \ 370 HOST_CROSS_OUT_INTERMEDIATES \ 371 HOST_CROSS_OUT_NOTICE_FILES 372 373 HOST_OUT_GEN := $(HOST_OUT)/gen 374 HOST_OUT_COMMON_GEN := $(HOST_COMMON_OUT_ROOT)/gen 375 .KATI_READONLY := \ 376 HOST_OUT_GEN \ 377 HOST_OUT_COMMON_GEN 378 379 HOST_CROSS_OUT_GEN := $(HOST_CROSS_OUT)/gen 380 .KATI_READONLY := HOST_CROSS_OUT_GEN 381 382 HOST_OUT_TEST_CONFIG := $(HOST_OUT)/test_config 383 .KATI_READONLY := HOST_OUT_TEST_CONFIG 384 385 # Out for HOST_2ND_ARCH 386 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES := $(HOST_OUT)/obj32 387 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES := $(HOST_OUT)/lib 388 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES := $(HOST_OUT_EXECUTABLES) 389 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES := $(HOST_OUT_JAVA_LIBRARIES) 390 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS := $(HOST_OUT)/nativetest 391 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES := $(HOST_OUT_TESTCASES) 392 .KATI_READONLY := \ 393 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_INTERMEDIATES \ 394 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES \ 395 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_EXECUTABLES \ 396 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_JAVA_LIBRARIES \ 397 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_NATIVE_TESTS \ 398 $(HOST_2ND_ARCH_VAR_PREFIX)HOST_OUT_TESTCASES 399 400 # The default host library path. 401 # It always points to the path where we build libraries in the default bitness. 402 HOST_LIBRARY_PATH := $(HOST_OUT_SHARED_LIBRARIES) 403 .KATI_READONLY := HOST_LIBRARY_PATH 404 405 # Out for HOST_CROSS_2ND_ARCH 406 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES := $(HOST_CROSS_OUT)/obj64 407 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES := $(HOST_CROSS_OUT)/lib64 408 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES := $(HOST_CROSS_OUT_EXECUTABLES) 409 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS := $(HOST_CROSS_OUT)/nativetest64 410 .KATI_READONLY := \ 411 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_INTERMEDIATES \ 412 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_SHARED_LIBRARIES \ 413 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_EXECUTABLES \ 414 $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)HOST_CROSS_OUT_NATIVE_TESTS 415 416 ifneq ($(filter address,$(SANITIZE_TARGET)),) 417 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_asan 418 else 419 TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj 420 endif 421 TARGET_OUT_HEADERS := $(TARGET_OUT_INTERMEDIATES)/include 422 .KATI_READONLY := TARGET_OUT_INTERMEDIATES TARGET_OUT_HEADERS 423 424 ifneq ($(filter address,$(SANITIZE_TARGET)),) 425 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj_asan 426 else 427 TARGET_OUT_COMMON_INTERMEDIATES := $(TARGET_COMMON_OUT_ROOT)/obj 428 endif 429 .KATI_READONLY := TARGET_OUT_COMMON_INTERMEDIATES 430 431 TARGET_OUT_GEN := $(PRODUCT_OUT)/gen 432 TARGET_OUT_COMMON_GEN := $(TARGET_COMMON_OUT_ROOT)/gen 433 .KATI_READONLY := TARGET_OUT_GEN TARGET_OUT_COMMON_GEN 434 435 TARGET_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM) 436 .KATI_READONLY := TARGET_OUT 437 ifneq ($(filter address,$(SANITIZE_TARGET)),) 438 target_out_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 439 ifeq ($(SANITIZE_LITE),true) 440 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 441 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 442 target_out_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/system 443 else 444 target_out_app_base := $(TARGET_OUT) 445 endif 446 else 447 target_out_shared_libraries_base := $(TARGET_OUT) 448 target_out_app_base := $(TARGET_OUT) 449 endif 450 451 TARGET_OUT_EXECUTABLES := $(TARGET_OUT)/bin 452 TARGET_OUT_OPTIONAL_EXECUTABLES := $(TARGET_OUT)/xbin 453 ifeq ($(TARGET_IS_64_BIT),true) 454 # /system/lib always contains 32-bit libraries, 455 # and /system/lib64 (if present) always contains 64-bit libraries. 456 TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib64 457 else 458 TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 459 endif 460 TARGET_OUT_RENDERSCRIPT_BITCODE := $(TARGET_OUT_SHARED_LIBRARIES) 461 TARGET_OUT_JAVA_LIBRARIES := $(TARGET_OUT)/framework 462 TARGET_OUT_APPS := $(target_out_app_base)/app 463 TARGET_OUT_APPS_PRIVILEGED := $(target_out_app_base)/priv-app 464 TARGET_OUT_KEYLAYOUT := $(TARGET_OUT)/usr/keylayout 465 TARGET_OUT_KEYCHARS := $(TARGET_OUT)/usr/keychars 466 TARGET_OUT_ETC := $(TARGET_OUT)/etc 467 TARGET_OUT_NOTICE_FILES := $(TARGET_OUT_INTERMEDIATES)/NOTICE_FILES 468 TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages 469 TARGET_OUT_TESTCASES := $(PRODUCT_OUT)/testcases 470 TARGET_OUT_TEST_CONFIG := $(PRODUCT_OUT)/test_config 471 .KATI_READONLY := \ 472 TARGET_OUT_EXECUTABLES \ 473 TARGET_OUT_OPTIONAL_EXECUTABLES \ 474 TARGET_OUT_SHARED_LIBRARIES \ 475 TARGET_OUT_RENDERSCRIPT_BITCODE \ 476 TARGET_OUT_JAVA_LIBRARIES \ 477 TARGET_OUT_APPS \ 478 TARGET_OUT_APPS_PRIVILEGED \ 479 TARGET_OUT_KEYLAYOUT \ 480 TARGET_OUT_KEYCHARS \ 481 TARGET_OUT_ETC \ 482 TARGET_OUT_NOTICE_FILES \ 483 TARGET_OUT_FAKE \ 484 TARGET_OUT_TESTCASES \ 485 TARGET_OUT_TEST_CONFIG 486 487 ifeq ($(SANITIZE_LITE),true) 488 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 489 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 490 TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 491 else 492 TARGET_OUT_SYSTEM_OTHER := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_SYSTEM_OTHER) 493 endif 494 .KATI_READONLY := TARGET_OUT_SYSTEM_OTHER 495 496 # Out for TARGET_2ND_ARCH 497 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 498 # With this you can reference the arm binary translation library with libfoo_arm in PRODUCT_PACKAGES. 499 TARGET_2ND_ARCH_MODULE_SUFFIX := _$(TARGET_2ND_ARCH) 500 else 501 TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) 502 endif 503 .KATI_READONLY := TARGET_2ND_ARCH_MODULE_SUFFIX 504 505 ifneq ($(filter address,$(SANITIZE_TARGET)),) 506 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH)_asan 507 else 508 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH) 509 endif 510 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 511 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) 512 else 513 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib 514 endif 515 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 516 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 517 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) 518 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED := $(TARGET_OUT_APPS_PRIVILEGED) 519 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES := $(TARGET_OUT_TESTCASES) 520 .KATI_READONLY := \ 521 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES \ 522 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES \ 523 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE \ 524 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES \ 525 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS \ 526 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS_PRIVILEGED \ 527 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_TESTCASES 528 529 MODULE_CLASS_APPS := app 530 MODULE_CLASS_EXECUTABLES := bin 531 MODULE_CLASS_JAVA_LIBRARIES := framework 532 MODULE_CLASS_NATIVE_TESTS := nativetest 533 MODULE_CLASS_METRIC_TESTS := benchmarktest 534 TARGET_OUT_DATA := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DATA) 535 TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) 536 TARGET_OUT_DATA_SHARED_LIBRARIES := $(TARGET_OUT_SHARED_LIBRARIES) 537 TARGET_OUT_DATA_JAVA_LIBRARIES := $(TARGET_OUT_DATA)/framework 538 TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA)/app 539 TARGET_OUT_DATA_KEYLAYOUT := $(TARGET_OUT_KEYLAYOUT) 540 TARGET_OUT_DATA_KEYCHARS := $(TARGET_OUT_KEYCHARS) 541 TARGET_OUT_DATA_ETC := $(TARGET_OUT_ETC) 542 ifeq ($(TARGET_IS_64_BIT),true) 543 TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64 544 TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64 545 TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest64$(TARGET_VENDOR_TEST_SUFFIX) 546 TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest64$(TARGET_VENDOR_TEST_SUFFIX) 547 else 548 TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 549 TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 550 TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 551 TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 552 endif 553 MODULE_CLASS_FAKE := fake_packages 554 TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages 555 .KATI_READONLY := \ 556 TARGET_OUT_DATA \ 557 TARGET_OUT_DATA_EXECUTABLES \ 558 TARGET_OUT_DATA_SHARED_LIBRARIES \ 559 TARGET_OUT_DATA_JAVA_LIBRARIES \ 560 TARGET_OUT_DATA_APPS \ 561 TARGET_OUT_DATA_KEYLAYOUT \ 562 TARGET_OUT_DATA_KEYCHARS \ 563 TARGET_OUT_DATA_ETC \ 564 TARGET_OUT_DATA_NATIVE_TESTS \ 565 TARGET_OUT_DATA_METRIC_TESTS \ 566 TARGET_OUT_VENDOR_NATIVE_TESTS \ 567 TARGET_OUT_VENDOR_METRIC_TESTS \ 568 TARGET_OUT_DATA_FAKE \ 569 MODULE_CLASS_APPS \ 570 MODULE_CLASS_EXECUTABLES \ 571 MODULE_CLASS_JAVA_LIBRARIES \ 572 MODULE_CLASS_NATIVE_TESTS \ 573 MODULE_CLASS_METRIC_TESTS \ 574 MODULE_CLASS_FAKE 575 576 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) 577 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) 578 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) 579 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 580 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH) 581 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest/$(TARGET_2ND_ARCH) 582 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH)$(TARGET_VENDOR_TEST_SUFFIX) 583 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest/$(TARGET_2ND_ARCH)$(TARGET_VENDOR_TEST_SUFFIX) 584 else 585 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest 586 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest 587 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest$(TARGET_VENDOR_TEST_SUFFIX) 588 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS := $(TARGET_OUT_DATA)/benchmarktest$(TARGET_VENDOR_TEST_SUFFIX) 589 endif 590 .KATI_READONLY := \ 591 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES \ 592 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES \ 593 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS \ 594 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS \ 595 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_METRIC_TESTS \ 596 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_NATIVE_TESTS \ 597 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_METRIC_TESTS \ 598 599 TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache 600 .KATI_READONLY := TARGET_OUT_CACHE 601 602 TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) 603 .KATI_READONLY := TARGET_OUT_VENDOR 604 ifneq ($(filter address,$(SANITIZE_TARGET)),) 605 target_out_vendor_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 606 ifeq ($(SANITIZE_LITE),true) 607 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 608 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 609 target_out_vendor_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_VENDOR) 610 else 611 target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 612 endif 613 else 614 target_out_vendor_shared_libraries_base := $(TARGET_OUT_VENDOR) 615 target_out_vendor_app_base := $(TARGET_OUT_VENDOR) 616 endif 617 618 TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR)/bin 619 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES := $(TARGET_OUT_VENDOR)/xbin 620 ifeq ($(TARGET_IS_64_BIT),true) 621 TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib64 622 else 623 TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 624 endif 625 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $(TARGET_OUT_VENDOR_SHARED_LIBRARIES) 626 TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework 627 TARGET_OUT_VENDOR_APPS := $(target_out_vendor_app_base)/app 628 TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(target_out_vendor_app_base)/priv-app 629 TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc 630 .KATI_READONLY := \ 631 TARGET_OUT_VENDOR_EXECUTABLES \ 632 TARGET_OUT_VENDOR_OPTIONAL_EXECUTABLES \ 633 TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 634 TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 635 TARGET_OUT_VENDOR_JAVA_LIBRARIES \ 636 TARGET_OUT_VENDOR_APPS \ 637 TARGET_OUT_VENDOR_APPS_PRIVILEGED \ 638 TARGET_OUT_VENDOR_ETC 639 640 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) 641 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 642 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) 643 else 644 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(target_out_vendor_shared_libraries_base)/lib 645 endif 646 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES) 647 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) 648 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR_APPS_PRIVILEGED) 649 .KATI_READONLY := \ 650 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES \ 651 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES \ 652 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_RENDERSCRIPT_BITCODE \ 653 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS \ 654 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS_PRIVILEGED 655 656 TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) 657 TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM)/bin 658 ifeq ($(TARGET_IS_64_BIT),true) 659 TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib64 660 else 661 TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 662 endif 663 # We don't expect Java libraries in the oem.img. 664 # TARGET_OUT_OEM_JAVA_LIBRARIES:= $(TARGET_OUT_OEM)/framework 665 TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app 666 TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc 667 .KATI_READONLY := \ 668 TARGET_OUT_OEM \ 669 TARGET_OUT_OEM_EXECUTABLES \ 670 TARGET_OUT_OEM_SHARED_LIBRARIES \ 671 TARGET_OUT_OEM_APPS \ 672 TARGET_OUT_OEM_ETC 673 674 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) 675 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 676 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib/$(TARGET_2ND_ARCH) 677 else 678 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib 679 endif 680 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) 681 .KATI_READONLY := \ 682 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES \ 683 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES \ 684 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS \ 685 686 TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) 687 ifneq ($(filter address,$(SANITIZE_TARGET)),) 688 target_out_odm_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 689 ifeq ($(SANITIZE_LITE),true) 690 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 691 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 692 target_out_odm_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_OEM) 693 else 694 target_out_odm_app_base := $(TARGET_OUT_ODM) 695 endif 696 else 697 target_out_odm_shared_libraries_base := $(TARGET_OUT_ODM) 698 target_out_odm_app_base := $(TARGET_OUT_ODM) 699 endif 700 701 TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM)/bin 702 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES := $(TARGET_OUT_ODM)/xbin 703 ifeq ($(TARGET_IS_64_BIT),true) 704 TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib64 705 else 706 TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 707 endif 708 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $(TARGET_OUT_ODM_SHARED_LIBRARIES) 709 TARGET_OUT_ODM_JAVA_LIBRARIES := $(TARGET_OUT_ODM)/framework 710 TARGET_OUT_ODM_APPS := $(target_out_odm_app_base)/app 711 TARGET_OUT_ODM_APPS_PRIVILEGED := $(target_out_odm_app_base)/priv-app 712 TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc 713 .KATI_READONLY := \ 714 TARGET_OUT_ODM \ 715 TARGET_OUT_ODM_EXECUTABLES \ 716 TARGET_OUT_ODM_OPTIONAL_EXECUTABLES \ 717 TARGET_OUT_ODM_SHARED_LIBRARIES \ 718 TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 719 TARGET_OUT_ODM_JAVA_LIBRARIES \ 720 TARGET_OUT_ODM_APPS \ 721 TARGET_OUT_ODM_APPS_PRIVILEGED \ 722 TARGET_OUT_ODM_ETC 723 724 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) 725 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 726 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) 727 else 728 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(target_out_odm_shared_libraries_base)/lib 729 endif 730 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES) 731 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) 732 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED := $(TARGET_OUT_ODM_APPS_PRIVILEGED) 733 .KATI_READONLY := \ 734 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES \ 735 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES \ 736 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_RENDERSCRIPT_BITCODE \ 737 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS \ 738 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS_PRIVILEGED 739 740 TARGET_OUT_PRODUCT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT) 741 TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT)/bin 742 .KATI_READONLY := TARGET_OUT_PRODUCT 743 ifneq ($(filter address,$(SANITIZE_TARGET)),) 744 target_out_product_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 745 ifeq ($(SANITIZE_LITE),true) 746 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 747 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 748 target_out_product_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT) 749 else 750 target_out_product_app_base := $(TARGET_OUT_PRODUCT) 751 endif 752 else 753 target_out_product_shared_libraries_base := $(TARGET_OUT_PRODUCT) 754 target_out_product_app_base := $(TARGET_OUT_PRODUCT) 755 endif 756 757 ifeq ($(TARGET_IS_64_BIT),true) 758 TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib64 759 else 760 TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 761 endif 762 TARGET_OUT_PRODUCT_JAVA_LIBRARIES := $(TARGET_OUT_PRODUCT)/framework 763 TARGET_OUT_PRODUCT_APPS := $(target_out_product_app_base)/app 764 TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(target_out_product_app_base)/priv-app 765 TARGET_OUT_PRODUCT_ETC := $(TARGET_OUT_PRODUCT)/etc 766 .KATI_READONLY := \ 767 TARGET_OUT_PRODUCT_EXECUTABLES \ 768 TARGET_OUT_PRODUCT_SHARED_LIBRARIES \ 769 TARGET_OUT_PRODUCT_JAVA_LIBRARIES \ 770 TARGET_OUT_PRODUCT_APPS \ 771 TARGET_OUT_PRODUCT_APPS_PRIVILEGED \ 772 TARGET_OUT_PRODUCT_ETC 773 774 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES := $(TARGET_OUT_PRODUCT_EXECUTABLES) 775 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 776 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) 777 else 778 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES := $(target_out_product_shared_libraries_base)/lib 779 endif 780 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS := $(TARGET_OUT_PRODUCT_APPS) 781 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_APPS_PRIVILEGED) 782 .KATI_READONLY := \ 783 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_EXECUTABLES \ 784 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SHARED_LIBRARIES \ 785 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS \ 786 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_APPS_PRIVILEGED 787 788 TARGET_OUT_PRODUCT_SERVICES := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) 789 ifneq ($(filter address,$(SANITIZE_TARGET)),) 790 target_out_product_services_shared_libraries_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) 791 ifeq ($(SANITIZE_LITE),true) 792 # When using SANITIZE_LITE, APKs must not be packaged with sanitized libraries, as they will not 793 # work with unsanitized app_process. For simplicity, generate APKs into /data/asan/. 794 target_out_product_services_app_base := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ASAN)/$(TARGET_COPY_OUT_PRODUCT_SERVICES) 795 else 796 target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES) 797 endif 798 else 799 target_out_product_services_shared_libraries_base := $(TARGET_OUT_PRODUCT_SERVICES) 800 target_out_product_services_app_base := $(TARGET_OUT_PRODUCT_SERVICES) 801 endif 802 803 ifeq ($(TARGET_IS_64_BIT),true) 804 TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib64 805 else 806 TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib 807 endif 808 TARGET_OUT_PRODUCT_SERVICES_JAVA_LIBRARIES:= $(TARGET_OUT_PRODUCT_SERVICES)/framework 809 TARGET_OUT_PRODUCT_SERVICES_APPS := $(target_out_product_services_app_base)/app 810 TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(target_out_product_services_app_base)/priv-app 811 TARGET_OUT_PRODUCT_SERVICES_ETC := $(TARGET_OUT_PRODUCT_SERVICES)/etc 812 813 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) 814 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) 815 else 816 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_SHARED_LIBRARIES := $(target_out_product_services_shared_libraries_base)/lib 817 endif 818 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS := $(TARGET_OUT_PRODUCT_SERVICES_APPS) 819 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED := $(TARGET_OUT_PRODUCT_SERVICES_APPS_PRIVILEGED) 820 821 TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad 822 .KATI_READONLY := TARGET_OUT_BREAKPAD 823 824 TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols 825 TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin 826 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib 827 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/$(TARGET_COPY_OUT_VENDOR)/lib 828 TARGET_ROOT_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 829 TARGET_ROOT_OUT_SBIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/sbin 830 TARGET_ROOT_OUT_BIN_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/bin 831 TARGET_OUT_COVERAGE := $(PRODUCT_OUT)/coverage 832 .KATI_READONLY := \ 833 TARGET_OUT_UNSTRIPPED \ 834 TARGET_OUT_EXECUTABLES_UNSTRIPPED \ 835 TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED \ 836 TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED \ 837 TARGET_ROOT_OUT_UNSTRIPPED \ 838 TARGET_ROOT_OUT_SBIN_UNSTRIPPED \ 839 TARGET_ROOT_OUT_BIN_UNSTRIPPED \ 840 TARGET_OUT_COVERAGE 841 842 TARGET_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RAMDISK) 843 TARGET_RAMDISK_OUT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED) 844 TARGET_DEBUG_RAMDISK_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_DEBUG_RAMDISK) 845 846 TARGET_ROOT_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ROOT) 847 TARGET_ROOT_OUT_BIN := $(TARGET_ROOT_OUT)/bin 848 TARGET_ROOT_OUT_SBIN := $(TARGET_ROOT_OUT)/sbin 849 TARGET_ROOT_OUT_ETC := $(TARGET_ROOT_OUT)/etc 850 TARGET_ROOT_OUT_USR := $(TARGET_ROOT_OUT)/usr 851 .KATI_READONLY := \ 852 TARGET_ROOT_OUT \ 853 TARGET_ROOT_OUT_BIN \ 854 TARGET_ROOT_OUT_SBIN \ 855 TARGET_ROOT_OUT_ETC \ 856 TARGET_ROOT_OUT_USR 857 858 TARGET_RECOVERY_OUT := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_RECOVERY) 859 TARGET_RECOVERY_ROOT_OUT := $(TARGET_RECOVERY_OUT)/root 860 .KATI_READONLY := \ 861 TARGET_RECOVERY_OUT \ 862 TARGET_RECOVERY_ROOT_OUT 863 864 TARGET_SYSLOADER_OUT := $(PRODUCT_OUT)/sysloader 865 TARGET_SYSLOADER_ROOT_OUT := $(TARGET_SYSLOADER_OUT)/root 866 TARGET_SYSLOADER_SYSTEM_OUT := $(TARGET_SYSLOADER_OUT)/root/system 867 .KATI_READONLY := \ 868 TARGET_SYSLOADER_OUT \ 869 TARGET_SYSLOADER_ROOT_OUT \ 870 TARGET_SYSLOADER_SYSTEM_OUT 871 872 TARGET_INSTALLER_OUT := $(PRODUCT_OUT)/installer 873 TARGET_INSTALLER_DATA_OUT := $(TARGET_INSTALLER_OUT)/data 874 TARGET_INSTALLER_ROOT_OUT := $(TARGET_INSTALLER_OUT)/root 875 TARGET_INSTALLER_SYSTEM_OUT := $(TARGET_INSTALLER_OUT)/root/system 876 .KATI_READONLY := \ 877 TARGET_INSTALLER_OUT \ 878 TARGET_INSTALLER_DATA_OUT \ 879 TARGET_INSTALLER_ROOT_OUT \ 880 TARGET_INSTALLER_SYSTEM_OUT 881 882 COMMON_MODULE_CLASSES := TARGET-NOTICE_FILES HOST-NOTICE_FILES HOST-JAVA_LIBRARIES 883 PER_ARCH_MODULE_CLASSES := SHARED_LIBRARIES STATIC_LIBRARIES EXECUTABLES GYP RENDERSCRIPT_BITCODE NATIVE_TESTS HEADER_LIBRARIES 884 .KATI_READONLY := COMMON_MODULE_CLASSES PER_ARCH_MODULE_CLASSES 885 886 ifeq ($(CALLED_FROM_SETUP),true) 887 PRINT_BUILD_CONFIG ?= true 888 endif 889