125 lines
5.2 KiB
Makefile
125 lines
5.2 KiB
Makefile
#
|
|
# Copyright (C) 2021-2022 KonstaKANG
|
|
# Copyright (C) 2025 oxmc
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
DEVICE_PATH := device/pawlet/rpi4
|
|
|
|
# PawletOS common board config (A/B, partition sizes, update_engine)
|
|
include vendor/pawlet/config/BoardConfigPawlet.mk
|
|
|
|
# Architecture
|
|
TARGET_ARCH := arm64
|
|
TARGET_ARCH_VARIANT := armv8-a
|
|
TARGET_CPU_ABI := arm64-v8a
|
|
TARGET_CPU_ABI2 :=
|
|
TARGET_CPU_VARIANT := cortex-a72
|
|
|
|
# Bluetooth
|
|
BOARD_HAVE_BLUETOOTH := true
|
|
|
|
# Bootloader
|
|
TARGET_NO_BOOTLOADER := true
|
|
|
|
# Recovery — stock bootable/recovery stays unforked; TWRP's GUI plugs in via
|
|
# TARGET_RECOVERY_UI_LIB (recovery_main.cpp dlopen()s librecovery_ui_ext.so and
|
|
# dlsym()s make_device() from whatever this points at). See
|
|
# vendor/pawlet/recovery_ui/README.md and NOTES-ota-recovery-ab.md.
|
|
TARGET_NO_RECOVERY := false
|
|
# Recovery is a SEPARATE image on the recovery partition, still built only
|
|
# on demand (see PRODUCT_BUILD_RECOVERY_IMAGE in common.mk / the `precovery`
|
|
# helper) rather than every build — that's a build-time-cost choice, not a
|
|
# size constraint anymore. It USED to also be required because AOSP forces
|
|
# recovery.img into the vendor image size check (RECOVERY_FROM_BOOT_PATCH)
|
|
# when BOARD_USES_FULL_RECOVERY_IMAGE := true, which overflowed the then-2GB
|
|
# vendor partition by exactly recovery.img's fixed 128M size — fixed now via
|
|
# BOARD_VENDORIMAGE_PARTITION_SIZE's 256M headroom above. mkbootimg.mk builds
|
|
# the recovery FAT when enabled; pawlet-recoveryboot.sh enters it via
|
|
# reboot,3. BOARD_USES_FULL_RECOVERY_IMAGE avoids the recovery-from-boot
|
|
# imgdiff / recovery-resource.dat path. Do NOT use BOARD_USES_RECOVERY_AS_BOOT:
|
|
# it makes AOSP seize the boot.img rule and collide with our custom FAT
|
|
# mkbootimg.mk.
|
|
BOARD_USES_FULL_RECOVERY_IMAGE := true
|
|
# BOARD_RECOVERYIMAGE_PARTITION_SIZE (128M) comes from BoardConfigPawlet.mk.
|
|
TARGET_RECOVERY_FSTAB := device/pawlet/rpi4/recovery/recovery.rpi4.fstab
|
|
TARGET_RECOVERY_PIXEL_FORMAT := RGB_565
|
|
# Phase 2 — TWRP GUI: re-point once librecovery_ui_pawlet_twrp links
|
|
# (libaosprecovery / TWRP's forked install/*.cpp still unported, see
|
|
# vendor/pawlet/recovery_ui/README.md).
|
|
#TARGET_RECOVERY_UI_LIB := librecovery_ui_pawlet_twrp
|
|
|
|
# Display
|
|
TARGET_SCREEN_DENSITY := 240
|
|
|
|
# AVB — no vbmeta partition in layout
|
|
BOARD_AVB_ENABLE := false
|
|
|
|
# Kernel
|
|
BOARD_CUSTOM_BOOTIMG := true
|
|
BOARD_CUSTOM_BOOTIMG_MK := $(DEVICE_PATH)/mkbootimg.mk
|
|
BOARD_KERNEL_CMDLINE := console=ttyS0,115200 androidboot.hardware=rpi4 androidboot.verifiedbootstate=orange
|
|
|
|
# Boot devices — our fstab mounts partitions via /dev/block/by-name/*, and
|
|
# first-stage init only creates those symlinks for partitions on a declared
|
|
# boot device. The value is matched exactly against the uevent platform path
|
|
# with the /devices/platform/ prefix stripped:
|
|
# USB (sda, VL805 USB3 on PCIe): scb/fd500000.pcie
|
|
# SD card (mmcblk0, emmc2): emmc2bus/fe340000.mmc
|
|
BOARD_KERNEL_CMDLINE += androidboot.boot_devices=scb/fd500000.pcie,emmc2bus/fe340000.mmc
|
|
|
|
# Manifest
|
|
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := $(DEVICE_PATH)/framework_compatibility_matrix.xml
|
|
DEVICE_MANIFEST_FILE := $(DEVICE_PATH)/manifest.xml
|
|
PRODUCT_MANIFEST_FILES := $(DEVICE_PATH)/product_manifest.xml
|
|
|
|
# Partition sizes
|
|
BOARD_FLASH_BLOCK_SIZE := 4096
|
|
BOARD_BOOTIMAGE_PARTITION_SIZE := 134217728 # 128M
|
|
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 8589934592 # 8192M (8GB)
|
|
# Dynamically sized to content. Can't also set a fixed PARTITION_SIZE (AOSP
|
|
# errors) now that PRODUCT_USE_DYNAMIC_PARTITION_SIZE is on.
|
|
BOARD_SYSTEM_EXTIMAGE_PARTITION_RESERVED_SIZE := 104857600 # 100MB
|
|
BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
|
|
TARGET_COPY_OUT_SYSTEM_EXT := system_ext
|
|
# Dynamically sized to content (PRODUCT_USE_DYNAMIC_PARTITION_SIZE, common.mk)
|
|
# instead of a fixed PARTITION_SIZE. A fixed vendor.img always fills its
|
|
# declared size exactly, which combined with BOARD_USES_FULL_RECOVERY_IMAGE
|
|
# made "vendor.img + recovery.img <= ceiling" impossible to satisfy.
|
|
BOARD_VENDORIMAGE_PARTITION_RESERVED_SIZE := 201326592 # 192M (128M recovery.img + 64M slack)
|
|
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
|
|
TARGET_COPY_OUT_VENDOR := vendor
|
|
BOARD_USES_METADATA_PARTITION := true
|
|
BOARD_METADATAIMAGE_PARTITION_SIZE := 67108864 # 64MB (increased for A/B snapshot metadata)
|
|
BOARD_MISCIMAGE_PARTITION_SIZE := 4194304 # 4MB (A/B slot tracking)
|
|
BOARD_USERDATAIMAGE_PARTITION_SIZE := 134217728 # 128M
|
|
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
|
|
TARGET_USERIMAGES_USE_EXT4 := true
|
|
|
|
# if BOARD_STORAGE_SUPPORTS_DISCARD := true
|
|
# is set in BoardConfig.mk (or a device variant makefile), TRIM will be
|
|
# enabled on the metadata partition. Only do this if your storage device
|
|
# actually supports discard (SD cards, SSDs) — USB flash drives typically
|
|
# don't, and requesting discard on them stalls jbd2.
|
|
BOARD_STORAGE_SUPPORTS_DISCARD := true
|
|
|
|
# Platform
|
|
TARGET_BOARD_PLATFORM := bcm2711
|
|
TARGET_BOOTLOADER_BOARD_NAME := bcm2711
|
|
|
|
# Properties
|
|
TARGET_VENDOR_PROP += $(DEVICE_PATH)/vendor.prop
|
|
|
|
# SELinux
|
|
BOARD_SEPOLICY_DIRS += device/pawlet/rpi4/sepolicy
|
|
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
|
|
|
|
# Wifi
|
|
BOARD_WLAN_DEVICE := bcmdhd
|
|
BOARD_HOSTAPD_DRIVER := NL80211
|
|
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
|
|
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
|
|
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
|
|
WPA_SUPPLICANT_VERSION := VER_0_8_X
|