diff options
| -rw-r--r-- | core/Makefile | 13 | ||||
| -rw-r--r-- | target/board/emulator_arm64/BoardConfig.mk | 77 | ||||
| -rw-r--r-- | target/board/emulator_arm64/device.mk | 29 | ||||
| -rw-r--r-- | target/board/emulator_arm64/system_ext.prop | 5 | ||||
| -rw-r--r-- | target/board/generic_arm64/BoardConfig.mk | 20 | ||||
| -rw-r--r-- | target/board/generic_arm64/device.mk | 11 | ||||
| -rw-r--r-- | target/product/aosp_arm64.mk | 2 | ||||
| -rw-r--r-- | target/product/sdk_phone_arm64.mk | 32 | ||||
| -rwxr-xr-x | tools/releasetools/add_img_to_target_files.py | 28 | ||||
| -rw-r--r-- | tools/releasetools/common.py | 19 |
10 files changed, 188 insertions, 48 deletions
diff --git a/core/Makefile b/core/Makefile index a0cc1fb43d..6809d24f6c 100644 --- a/core/Makefile +++ b/core/Makefile @@ -2080,8 +2080,7 @@ $(INSTALLED_RECOVERY_BUILD_PROP_TARGET): \ $(call append-recovery-ui-properties,$(PRIVATE_RECOVERY_UI_PROPERTIES),$@) ifeq (truetrue,$(strip $(BUILDING_VENDOR_BOOT_IMAGE))$(strip $(AB_OTA_UPDATER))) - INTERNAL_RECOVERYIMAGE_ARGS := \ - --kernel $(recovery_kernel) --ramdisk $(recovery_ramdisk) + INTERNAL_RECOVERYIMAGE_ARGS := --ramdisk $(recovery_ramdisk) ifdef GENERIC_KERNEL_CMDLINE INTERNAL_RECOVERYIMAGE_ARGS += --cmdline "$(GENERIC_KERNEL_CMDLINE)" endif @@ -2158,10 +2157,10 @@ $(recovery_ramdisk): $(MKBOOTFS) $(MINIGZIP) \ # $(2): kernel file define build-recoveryimage-target $(if $(filter true,$(PRODUCT_SUPPORTS_VBOOT)), \ - $(MKBOOTIMG) --kernel $(2) $(MKBOOTIMG_KERNEL_ARG) $(INTERNAL_RECOVERYIMAGE_ARGS) \ + $(MKBOOTIMG) --kernel $(2) $(INTERNAL_RECOVERYIMAGE_ARGS) \ $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \ --output $(1).unsigned, \ - $(MKBOOTIMG) --kernel $(2) $(MKBOOTIMG_KERNEL_ARG) $(INTERNAL_RECOVERYIMAGE_ARGS) \ + $(MKBOOTIMG) --kernel $(2) $(INTERNAL_RECOVERYIMAGE_ARGS) \ $(INTERNAL_MKBOOTIMG_VERSION_ARGS) $(BOARD_RECOVERY_MKBOOTIMG_ARGS) \ --output $(1)) $(if $(filter true,$(PRODUCT_SUPPORTS_BOOT_SIGNER)),\ @@ -3472,8 +3471,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)) @@ -4128,6 +4131,8 @@ ifdef BOARD_BOOTIMAGE_PARTITION_SIZE endif ifeq ($(INSTALLED_BOOTIMAGE_TARGET),) $(hide) echo "no_boot=true" >> $@ +else + echo "boot_images=$(foreach b,$(INSTALLED_BOOTIMAGE_TARGET),$(notdir $(b)))" >> $@ endif ifneq ($(INSTALLED_VENDOR_BOOTIMAGE_TARGET),) echo "vendor_boot=true" >> $@ 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 a5264e43cf..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 := 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 491397f2d4..e88a36683c 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 9024890d2c..3ab0c57fe4 100644 --- a/target/product/sdk_phone_arm64.mk +++ b/target/product/sdk_phone_arm64.mk @@ -15,8 +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) @@ -29,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 diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py index cc05c644a1..7db506c72f 100755 --- a/tools/releasetools/add_img_to_target_files.py +++ b/tools/releasetools/add_img_to_target_files.py @@ -731,16 +731,24 @@ def AddImagesToTargetFiles(filename): boot_image = None if has_boot: banner("boot") - # common.GetBootableImage() returns the image directly if present. - boot_image = common.GetBootableImage( - "IMAGES/boot.img", "boot.img", OPTIONS.input_tmp, "BOOT") - # boot.img may be unavailable in some targets (e.g. aosp_arm64). - if boot_image: - partitions['boot'] = os.path.join(OPTIONS.input_tmp, "IMAGES", "boot.img") - if not os.path.exists(partitions['boot']): - boot_image.WriteToDir(OPTIONS.input_tmp) - if output_zip: - boot_image.AddToZip(output_zip) + boot_images = OPTIONS.info_dict.get("boot_images") + if boot_images is None: + boot_images = "boot.img" + for b in boot_images.split(): + # common.GetBootableImage() returns the image directly if present. + boot_image = common.GetBootableImage( + "IMAGES/" + b, b, OPTIONS.input_tmp, "BOOT") + # boot.img may be unavailable in some targets (e.g. aosp_arm64). + if boot_image: + boot_image_path = os.path.join(OPTIONS.input_tmp, "IMAGES", b) + # vbmeta does not need to include boot.img with multiple boot.img files, + # which is only used for aosp_arm64 for GKI + if len(boot_images.split()) == 1: + partitions['boot'] = boot_image_path + if not os.path.exists(boot_image_path): + boot_image.WriteToDir(OPTIONS.input_tmp) + if output_zip: + boot_image.AddToZip(output_zip) if has_vendor_boot: banner("vendor_boot") diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index ffcd38bb02..536d47f59f 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -1015,7 +1015,7 @@ def _MakeRamdisk(sourcedir, fs_config_file=None): return ramdisk_img -def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, +def _BuildBootableImage(image_name, sourcedir, fs_config_file, info_dict=None, has_ramdisk=False, two_step_image=False): """Build a bootable image from the specified sourcedir. @@ -1028,7 +1028,15 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, for building the requested image. """ - if not os.access(os.path.join(sourcedir, "kernel"), os.F_OK): + # "boot" or "recovery", without extension. + partition_name = os.path.basename(sourcedir).lower() + + if partition_name == "recovery": + kernel = "kernel" + else: + kernel = image_name.replace("boot", "kernel") + kernel = kernel.replace(".img","") + if not os.access(os.path.join(sourcedir, kernel), os.F_OK): return None if has_ramdisk and not os.access(os.path.join(sourcedir, "RAMDISK"), os.F_OK): @@ -1045,7 +1053,7 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, # use MKBOOTIMG from environ, or "mkbootimg" if empty or not set mkbootimg = os.getenv('MKBOOTIMG') or "mkbootimg" - cmd = [mkbootimg, "--kernel", os.path.join(sourcedir, "kernel")] + cmd = [mkbootimg, "--kernel", os.path.join(sourcedir, kernel)] fn = os.path.join(sourcedir, "second") if os.access(fn, os.F_OK): @@ -1072,9 +1080,6 @@ def _BuildBootableImage(sourcedir, fs_config_file, info_dict=None, cmd.append("--pagesize") cmd.append(open(fn).read().rstrip("\n")) - # "boot" or "recovery", without extension. - partition_name = os.path.basename(sourcedir).lower() - if partition_name == "recovery": args = info_dict.get("recovery_mkbootimg_args") else: @@ -1197,7 +1202,7 @@ def GetBootableImage(name, prebuilt_name, unpack_dir, tree_subdir, info_dict.get("recovery_as_boot") == "true") fs_config = "META/" + tree_subdir.lower() + "_filesystem_config.txt" - data = _BuildBootableImage(os.path.join(unpack_dir, tree_subdir), + data = _BuildBootableImage(prebuilt_name, os.path.join(unpack_dir, tree_subdir), os.path.join(unpack_dir, fs_config), info_dict, has_ramdisk, two_step_image) if data: |