diff options
Diffstat (limited to 'core/board_config.mk')
-rw-r--r-- | core/board_config.mk | 410 |
1 files changed, 312 insertions, 98 deletions
diff --git a/core/board_config.mk b/core/board_config.mk index 86162b6f37..1b08f9a0b4 100644 --- a/core/board_config.mk +++ b/core/board_config.mk @@ -16,81 +16,125 @@ # ############################################################### # This file includes BoardConfig.mk for the device being built, -# and sanity-checks the variable defined therein. +# and checks the variable defined therein. # ############################################################### -_board_strip_readonly_list := \ - BOARD_EGL_CFG \ - BOARD_HAVE_BLUETOOTH \ - BOARD_INSTALLER_CMDLINE \ - BOARD_KERNEL_CMDLINE \ - BOARD_KERNEL_BASE \ - BOARD_USES_GENERIC_AUDIO \ - BOARD_USES_RECOVERY_AS_BOOT \ - BOARD_VENDOR_USE_AKMD \ - BOARD_WPA_SUPPLICANT_DRIVER \ - BOARD_WLAN_DEVICE \ - TARGET_ARCH \ - TARGET_ARCH_VARIANT \ - TARGET_CPU_ABI \ - TARGET_CPU_ABI2 \ - TARGET_CPU_VARIANT \ - TARGET_CPU_VARIANT_RUNTIME \ - TARGET_2ND_ARCH \ - TARGET_2ND_ARCH_VARIANT \ - TARGET_2ND_CPU_ABI \ - TARGET_2ND_CPU_ABI2 \ - TARGET_2ND_CPU_VARIANT \ - TARGET_2ND_CPU_VARIANT_RUNTIME \ - TARGET_BOARD_PLATFORM \ - TARGET_BOARD_PLATFORM_GPU \ - TARGET_BOOTLOADER_BOARD_NAME \ - TARGET_FS_CONFIG_GEN \ - TARGET_NO_BOOTLOADER \ - TARGET_NO_KERNEL \ - TARGET_NO_RECOVERY \ - TARGET_NO_RADIOIMAGE \ - TARGET_HARDWARE_3D \ - WITH_DEXPREOPT \ +_board_strip_readonly_list := +_board_strip_readonly_list += BOARD_BOOTLOADER_IN_UPDATE_PACKAGE +_board_strip_readonly_list += BOARD_EGL_CFG +_board_strip_readonly_list += BOARD_HAVE_BLUETOOTH +_board_strip_readonly_list += BOARD_INSTALLER_CMDLINE +_board_strip_readonly_list += BOARD_KERNEL_CMDLINE +_board_strip_readonly_list += BOARD_BOOT_HEADER_VERSION +_board_strip_readonly_list += BOARD_BOOTCONFIG +_board_strip_readonly_list += BOARD_KERNEL_BASE +_board_strip_readonly_list += BOARD_USES_GENERIC_AUDIO +_board_strip_readonly_list += BOARD_USES_RECOVERY_AS_BOOT +_board_strip_readonly_list += BOARD_VENDOR_USE_AKMD +_board_strip_readonly_list += BOARD_WPA_SUPPLICANT_DRIVER +_board_strip_readonly_list += BOARD_WLAN_DEVICE +_board_strip_readonly_list += TARGET_BOARD_PLATFORM +_board_strip_readonly_list += TARGET_BOARD_PLATFORM_GPU +_board_strip_readonly_list += TARGET_BOOTLOADER_BOARD_NAME +_board_strip_readonly_list += TARGET_FS_CONFIG_GEN +_board_strip_readonly_list += TARGET_NO_BOOTLOADER +_board_strip_readonly_list += TARGET_NO_KERNEL +_board_strip_readonly_list += TARGET_NO_RECOVERY +_board_strip_readonly_list += TARGET_NO_RADIOIMAGE +_board_strip_readonly_list += TARGET_HARDWARE_3D +_board_strip_readonly_list += WITH_DEXPREOPT + +# Arch variables +_board_strip_readonly_list += TARGET_ARCH +_board_strip_readonly_list += TARGET_ARCH_VARIANT +_board_strip_readonly_list += TARGET_CPU_ABI +_board_strip_readonly_list += TARGET_CPU_ABI2 +_board_strip_readonly_list += TARGET_CPU_VARIANT +_board_strip_readonly_list += TARGET_CPU_VARIANT_RUNTIME +_board_strip_readonly_list += TARGET_2ND_ARCH +_board_strip_readonly_list += TARGET_2ND_ARCH_VARIANT +_board_strip_readonly_list += TARGET_2ND_CPU_ABI +_board_strip_readonly_list += TARGET_2ND_CPU_ABI2 +_board_strip_readonly_list += TARGET_2ND_CPU_VARIANT +_board_strip_readonly_list += TARGET_2ND_CPU_VARIANT_RUNTIME +# TARGET_ARCH_SUITE is an alternative arch configuration to TARGET_ARCH (and related variables), +# that can be used for soong-only builds to build for several architectures at once. +# Allowed values currently are "ndk" and "mainline_sdk". +_board_strip_readonly_list += TARGET_ARCH_SUITE # File system variables -_board_strip_readonly_list += \ - BOARD_FLASH_BLOCK_SIZE \ - BOARD_BOOTIMAGE_PARTITION_SIZE \ - BOARD_RECOVERYIMAGE_PARTITION_SIZE \ - BOARD_SYSTEMIMAGE_PARTITION_SIZE \ - BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE \ - BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE \ - BOARD_USERDATAIMAGE_PARTITION_SIZE \ - BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE \ - BOARD_CACHEIMAGE_PARTITION_SIZE \ - BOARD_VENDORIMAGE_PARTITION_SIZE \ - BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE \ - BOARD_PRODUCTIMAGE_PARTITION_SIZE \ - BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE \ - BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE \ - BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE \ - BOARD_ODMIMAGE_PARTITION_SIZE \ - BOARD_ODMIMAGE_FILE_SYSTEM_TYPE \ +_board_strip_readonly_list += BOARD_FLASH_BLOCK_SIZE +_board_strip_readonly_list += BOARD_BOOTIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_RECOVERYIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_SYSTEMIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_USERDATAIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_CACHEIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_VENDORIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_PRODUCTIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_ODMIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_ODMIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_VENDOR_DLKMIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_ODM_DLKMIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE # Logical partitions related variables. -_dynamic_partitions_var_list += \ - BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE \ - BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE \ - BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE \ - BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE \ - BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE \ - BOARD_SUPER_PARTITION_SIZE \ - BOARD_SUPER_PARTITION_GROUPS \ - -_board_strip_readonly_list += $(_dynamic_partitions_var_list) +_board_strip_readonly_list += BOARD_SYSTEMIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_VENDOR_DLKMIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_ODM_DLKMIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_PRODUCTIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE +_board_strip_readonly_list += BOARD_SUPER_PARTITION_SIZE +_board_strip_readonly_list += BOARD_SUPER_PARTITION_GROUPS + +# Kernel related variables +_board_strip_readonly_list += BOARD_KERNEL_BINARIES +_board_strip_readonly_list += BOARD_KERNEL_MODULE_INTERFACE_VERSIONS + +# Variables related to generic kernel image (GKI) and generic boot image +# - BOARD_USES_GENERIC_KERNEL_IMAGE is the global variable that defines if the +# board uses GKI and generic boot image. +# Update mechanism of the boot image is not enforced by this variable. +# - BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE controls whether the recovery image +# contains a kernel or not. +# - BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT controls whether ramdisk +# recovery resources are built to vendor_boot. +# - BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT controls whether recovery +# resources are built as a standalone recovery ramdisk in vendor_boot. +# - BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT controls whether GSI AVB keys are +# built to vendor_boot. +# - BOARD_COPY_BOOT_IMAGE_TO_TARGET_FILES controls whether boot images in $OUT are added +# to target files package directly. +_board_strip_readonly_list += BOARD_USES_GENERIC_KERNEL_IMAGE +_board_strip_readonly_list += BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE +_board_strip_readonly_list += BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT +_board_strip_readonly_list += BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT +_board_strip_readonly_list += BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT +_board_strip_readonly_list += BOARD_COPY_BOOT_IMAGE_TO_TARGET_FILES + +# Defines the list of logical vendor ramdisk names to build or include in vendor_boot. +_board_strip_readonly_list += BOARD_VENDOR_RAMDISK_FRAGMENTS _build_broken_var_list := \ BUILD_BROKEN_DUP_RULES \ + BUILD_BROKEN_DUP_SYSPROP \ + BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES \ + BUILD_BROKEN_ENFORCE_SYSPROP_OWNER \ + BUILD_BROKEN_MISSING_REQUIRED_MODULES \ BUILD_BROKEN_OUTSIDE_INCLUDE_DIRS \ BUILD_BROKEN_PREBUILT_ELF_FILES \ BUILD_BROKEN_TREBLE_SYSPROP_NEVERALLOW \ BUILD_BROKEN_USES_NETWORK \ + BUILD_BROKEN_VENDOR_PROPERTY_NAMESPACE \ BUILD_BROKEN_VINTF_PRODUCT_COPY_FILES \ _build_broken_var_list += \ @@ -139,10 +183,19 @@ else TARGET_DEVICE_DIR := $(patsubst %/,%,$(dir $(board_config_mk))) .KATI_READONLY := TARGET_DEVICE_DIR endif + include $(board_config_mk) -ifeq ($(TARGET_ARCH),) - $(error TARGET_ARCH not defined by board config: $(board_config_mk)) + +ifneq (,$(and $(TARGET_ARCH),$(TARGET_ARCH_SUITE))) + $(error $(board_config_mk) erroneously sets both TARGET_ARCH and TARGET_ARCH_SUITE) +endif +ifeq ($(TARGET_ARCH)$(TARGET_ARCH_SUITE),) + $(error Target architectures not defined by board config: $(board_config_mk)) +endif +ifeq ($(TARGET_CPU_ABI)$(TARGET_ARCH_SUITE),) + $(error TARGET_CPU_ABI not defined by board config: $(board_config_mk)) endif + ifneq ($(MALLOC_IMPL),) $(warning *** Unsupported option MALLOC_IMPL defined by board config: $(board_config_mk).) $(error Use `MALLOC_SVELTE := true` to configure jemalloc for low-memory) @@ -159,10 +212,12 @@ $(foreach var,$(_board_true_false_vars), \ TARGET_CPU_VARIANT_RUNTIME := $(or $(TARGET_CPU_VARIANT_RUNTIME),$(TARGET_CPU_VARIANT)) TARGET_2ND_CPU_VARIANT_RUNTIME := $(or $(TARGET_2ND_CPU_VARIANT_RUNTIME),$(TARGET_2ND_CPU_VARIANT)) -# The combo makefiles sanity-check and set defaults for various CPU configuration -combo_target := TARGET_ -combo_2nd_arch_prefix := -include $(BUILD_SYSTEM)/combo/select.mk +ifdef TARGET_ARCH + # The combo makefiles check and set defaults for various CPU configuration + combo_target := TARGET_ + combo_2nd_arch_prefix := + include $(BUILD_SYSTEM)/combo/select.mk +endif ifdef TARGET_2ND_ARCH combo_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) @@ -172,9 +227,11 @@ endif .KATI_READONLY := $(_board_strip_readonly_list) INTERNAL_KERNEL_CMDLINE := $(BOARD_KERNEL_CMDLINE) -ifeq ($(TARGET_CPU_ABI),) - $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk)) +ifneq (,$(BOARD_BOOTCONFIG)) + INTERNAL_KERNEL_CMDLINE += bootconfig + INTERNAL_BOOTCONFIG := $(BOARD_BOOTCONFIG) endif + ifneq ($(filter %64,$(TARGET_ARCH)),) TARGET_IS_64_BIT := true endif @@ -183,7 +240,7 @@ ifeq (,$(filter true,$(TARGET_SUPPORTS_32_BIT_APPS) $(TARGET_SUPPORTS_64_BIT_APP TARGET_SUPPORTS_32_BIT_APPS := true endif -# Sanity check to warn about likely cryptic errors later in the build. +# Quick check to warn about likely cryptic errors later in the build. ifeq ($(TARGET_IS_64_BIT),true) ifeq (,$(filter true false,$(TARGET_SUPPORTS_64_BIT_APPS))) $(error Building a 32-bit-app-only product on a 64-bit device. \ @@ -241,13 +298,8 @@ endif # build a list out of the TARGET_CPU_ABIs specified by the config. # Add NATIVE_BRIDGE_ABIs at the end to keep order of preference. ifeq (,$(TARGET_CPU_ABI_LIST)) - ifeq ($(TARGET_IS_64_BIT)|$(TARGET_PREFER_32_BIT_APPS),true|true) - TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_32_BIT) $(TARGET_CPU_ABI_LIST_64_BIT) \ - $(_target_native_bridge_abi_list_32_bit) $(_target_native_bridge_abi_list_64_bit) - else - TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_64_BIT) $(TARGET_CPU_ABI_LIST_32_BIT) \ - $(_target_native_bridge_abi_list_64_bit) $(_target_native_bridge_abi_list_32_bit) - endif + TARGET_CPU_ABI_LIST := $(TARGET_CPU_ABI_LIST_64_BIT) $(TARGET_CPU_ABI_LIST_32_BIT) \ + $(_target_native_bridge_abi_list_64_bit) $(_target_native_bridge_abi_list_32_bit) endif # Add NATIVE_BRIDGE_ABIs at the end of 32 and 64 bit CPU_ABIs to keep order of preference. @@ -279,14 +331,6 @@ TARGET_COPY_OUT_RAMDISK := $(TARGET_COPY_OUT_ROOT) endif ########################################### -# Now we can substitute with the real value of TARGET_COPY_OUT_DEBUG_RAMDISK -ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) -TARGET_COPY_OUT_DEBUG_RAMDISK := debug_ramdisk/first_stage_ramdisk -TARGET_COPY_OUT_VENDOR_DEBUG_RAMDISK := vendor_debug_ramdisk/first_stage_ramdisk -TARGET_COPY_OUT_TEST_HARNESS_RAMDISK := test_harness_ramdisk/first_stage_ramdisk -endif - -########################################### # Configure whether we're building the system image BUILDING_SYSTEM_IMAGE := true ifeq ($(PRODUCT_BUILD_SYSTEM_IMAGE),) @@ -332,23 +376,36 @@ endif # Are we building a boot image BUILDING_BOOT_IMAGE := -ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) - BUILDING_BOOT_IMAGE := -else ifeq ($(PRODUCT_BUILD_BOOT_IMAGE),) - ifdef BOARD_BOOTIMAGE_PARTITION_SIZE +ifeq ($(PRODUCT_BUILD_BOOT_IMAGE),) + ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) + BUILDING_BOOT_IMAGE := + else ifdef BOARD_PREBUILT_BOOTIMAGE + BUILDING_BOOT_IMAGE := + else ifdef BOARD_BOOTIMAGE_PARTITION_SIZE + BUILDING_BOOT_IMAGE := true + else ifneq (,$(foreach kernel,$(BOARD_KERNEL_BINARIES),$(BOARD_$(call to-upper,$(kernel))_BOOTIMAGE_PARTITION_SIZE))) BUILDING_BOOT_IMAGE := true endif else ifeq ($(PRODUCT_BUILD_BOOT_IMAGE),true) - BUILDING_BOOT_IMAGE := true + ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) + $(warning *** PRODUCT_BUILD_BOOT_IMAGE is true, but so is BOARD_USES_RECOVERY_AS_BOOT.) + $(warning *** Skipping building boot image.) + BUILDING_BOOT_IMAGE := + else + BUILDING_BOOT_IMAGE := true + endif endif .KATI_READONLY := BUILDING_BOOT_IMAGE # Are we building a recovery image BUILDING_RECOVERY_IMAGE := -ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) - BUILDING_RECOVERY_IMAGE := true -else ifeq ($(PRODUCT_BUILD_RECOVERY_IMAGE),) - ifdef BOARD_RECOVERYIMAGE_PARTITION_SIZE +ifeq ($(PRODUCT_BUILD_RECOVERY_IMAGE),) + ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) + BUILDING_RECOVERY_IMAGE := true + else ifeq ($(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT),true) + # Set to true to build recovery resources for vendor_boot + BUILDING_RECOVERY_IMAGE := true + else ifdef BOARD_RECOVERYIMAGE_PARTITION_SIZE ifeq (,$(filter true, $(TARGET_NO_KERNEL) $(TARGET_NO_RECOVERY))) BUILDING_RECOVERY_IMAGE := true endif @@ -362,7 +419,9 @@ endif BUILDING_VENDOR_BOOT_IMAGE := ifdef BOARD_BOOT_HEADER_VERSION ifneq ($(call math_gt_or_eq,$(BOARD_BOOT_HEADER_VERSION),3),) - ifneq ($(TARGET_NO_VENDOR_BOOT),true) + ifeq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),) + BUILDING_VENDOR_BOOT_IMAGE := true + else ifeq ($(PRODUCT_BUILD_VENDOR_BOOT_IMAGE),true) BUILDING_VENDOR_BOOT_IMAGE := true endif endif @@ -398,6 +457,25 @@ ifeq ($(PRODUCT_BUILD_VBMETA_IMAGE),false) endif .KATI_READONLY := BUILDING_VBMETA_IMAGE +# Are we building a super_empty image +BUILDING_SUPER_EMPTY_IMAGE := +ifeq ($(PRODUCT_BUILD_SUPER_EMPTY_IMAGE),) + ifeq (true,$(PRODUCT_USE_DYNAMIC_PARTITIONS)) + ifneq ($(BOARD_SUPER_PARTITION_SIZE),) + BUILDING_SUPER_EMPTY_IMAGE := true + endif + endif +else ifeq ($(PRODUCT_BUILD_SUPER_EMPTY_IMAGE),true) + ifneq (true,$(PRODUCT_USE_DYNAMIC_PARTITIONS)) + $(error PRODUCT_BUILD_SUPER_EMPTY_IMAGE set to true, but PRODUCT_USE_DYNAMIC_PARTITIONS is not true) + endif + ifeq ($(BOARD_SUPER_PARTITION_SIZE),) + $(error PRODUCT_BUILD_SUPER_EMPTY_IMAGE set to true, but BOARD_SUPER_PARTITION_SIZE is not defined) + endif + BUILDING_SUPER_EMPTY_IMAGE := true +endif +.KATI_READONLY := BUILDING_SUPER_EMPTY_IMAGE + ########################################### # Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR ifeq ($(TARGET_COPY_OUT_VENDOR),$(_vendor_path_placeholder)) @@ -515,6 +593,40 @@ endif .KATI_READONLY := BUILDING_SYSTEM_EXT_IMAGE ########################################### +# Now we can substitute with the real value of TARGET_COPY_OUT_VENDOR_DLKM +ifeq ($(TARGET_COPY_OUT_VENDOR_DLKM),$(_vendor_dlkm_path_placeholder)) + TARGET_COPY_OUT_VENDOR_DLKM := $(TARGET_COPY_OUT_VENDOR)/vendor_dlkm +else ifeq ($(filter vendor_dlkm system/vendor/vendor_dlkm vendor/vendor_dlkm,$(TARGET_COPY_OUT_VENDOR_DLKM)),) + $(error TARGET_COPY_OUT_VENDOR_DLKM must be either 'vendor_dlkm', 'system/vendor/vendor_dlkm' or 'vendor/vendor_dlkm', seeing '$(TARGET_COPY_OUT_VENDOR_DLKM)'.) +endif +PRODUCT_COPY_FILES := $(subst $(_vendor_dlkm_path_placeholder),$(TARGET_COPY_OUT_VENDOR_DLKM),$(PRODUCT_COPY_FILES)) + +BOARD_USES_VENDOR_DLKMIMAGE := +ifdef BOARD_PREBUILT_VENDOR_DLKMIMAGE + BOARD_USES_VENDOR_DLKMIMAGE := true +endif +ifdef BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE + BOARD_USES_VENDOR_DLKMIMAGE := true +endif +$(call check_image_config,vendor_dlkm) + +BUILDING_VENDOR_DLKM_IMAGE := +ifeq ($(PRODUCT_BUILD_VENDOR_DLKM_IMAGE),) + ifdef BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE + BUILDING_VENDOR_DLKM_IMAGE := true + endif +else ifeq ($(PRODUCT_BUILD_VENDOR_DLKM_IMAGE),true) + BUILDING_VENDOR_DLKM_IMAGE := true + ifndef BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE + $(error PRODUCT_BUILD_VENDOR_DLKM_IMAGE set to true, but BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE not defined) + endif +endif +ifdef BOARD_PREBUILT_VENDOR_DLKMIMAGE + BUILDING_VENDOR_DLKM_IMAGE := +endif +.KATI_READONLY := BUILDING_VENDOR_DLKM_IMAGE + +########################################### # Now we can substitute with the real value of TARGET_COPY_OUT_ODM ifeq ($(TARGET_COPY_OUT_ODM),$(_odm_path_placeholder)) TARGET_COPY_OUT_ODM := $(TARGET_COPY_OUT_VENDOR)/odm @@ -548,6 +660,41 @@ ifdef BOARD_PREBUILT_ODMIMAGE endif .KATI_READONLY := BUILDING_ODM_IMAGE + +########################################### +# Now we can substitute with the real value of TARGET_COPY_OUT_ODM_DLKM +ifeq ($(TARGET_COPY_OUT_ODM_DLKM),$(_odm_dlkm_path_placeholder)) + TARGET_COPY_OUT_ODM_DLKM := $(TARGET_COPY_OUT_VENDOR)/odm_dlkm +else ifeq ($(filter odm_dlkm system/vendor/odm_dlkm vendor/odm_dlkm,$(TARGET_COPY_OUT_ODM_DLKM)),) + $(error TARGET_COPY_OUT_ODM_DLKM must be either 'odm_dlkm', 'system/vendor/odm_dlkm' or 'vendor/odm_dlkm', seeing '$(TARGET_COPY_OUT_ODM_DLKM)'.) +endif +PRODUCT_COPY_FILES := $(subst $(_odm_dlkm_path_placeholder),$(TARGET_COPY_OUT_ODM_DLKM),$(PRODUCT_COPY_FILES)) + +BOARD_USES_ODM_DLKMIMAGE := +ifdef BOARD_PREBUILT_ODM_DLKMIMAGE + BOARD_USES_ODM_DLKMIMAGE := true +endif +ifdef BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE + BOARD_USES_ODM_DLKMIMAGE := true +endif +$(call check_image_config,odm_dlkm) + +BUILDING_ODM_DLKM_IMAGE := +ifeq ($(PRODUCT_BUILD_ODM_DLKM_IMAGE),) + ifdef BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE + BUILDING_ODM_DLKM_IMAGE := true + endif +else ifeq ($(PRODUCT_BUILD_ODM_DLKM_IMAGE),true) + BUILDING_ODM_DLKM_IMAGE := true + ifndef BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE + $(error PRODUCT_BUILD_ODM_DLKM_IMAGE set to true, but BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE not defined) + endif +endif +ifdef BOARD_PREBUILT_ODM_DLKMIMAGE + BUILDING_ODM_DLKM_IMAGE := +endif +.KATI_READONLY := BUILDING_ODM_DLKM_IMAGE + ########################################### # Ensure consistency among TARGET_RECOVERY_UPDATER_LIBS, AB_OTA_UPDATER, and PRODUCT_OTA_FORCE_NON_AB_PACKAGE. TARGET_RECOVERY_UPDATER_LIBS ?= @@ -577,7 +724,7 @@ ifneq ($(TARGET_OTA_ALLOW_NON_AB),true) endif endif -# Sanity check for building generic OTA packages. Currently it only supports A/B OTAs. +# Quick check for building generic OTA packages. Currently it only supports A/B OTAs. ifeq ($(PRODUCT_BUILD_GENERIC_OTA_PACKAGE),true) ifneq ($(AB_OTA_UPDATER),true) $(error PRODUCT_BUILD_GENERIC_OTA_PACKAGE with 'AB_OTA_UPDATER != true' is not supported) @@ -597,6 +744,9 @@ define check_vndk_version endef ifdef BOARD_VNDK_VERSION + ifeq ($(BOARD_VNDK_VERSION),$(PLATFORM_VNDK_VERSION)) + $(error BOARD_VNDK_VERSION is equal to PLATFORM_VNDK_VERSION; use BOARD_VNDK_VERSION := current)) + endif ifneq ($(BOARD_VNDK_VERSION),current) $(call check_vndk_version,$(BOARD_VNDK_VERSION)) endif @@ -605,6 +755,16 @@ else TARGET_VENDOR_TEST_SUFFIX := endif +# If PRODUCT_ENFORCE_INTER_PARTITION_JAVA_SDK_LIBRARY is set, +# BOARD_VNDK_VERSION must be set because PRODUCT_ENFORCE_INTER_PARTITION_JAVA_SDK_LIBRARY +# is a enforcement of inter-partition dependency, and it doesn't have any meaning +# when BOARD_VNDK_VERSION isn't set. +ifeq ($(PRODUCT_ENFORCE_INTER_PARTITION_JAVA_SDK_LIBRARY),true) + ifeq ($(BOARD_VNDK_VERSION),) + $(error BOARD_VNDK_VERSION must be set when PRODUCT_ENFORCE_INTER_PARTITION_JAVA_SDK_LIBRARY is true) + endif +endif + ########################################### # APEXes are by default flattened, i.e. non-updatable. # It can be unflattened (and updatable) by inheriting from @@ -621,7 +781,7 @@ else endif endif -ifeq (,$(TARGET_BUILD_APPS)) +ifeq (,$(TARGET_BUILD_UNBUNDLED)) ifdef PRODUCT_EXTRA_VNDK_VERSIONS $(foreach v,$(PRODUCT_EXTRA_VNDK_VERSIONS),$(call check_vndk_version,$(v))) endif @@ -650,3 +810,57 @@ $(foreach m,$(filter-out BUILD_COPY_HEADERS,$(DEFAULT_ERROR_BUILD_MODULE_TYPES)) $(if $(filter true,$(BUILD_BROKEN_USES_$(m))),\ $(KATI_deprecated_var $(m),Please convert to Soong),\ $(KATI_obsolete_var $(m),Please convert to Soong))) + +ifndef BUILDING_RECOVERY_IMAGE + ifeq (true,$(BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE)) + $(error Should not set BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE if not building recovery image) + endif +endif + +ifndef BUILDING_VENDOR_BOOT_IMAGE + ifeq (true,$(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT)) + $(error Should not set BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT if not building vendor_boot image) + endif + ifdef BOARD_VENDOR_RAMDISK_FRAGMENTS + $(error Should not set BOARD_VENDOR_RAMDISK_FRAGMENTS if not building vendor_boot image) + endif +else # BUILDING_VENDOR_BOOT_IMAGE + ifneq (,$(call math_lt,$(BOARD_BOOT_HEADER_VERSION),4)) + ifdef BOARD_VENDOR_RAMDISK_FRAGMENTS + $(error Should not set BOARD_VENDOR_RAMDISK_FRAGMENTS if \ + BOARD_BOOT_HEADER_VERSION is less than 4) + endif + ifeq (true,$(BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT)) + $(error Should not set BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT if \ + BOARD_BOOT_HEADER_VERSION is less than 4) + endif + endif +endif # BUILDING_VENDOR_BOOT_IMAGE + +ifneq ($(words $(BOARD_VENDOR_RAMDISK_FRAGMENTS)),$(words $(sort $(BOARD_VENDOR_RAMDISK_FRAGMENTS)))) + $(error BOARD_VENDOR_RAMDISK_FRAGMENTS has duplicate entries: $(BOARD_VENDOR_RAMDISK_FRAGMENTS)) +endif + +ifeq (true,$(BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT)) + ifneq (true,$(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT)) + $(error Should not set BOARD_INCLUDE_RECOVERY_RAMDISK_IN_VENDOR_BOOT if \ + BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT is not set) + endif +endif + +# If BOARD_USES_GENERIC_KERNEL_IMAGE is set, BOARD_USES_RECOVERY_AS_BOOT must not be set. +# Devices without a dedicated recovery partition uses BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT to +# build recovery into vendor_boot. +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) + ifeq (true,$(BOARD_USES_RECOVERY_AS_BOOT)) + $(error BOARD_USES_RECOVERY_AS_BOOT cannot be true if BOARD_USES_GENERIC_KERNEL_IMAGE is true. \ + Use BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT instead) + endif +endif + +ifeq (true,$(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT)) + ifeq (true,$(BOARD_USES_RECOVERY_AS_BOOT)) + $(error BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT and BOARD_USES_RECOVERY_AS_BOOT cannot be \ + both true. Recovery resources should be installed to either boot or vendor_boot, but not both) + endif +endif |