diff --git a/core/Makefile b/core/Makefile index ead8889489..ab0c04754a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -3523,8 +3523,12 @@ $(if $(BOARD_AVB_$(call to-upper,$(1))_KEY_PATH),\ endef ifdef INSTALLED_BOOTIMAGE_TARGET +# multiple hashes for an image are not yet supported, fortunately this +# only arises for GKI where the boot descriptor can be left out +ifeq ($(strip $(BOARD_KERNEL_BINARIES)),) $(eval $(call check-and-set-avb-args,boot)) endif +endif ifdef INSTALLED_VENDOR_BOOTIMAGE_TARGET $(eval $(call check-and-set-avb-args,vendor_boot)) diff --git a/target/board/emulator_arm64/BoardConfig.mk b/target/board/emulator_arm64/BoardConfig.mk new file mode 100644 index 0000000000..b34ccb4070 --- /dev/null +++ b/target/board/emulator_arm64/BoardConfig.mk @@ -0,0 +1,77 @@ +# Copyright (C) 2020 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# arm64 emulator specific definitions +TARGET_ARCH := arm64 +TARGET_ARCH_VARIANT := armv8-a +TARGET_CPU_VARIANT := generic +TARGET_CPU_ABI := arm64-v8a + +TARGET_2ND_ARCH := arm +TARGET_2ND_CPU_ABI := armeabi-v7a +TARGET_2ND_CPU_ABI2 := armeabi + +ifneq ($(TARGET_BUILD_APPS)$(filter cts sdk vts10,$(MAKECMDGOALS)),) +# DO NOT USE +# DO NOT USE +# +# This architecture / CPU variant must NOT be used for any 64 bit +# platform builds. It is the lowest common denominator required +# to build an unbundled application or cts for all supported 32 and 64 bit +# platforms. +# +# If you're building a 64 bit platform (and not an application) the +# ARM-v8 specification allows you to assume all the features available in an +# armv7-a-neon CPU. You should set the following as 2nd arch/cpu variant: +# +# TARGET_2ND_ARCH_VARIANT := armv8-a +# TARGET_2ND_CPU_VARIANT := generic +# +# DO NOT USE +# DO NOT USE +TARGET_2ND_ARCH_VARIANT := armv7-a-neon +# DO NOT USE +# DO NOT USE +TARGET_2ND_CPU_VARIANT := generic +# DO NOT USE +# DO NOT USE +else +TARGET_2ND_ARCH_VARIANT := armv8-a +TARGET_2ND_CPU_VARIANT := generic +endif + +include build/make/target/board/BoardConfigGsiCommon.mk +include build/make/target/board/BoardConfigEmuCommon.mk + +TARGET_NO_KERNEL := false +TARGET_NO_VENDOR_BOOT := false +BOARD_USES_RECOVERY_AS_BOOT := true + +BOARD_BOOTIMAGE_PARTITION_SIZE := 0x02000000 +BOARD_USERDATAIMAGE_PARTITION_SIZE := 576716800 + +BOARD_BOOT_HEADER_VERSION := 3 +BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) + +# Wifi. +BOARD_WLAN_DEVICE := emulator +BOARD_HOSTAPD_DRIVER := NL80211 +BOARD_WPA_SUPPLICANT_DRIVER := NL80211 +BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_simulated +BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_simulated +WPA_SUPPLICANT_VERSION := VER_0_8_X +WIFI_DRIVER_FW_PATH_PARAM := "/dev/null" +WIFI_DRIVER_FW_PATH_STA := "/dev/null" +WIFI_DRIVER_FW_PATH_AP := "/dev/null" diff --git a/target/board/emulator_arm64/device.mk b/target/board/emulator_arm64/device.mk new file mode 100644 index 0000000000..6753c1189f --- /dev/null +++ b/target/board/emulator_arm64/device.mk @@ -0,0 +1,29 @@ +# +# Copyright (C) 2020 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# Cuttlefish has GKI kernel prebuilts, so use those for the GKI boot.img. +ifeq ($(TARGET_PREBUILT_KERNEL),) + LOCAL_KERNEL := device/google/cuttlefish_kernel/5.4-arm64/kernel +else + LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL) +endif + +PRODUCT_COPY_FILES += \ + $(LOCAL_KERNEL):kernel + +# Adjust the Dalvik heap to be appropriate for a tablet. +$(call inherit-product-if-exists, frameworks/base/build/tablet-dalvik-heap.mk) +$(call inherit-product-if-exists, frameworks/native/build/tablet-dalvik-heap.mk) diff --git a/target/board/emulator_arm64/system_ext.prop b/target/board/emulator_arm64/system_ext.prop new file mode 100644 index 0000000000..2f8f803e4c --- /dev/null +++ b/target/board/emulator_arm64/system_ext.prop @@ -0,0 +1,5 @@ +# +# system.prop for emulator arm64 sdk +# + +rild.libpath=/vendor/lib64/libreference-ril.so diff --git a/target/board/generic_arm64/BoardConfig.mk b/target/board/generic_arm64/BoardConfig.mk index 8e28b5fc01..91d569291c 100644 --- a/target/board/generic_arm64/BoardConfig.mk +++ b/target/board/generic_arm64/BoardConfig.mk @@ -53,20 +53,21 @@ TARGET_2ND_CPU_VARIANT := generic endif include build/make/target/board/BoardConfigGsiCommon.mk -include build/make/target/board/BoardConfigEmuCommon.mk TARGET_NO_KERNEL := false -TARGET_NO_VENDOR_BOOT := false +TARGET_NO_VENDOR_BOOT := true BOARD_USES_RECOVERY_AS_BOOT := true -BOARD_BOOTIMAGE_PARTITION_SIZE := 0x02000000 +BOARD_BOOTIMAGE_PARTITION_SIZE := 0x04000000 BOARD_USERDATAIMAGE_PARTITION_SIZE := 576716800 BOARD_BOOT_HEADER_VERSION := 3 BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) -# Emulator system image is going to be used as GSI and some vendor still hasn't -# cleaned up all device specific directories under root! +BOARD_KERNEL_BINARIES := kernel-5.4 kernel-5.4-gz kernel-5.4-lz4 + +# Some vendors still haven't cleaned up all device specific directories under +# root! # TODO(b/111434759, b/111287060) SoC specific hacks BOARD_ROOT_EXTRA_SYMLINKS += /vendor/lib/dsp:/dsp @@ -76,14 +77,3 @@ BOARD_ROOT_EXTRA_SYMLINKS += /vendor/firmware_mnt:/firmware # TODO(b/36764215): remove this setting when the generic system image # no longer has QCOM-specific directories under /. BOARD_SEPOLICY_DIRS += build/make/target/board/generic_arm64/sepolicy - -# Wifi. -BOARD_WLAN_DEVICE := emulator -BOARD_HOSTAPD_DRIVER := NL80211 -BOARD_WPA_SUPPLICANT_DRIVER := NL80211 -BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_simulated -BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_simulated -WPA_SUPPLICANT_VERSION := VER_0_8_X -WIFI_DRIVER_FW_PATH_PARAM := "/dev/null" -WIFI_DRIVER_FW_PATH_STA := "/dev/null" -WIFI_DRIVER_FW_PATH_AP := "/dev/null" diff --git a/target/board/generic_arm64/device.mk b/target/board/generic_arm64/device.mk index 4fcae46285..3b7cd44acb 100644 --- a/target/board/generic_arm64/device.mk +++ b/target/board/generic_arm64/device.mk @@ -14,15 +14,10 @@ # limitations under the License. # -# Cuttlefish has GKI kernel prebuilts, so use those for the GKI boot.img. -ifeq ($(TARGET_PREBUILT_KERNEL),) - LOCAL_KERNEL := device/google/cuttlefish_kernel/5.4-arm64/kernel -else - LOCAL_KERNEL := $(TARGET_PREBUILT_KERNEL) -endif - PRODUCT_COPY_FILES += \ - $(LOCAL_KERNEL):kernel + device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4:kernel-5.4 \ + device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4-gz:kernel-5.4-gz \ + device/google/cuttlefish_kernel/5.4-arm64/kernel-5.4-lz4:kernel-5.4-lz4 # Adjust the Dalvik heap to be appropriate for a tablet. $(call inherit-product-if-exists, frameworks/base/build/tablet-dalvik-heap.mk) diff --git a/target/product/aosp_arm64.mk b/target/product/aosp_arm64.mk index 3f986d3961..d026a1935c 100644 --- a/target/product/aosp_arm64.mk +++ b/target/product/aosp_arm64.mk @@ -14,8 +14,6 @@ # limitations under the License. # -PRODUCT_USE_DYNAMIC_PARTITIONS := true - # The system image of aosp_arm64-userdebug is a GSI for the devices with: # - ARM 64 bits user space # - 64 bits binder interface diff --git a/target/product/sdk_phone_arm64.mk b/target/product/sdk_phone_arm64.mk index ad726333a7..3ab0c57fe4 100644 --- a/target/product/sdk_phone_arm64.mk +++ b/target/product/sdk_phone_arm64.mk @@ -15,7 +15,36 @@ # QEMU_USE_SYSTEM_EXT_PARTITIONS := true -$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_arm64.mk) +PRODUCT_USE_DYNAMIC_PARTITIONS := true + +# This is a build configuration for a full-featured build of the +# Open-Source part of the tree. It's geared toward a US-centric +# build quite specifically for the emulator, and might not be +# entirely appropriate to inherit from for on-device configurations. + +# +# All components inherited here go to system image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk) + +# +# All components inherited here go to system_ext image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk) + +# +# All components inherited here go to product image +# +$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk) + +# +# All components inherited here go to vendor or vendor_boot image +# +$(call inherit-product-if-exists, device/generic/goldfish/arm64-vendor.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/emulator_vendor.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/board/emulator_arm64/device.mk) # Define the host tools and libs that are parts of the SDK. $(call inherit-product, sdk/build/product_sdk.mk) @@ -28,7 +57,7 @@ PRODUCT_PACKAGES += \ # Overrides PRODUCT_BRAND := Android PRODUCT_NAME := sdk_phone_arm64 -PRODUCT_DEVICE := generic_arm64 +PRODUCT_DEVICE := emulator_arm64 PRODUCT_MODEL := Android SDK built for arm64