1# 2# Copyright 2017 The Android Open-Source Project 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); 5# you may not use this file except in compliance with the License. 6# You may obtain a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, 12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13# See the License for the specific language governing permissions and 14# limitations under the License. 15# 16 17# 18# Common BoardConfig for all supported architectures. 19# 20 21# TODO(b/170639028): Back up TARGET_NO_BOOTLOADER 22__TARGET_NO_BOOTLOADER := $(TARGET_NO_BOOTLOADER) 23include build/make/target/board/BoardConfigMainlineCommon.mk 24TARGET_NO_BOOTLOADER := $(__TARGET_NO_BOOTLOADER) 25 26TARGET_BOOTLOADER_BOARD_NAME := cutf 27 28BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 29 30# Boot partition size: 32M 31# This is only used for OTA update packages. The image size on disk 32# will not change (as is it not a filesystem.) 33BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 34ifdef TARGET_DEDICATED_RECOVERY 35BOARD_RECOVERYIMAGE_PARTITION_SIZE := 67108864 36endif 37BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 67108864 38 39# Build a separate vendor.img partition 40BOARD_USES_VENDORIMAGE := true 41BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 42 43BOARD_USES_METADATA_PARTITION := true 44 45# Build a separate product.img partition 46BOARD_USES_PRODUCTIMAGE := true 47BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 48 49# Build a separate system_ext.img partition 50BOARD_USES_SYSTEM_EXTIMAGE := true 51BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 52TARGET_COPY_OUT_SYSTEM_EXT := system_ext 53 54# Build a separate odm.img partition 55BOARD_USES_ODMIMAGE := true 56BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 57TARGET_COPY_OUT_ODM := odm 58 59# Build a separate vendor_dlkm partition 60BOARD_USES_VENDOR_DLKMIMAGE := true 61BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4 62TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm 63 64# Build a separate odm_dlkm partition 65BOARD_USES_ODM_DLKMIMAGE := true 66BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE := ext4 67TARGET_COPY_OUT_ODM_DLKM := odm_dlkm 68 69# FIXME: Remove this once we generate the vbmeta digest correctly 70BOARD_AVB_MAKE_VBMETA_IMAGE_ARGS += --flag 2 71 72# Enable chained vbmeta for system image mixing 73BOARD_AVB_VBMETA_SYSTEM := product system system_ext 74BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem 75BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA2048 76BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 77BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1 78 79# Enable chained vbmeta for boot images 80BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa2048.pem 81BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA2048 82BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 83BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2 84 85# Using sha256 for dm-verity partitions. b/178983355 86# system, system_other, product. 87TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM ?= sha256 88TARGET_AVB_SYSTEM_OTHER_HASHTREE_ALGORITHM ?= sha256 89TARGET_AVB_PRODUCT_HASHTREE_ALGORITHM ?= sha256 90# Using blake2b-256 for system_ext. This give us move coverage of the 91# algorithms as we otherwise don't have a device using blake2b-256. 92TARGET_AVB_SYSTEM_EXT_HASHTREE_ALGORITHM ?= blake2b-256 93 94BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM) 95BOARD_AVB_SYSTEM_OTHER_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_OTHER_HASHTREE_ALGORITHM) 96BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_EXT_HASHTREE_ALGORITHM) 97BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_PRODUCT_HASHTREE_ALGORITHM) 98 99# vendor and odm. 100BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 101BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 102 103# vendor_dlkm and odm_dlkm. 104BOARD_AVB_VENDOR_DLKM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 105BOARD_AVB_ODM_DLKM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 106 107BOARD_USES_GENERIC_AUDIO := false 108USE_CAMERA_STUB := true 109 110# Hardware composer configuration 111TARGET_USES_HWC2 := true 112 113# The compiler will occasionally generate movaps, etc. 114BOARD_MALLOC_ALIGNMENT := 16 115 116# Disable sparse on all filesystem images 117TARGET_USERIMAGES_SPARSE_EROFS_DISABLED := true 118TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true 119TARGET_USERIMAGES_SPARSE_F2FS_DISABLED := true 120 121# Make the userdata partition 6G to accommodate ASAN and CTS 122BOARD_USERDATAIMAGE_PARTITION_SIZE := $(TARGET_USERDATAIMAGE_PARTITION_SIZE) 123BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := $(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE) 124TARGET_USERIMAGES_USE_F2FS := true 125 126BOARD_GPU_DRIVERS := virgl 127 128# Enable goldfish's encoder. 129# TODO(b/113617962) Remove this if we decide to use 130# device/generic/opengl-transport to generate the encoder 131BUILD_EMULATOR_OPENGL_DRIVER := true 132BUILD_EMULATOR_OPENGL := true 133 134# Minimum size of the final bootable disk image: 10G 135# GCE will pad disk images out to 10G. Our disk images should be at least as 136# big to avoid warnings about partition table oddities. 137BOARD_DISK_IMAGE_MINIMUM_SIZE := 10737418240 138 139BOARD_BOOTIMAGE_MAX_SIZE := 8388608 140BOARD_SYSLOADER_MAX_SIZE := 7340032 141# TODO(san): See if we can get rid of this. 142BOARD_FLASH_BLOCK_SIZE := 512 143 144USE_OPENGL_RENDERER := true 145 146# Wifi. 147BOARD_WLAN_DEVICE := wlan0 148BOARD_HOSTAPD_DRIVER := NL80211 149BOARD_WPA_SUPPLICANT_DRIVER := NL80211 150BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_simulated_cf 151WPA_SUPPLICANT_VERSION := VER_0_8_X 152WIFI_DRIVER_FW_PATH_PARAM := "/dev/null" 153WIFI_DRIVER_FW_PATH_STA := "/dev/null" 154WIFI_DRIVER_FW_PATH_AP := "/dev/null" 155 156# vendor sepolicy 157BOARD_VENDOR_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor 158BOARD_VENDOR_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor/google 159 160BOARD_SEPOLICY_DIRS += system/bt/vendor_libs/linux/sepolicy 161 162# Avoid multiple includes of sepolicy already included by Pixel experience. 163ifneq ($(filter aosp_% %_auto %_go_phone trout_% %_tv,$(PRODUCT_NAME)),) 164 165SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += hardware/google/pixel-sepolicy/flipendo 166 167endif 168 169# product sepolicy, allow other layers to append 170PRODUCT_PRIVATE_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/product/private 171# PRODUCT_PUBLIC_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/product/public 172# system_ext sepolicy 173SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/system_ext/private 174# SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/system_ext/public 175 176STAGEFRIGHT_AVCENC_CFLAGS := -DANDROID_GCE 177 178INIT_BOOTCHART := true 179 180# Settings for dhcpcd-6.8.2. 181DHCPCD_USE_IPV6 := no 182DHCPCD_USE_DBUS := no 183DHCPCD_USE_SCRIPT := yes 184 185 186TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 187TARGET_RECOVERY_UI_LIB := librecovery_ui_cuttlefish 188TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab.f2fs 189 190BOARD_SUPER_PARTITION_SIZE := 7516192768 # 7GiB 191BOARD_SUPER_PARTITION_GROUPS := google_system_dynamic_partitions google_vendor_dynamic_partitions 192BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_PARTITION_LIST := product system system_ext 193BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_SIZE := 5771362304 # 5.375GiB 194BOARD_GOOGLE_VENDOR_DYNAMIC_PARTITIONS_PARTITION_LIST := odm vendor vendor_dlkm odm_dlkm 195# 1404MiB, reserve 4MiB for dynamic partition metadata 196BOARD_GOOGLE_VENDOR_DYNAMIC_PARTITIONS_SIZE := 1472200704 197BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true 198BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true 199TARGET_RELEASETOOLS_EXTENSIONS := device/google/cuttlefish/shared 200 201# Generate a partial ota update package for partitions in vbmeta_system 202BOARD_PARTIAL_OTA_UPDATE_PARTITIONS_LIST := product system system_ext vbmeta_system 203 204BOARD_BOOTLOADER_IN_UPDATE_PACKAGE := true 205BOARD_RAMDISK_USE_LZ4 := true 206 207# To see full logs from init, disable ratelimiting. 208# The default is 5 messages per second amortized, with a burst of up to 10. 209BOARD_KERNEL_CMDLINE += printk.devkmsg=on 210BOARD_KERNEL_CMDLINE += firmware_class.path=/vendor/etc/ 211 212BOARD_KERNEL_CMDLINE += init=/init 213BOARD_BOOTCONFIG += androidboot.hardware=cutf_cvm 214 215# TODO(b/179489292): Remove once kfence is enabled everywhere 216BOARD_KERNEL_CMDLINE += kfence.sample_interval=500 217 218BOARD_KERNEL_CMDLINE += loop.max_part=7 219 220# TODO(b/182417593): Move all of these module options to modules.options 221# TODO(b/176860479): Remove once goldfish and cuttlefish share a wifi implementation 222BOARD_BOOTCONFIG += kernel.mac80211_hwsim.radios=0 223# TODO(b/175151042): Remove once we are using virtio-snd on cuttlefish 224BOARD_BOOTCONFIG += kernel.snd-hda-intel.enable=0 225# Reduce slab size usage from virtio vsock to reduce slab fragmentation 226BOARD_BOOTCONFIG += \ 227 kernel.vmw_vsock_virtio_transport_common.virtio_transport_max_vsock_pkt_buf_size=16384 228 229ifeq ($(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE),f2fs) 230BOARD_BOOTCONFIG += androidboot.fstab_suffix=f2fs 231endif 232 233ifeq ($(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE),ext4) 234BOARD_BOOTCONFIG += androidboot.fstab_suffix=ext4 235endif 236 237BOARD_INCLUDE_DTB_IN_BOOTIMG := true 238BOARD_BOOT_HEADER_VERSION := 4 239BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) 240PRODUCT_COPY_FILES += \ 241 device/google/cuttlefish/dtb.img:dtb.img \ 242 device/google/cuttlefish/required_images:required_images \ 243 244BOARD_BUILD_SYSTEM_ROOT_IMAGE := false 245 246# Cuttlefish doesn't support ramdump feature yet, exclude the ramdump debug tool. 247EXCLUDE_BUILD_RAMDUMP_UPLOADER_DEBUG_TOOL := true 248 249# GKI-related variables. 250BOARD_USES_GENERIC_KERNEL_IMAGE := true 251ifdef TARGET_DEDICATED_RECOVERY 252 BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE := true 253else 254 BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true 255endif 256BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true 257 258# TARGET_KERNEL_USE is defined in kernel.mk, if not defined in the environment variable. 259# Keep in sync with GKI APEX in device.mk 260ifneq (,$(TARGET_KERNEL_USE)) 261 ifneq (,$(filter 5.4, $(TARGET_KERNEL_USE))) 262 BOARD_KERNEL_MODULE_INTERFACE_VERSIONS := 5.4-android12-0 263 else 264 BOARD_KERNEL_MODULE_INTERFACE_VERSIONS := $(TARGET_KERNEL_USE)-android12-unstable 265 endif 266endif 267 268BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD := dm-user.ko 269 270BOARD_HAVE_BLUETOOTH := true 271