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 26ifndef TARGET_BOOTLOADER_BOARD_NAME 27TARGET_BOOTLOADER_BOARD_NAME := cutf 28endif 29 30BOARD_SYSTEMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 31 32# Boot partition size: 64M 33# This is only used for OTA update packages. The image size on disk 34# will not change (as is it not a filesystem.) 35BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864 36ifdef TARGET_DEDICATED_RECOVERY 37BOARD_RECOVERYIMAGE_PARTITION_SIZE := 67108864 38endif 39BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := 67108864 40 41# init_boot partition size is recommended to be 8MB, it can be larger. 42# When this variable is set, init_boot.img will be built with the generic 43# ramdisk, and that ramdisk will no longer be included in boot.img. 44BOARD_INIT_BOOT_IMAGE_PARTITION_SIZE := 8388608 45 46# Build a separate vendor.img partition 47BOARD_USES_VENDORIMAGE := true 48BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 49 50BOARD_USES_METADATA_PARTITION := true 51 52# Build a separate product.img partition 53BOARD_USES_PRODUCTIMAGE := true 54BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 55 56# Build a separate system_ext.img partition 57BOARD_USES_SYSTEM_EXTIMAGE := true 58BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 59TARGET_COPY_OUT_SYSTEM_EXT := system_ext 60 61# Build a separate odm.img partition 62BOARD_USES_ODMIMAGE := true 63BOARD_ODMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 64TARGET_COPY_OUT_ODM := odm 65 66# Build a separate vendor_dlkm partition 67BOARD_USES_VENDOR_DLKMIMAGE := true 68BOARD_VENDOR_DLKMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 69TARGET_COPY_OUT_VENDOR_DLKM := vendor_dlkm 70 71# Build a separate odm_dlkm partition 72BOARD_USES_ODM_DLKMIMAGE := true 73BOARD_ODM_DLKMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 74TARGET_COPY_OUT_ODM_DLKM := odm_dlkm 75 76# Build a separate system_dlkm partition 77BOARD_USES_SYSTEM_DLKMIMAGE := true 78BOARD_SYSTEM_DLKMIMAGE_FILE_SYSTEM_TYPE := $(TARGET_RO_FILE_SYSTEM_TYPE) 79TARGET_COPY_OUT_SYSTEM_DLKM := system_dlkm 80 81# Enable AVB 82BOARD_AVB_ENABLE := true 83BOARD_AVB_ALGORITHM := SHA256_RSA4096 84BOARD_AVB_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 85 86# Enable chained vbmeta for system image mixing 87BOARD_AVB_VBMETA_SYSTEM := product system system_ext 88BOARD_AVB_VBMETA_SYSTEM_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 89BOARD_AVB_VBMETA_SYSTEM_ALGORITHM := SHA256_RSA4096 90BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 91BOARD_AVB_VBMETA_SYSTEM_ROLLBACK_INDEX_LOCATION := 1 92 93# Enable chained vbmeta for boot images 94BOARD_AVB_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 95BOARD_AVB_BOOT_ALGORITHM := SHA256_RSA4096 96BOARD_AVB_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 97BOARD_AVB_BOOT_ROLLBACK_INDEX_LOCATION := 2 98 99# Enable chained vbmeta for init_boot images 100BOARD_AVB_INIT_BOOT_KEY_PATH := external/avb/test/data/testkey_rsa4096.pem 101BOARD_AVB_INIT_BOOT_ALGORITHM := SHA256_RSA4096 102BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX := $(PLATFORM_SECURITY_PATCH_TIMESTAMP) 103BOARD_AVB_INIT_BOOT_ROLLBACK_INDEX_LOCATION := 3 104 105# Using sha256 for dm-verity partitions. b/178983355 106# system, system_other, product. 107TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM ?= sha256 108TARGET_AVB_SYSTEM_OTHER_HASHTREE_ALGORITHM ?= sha256 109TARGET_AVB_PRODUCT_HASHTREE_ALGORITHM ?= sha256 110# Using blake2b-256 for system_ext. This give us move coverage of the 111# algorithms as we otherwise don't have a device using blake2b-256. 112TARGET_AVB_SYSTEM_EXT_HASHTREE_ALGORITHM ?= blake2b-256 113 114BOARD_AVB_SYSTEM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_HASHTREE_ALGORITHM) 115BOARD_AVB_SYSTEM_OTHER_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_OTHER_HASHTREE_ALGORITHM) 116BOARD_AVB_SYSTEM_EXT_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_SYSTEM_EXT_HASHTREE_ALGORITHM) 117BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm $(TARGET_AVB_PRODUCT_HASHTREE_ALGORITHM) 118 119# vendor and odm. 120BOARD_AVB_VENDOR_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 121BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 122 123# vendor_dlkm, odm_dlkm, and system_dlkm. 124BOARD_AVB_VENDOR_DLKM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 125BOARD_AVB_ODM_DLKM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 126BOARD_AVB_SYSTEM_DLKM_ADD_HASHTREE_FOOTER_ARGS += --hash_algorithm sha256 127 128BOARD_USES_GENERIC_AUDIO := false 129USE_CAMERA_STUB := true 130 131# Hardware composer configuration 132TARGET_USES_HWC2 := true 133 134# The compiler will occasionally generate movaps, etc. 135BOARD_MALLOC_ALIGNMENT := 16 136 137# Disable sparse on all filesystem images 138TARGET_USERIMAGES_SPARSE_EROFS_DISABLED ?= true 139TARGET_USERIMAGES_SPARSE_EXT_DISABLED ?= true 140TARGET_USERIMAGES_SPARSE_F2FS_DISABLED ?= true 141 142# Make the userdata partition 6G to accommodate ASAN and CTS 143BOARD_USERDATAIMAGE_PARTITION_SIZE := $(TARGET_USERDATAIMAGE_PARTITION_SIZE) 144BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := $(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE) 145TARGET_USERIMAGES_USE_F2FS := true 146 147BOARD_GPU_DRIVERS := virgl 148 149# Enable goldfish's encoder. 150# TODO(b/113617962) Remove this if we decide to use 151# device/generic/opengl-transport to generate the encoder 152BUILD_EMULATOR_OPENGL_DRIVER := true 153BUILD_EMULATOR_OPENGL := true 154 155# Minimum size of the final bootable disk image: 10G 156# GCE will pad disk images out to 10G. Our disk images should be at least as 157# big to avoid warnings about partition table oddities. 158BOARD_DISK_IMAGE_MINIMUM_SIZE := 10737418240 159 160BOARD_BOOTIMAGE_MAX_SIZE := 8388608 161BOARD_SYSLOADER_MAX_SIZE := 7340032 162# TODO(san): See if we can get rid of this. 163BOARD_FLASH_BLOCK_SIZE := 512 164 165USE_OPENGL_RENDERER := true 166 167# Wifi. 168ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true) 169BOARD_WLAN_DEVICE := emulator 170BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_simulated_cf 171WIFI_HIDL_FEATURE_DUAL_INTERFACE := true 172WIFI_HAL_INTERFACE_COMBINATIONS := {{{STA}, 1}, {{AP}, 1}, {{P2P}, 1}} 173else 174BOARD_WLAN_DEVICE := wlan0 175endif 176BOARD_HOSTAPD_DRIVER := NL80211 177BOARD_WPA_SUPPLICANT_DRIVER := NL80211 178BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_simulated_cf 179WPA_SUPPLICANT_VERSION := VER_0_8_X 180WIFI_DRIVER_FW_PATH_PARAM := "/dev/null" 181WIFI_DRIVER_FW_PATH_STA := "/dev/null" 182WIFI_DRIVER_FW_PATH_AP := "/dev/null" 183 184# vendor sepolicy 185BOARD_VENDOR_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor 186BOARD_VENDOR_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor/google 187 188BOARD_SEPOLICY_DIRS += system/bt/vendor_libs/linux/sepolicy 189 190# product sepolicy, allow other layers to append 191PRODUCT_PRIVATE_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/product/private 192# PRODUCT_PUBLIC_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/product/public 193# system_ext sepolicy 194SYSTEM_EXT_PRIVATE_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/system_ext/private 195# SYSTEM_EXT_PUBLIC_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/system_ext/public 196 197STAGEFRIGHT_AVCENC_CFLAGS := -DANDROID_GCE 198 199INIT_BOOTCHART := true 200 201# Settings for dhcpcd-6.8.2. 202DHCPCD_USE_IPV6 := no 203DHCPCD_USE_DBUS := no 204DHCPCD_USE_SCRIPT := yes 205 206 207TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888 208TARGET_RECOVERY_UI_LIB := librecovery_ui_cuttlefish 209TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab.f2fs 210 211BOARD_SUPER_PARTITION_SIZE := 7516192768 # 7GiB 212BOARD_SUPER_PARTITION_GROUPS := google_system_dynamic_partitions google_vendor_dynamic_partitions 213BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_PARTITION_LIST := product system system_ext system_dlkm 214BOARD_GOOGLE_SYSTEM_DYNAMIC_PARTITIONS_SIZE := 5771362304 # 5.375GiB 215BOARD_GOOGLE_VENDOR_DYNAMIC_PARTITIONS_PARTITION_LIST := odm vendor vendor_dlkm odm_dlkm 216# 1404MiB, reserve 4MiB for dynamic partition metadata 217BOARD_GOOGLE_VENDOR_DYNAMIC_PARTITIONS_SIZE := 1472200704 218BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true 219BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true 220TARGET_RELEASETOOLS_EXTENSIONS := device/google/cuttlefish/shared 221 222# Generate a partial ota update package for partitions in vbmeta_system 223BOARD_PARTIAL_OTA_UPDATE_PARTITIONS_LIST := product system system_ext vbmeta_system 224 225BOARD_BOOTLOADER_IN_UPDATE_PACKAGE := true 226BOARD_RAMDISK_USE_LZ4 := true 227 228# To see full logs from init, disable ratelimiting. 229# The default is 5 messages per second amortized, with a burst of up to 10. 230BOARD_KERNEL_CMDLINE += printk.devkmsg=on 231 232# Print audit messages for all security check failures 233BOARD_KERNEL_CMDLINE += audit=1 234 235# Reboot immediately on panic 236BOARD_KERNEL_CMDLINE += panic=-1 237 238# Always enable one legacy serial port, for alternative earlycon, kgdb, and 239# serial console. Doesn't do anything on ARM/ARM64 + QEMU or Gem5. 240BOARD_KERNEL_CMDLINE += 8250.nr_uarts=1 241 242# Cuttlefish doesn't use CMA, so don't reserve RAM for it 243BOARD_KERNEL_CMDLINE += cma=0 244 245# Default firmware load path 246BOARD_KERNEL_CMDLINE += firmware_class.path=/vendor/etc/ 247 248# Needed to boot Android 249BOARD_KERNEL_CMDLINE += loop.max_part=7 250BOARD_KERNEL_CMDLINE += init=/init 251 252BOARD_BOOTCONFIG += androidboot.hardware=cutf_cvm 253 254# TODO(b/182417593): Move all of these module options to modules.options 255# TODO(b/176860479): Remove once goldfish and cuttlefish share a wifi implementation 256BOARD_BOOTCONFIG += kernel.mac80211_hwsim.radios=0 257# Reduce slab size usage from virtio vsock to reduce slab fragmentation 258BOARD_BOOTCONFIG += \ 259 kernel.vmw_vsock_virtio_transport_common.virtio_transport_max_vsock_pkt_buf_size=16384 260 261BOARD_BOOTCONFIG += \ 262 androidboot.vendor.apex.com.android.wifi.hal=com.google.cf.wifi_hwsim \ 263 androidboot.vendor.apex.com.google.emulated.camera.provider.hal=com.google.emulated.camera.provider.hal \ 264 265BOARD_INCLUDE_DTB_IN_BOOTIMG := true 266ifndef BOARD_BOOT_HEADER_VERSION 267BOARD_BOOT_HEADER_VERSION := 4 268endif 269BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) 270BOARD_INIT_BOOT_HEADER_VERSION := 4 271BOARD_MKBOOTIMG_INIT_ARGS += --header_version $(BOARD_INIT_BOOT_HEADER_VERSION) 272PRODUCT_COPY_FILES += \ 273 device/google/cuttlefish/dtb.img:dtb.img \ 274 device/google/cuttlefish/required_images:required_images \ 275 276BOARD_BUILD_SYSTEM_ROOT_IMAGE := false 277 278# Cuttlefish doesn't support ramdump feature yet, exclude the ramdump debug tool. 279EXCLUDE_BUILD_RAMDUMP_UPLOADER_DEBUG_TOOL := true 280 281# GKI-related variables. 282BOARD_USES_GENERIC_KERNEL_IMAGE := true 283ifdef TARGET_DEDICATED_RECOVERY 284 BOARD_EXCLUDE_KERNEL_FROM_RECOVERY_IMAGE := true 285else 286 BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT := true 287endif 288BOARD_MOVE_GSI_AVB_KEYS_TO_VENDOR_BOOT := true 289 290BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD := dm-user.ko 291 292BOARD_HAVE_BLUETOOTH := true 293