From 6fdff23df27940f61fe47b377a9f2fb4daa5180a Mon Sep 17 00:00:00 2001 From: SzuWei Lin Date: Tue, 6 Jun 2017 16:54:57 +0800 Subject: [PATCH] Normalize building generic system image with treble-common.mk Move the common part from make file of generic AOSP system images into treble_common.mk, and update the content of common part. The common part inclueds: - HAL interfaces - VNDK libs - VNDK-SP libs - Some other modules supporting HAL interfaces - Some Treble default configurations Bug: 37927875 Test: boot to home screen with the generic system image Merged-In: I4202454d57970cef713f7d6437191094df0009e9 Change-Id: I4202454d57970cef713f7d6437191094df0009e9 --- target/product/aosp_arm64_a.mk | 84 +-------------- target/product/aosp_arm64_ab.mk | 83 +------------- target/product/aosp_arm_a.mk | 83 +------------- target/product/treble_common.mk | 184 ++++++++++++++++++++++++++++++++ 4 files changed, 189 insertions(+), 245 deletions(-) create mode 100644 target/product/treble_common.mk diff --git a/target/product/aosp_arm64_a.mk b/target/product/aosp_arm64_a.mk index 0b0ba6181..535b3a47c 100644 --- a/target/product/aosp_arm64_a.mk +++ b/target/product/aosp_arm64_a.mk @@ -16,90 +16,10 @@ # PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at # /vendor/[build|default].prop when build split is on. In order to have sysprops -# on the generic system image, place them in build/make/target/board/generic_arm_nonab/ +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ # system.prop. -PRODUCT_COPY_FILES := \ - device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml - -#split selinux policy -PRODUCT_FULL_TREBLE_OVERRIDE := true - -# Some of HAL interface libraries are automatically added by the dependencies from -# the framework. However, we list them all here to make it explicit and prevent -# possible mistake. -PRODUCT_PACKAGES := \ - android.dvr.composer@1.0 \ - android.hardware.audio@2.0 \ - android.hardware.audio.common@2.0 \ - android.hardware.audio.common@2.0-util \ - android.hardware.audio.effect@2.0 \ - android.hardware.biometrics.fingerprint@2.1 \ - android.hardware.bluetooth@1.0 \ - android.hardware.boot@1.0 \ - android.hardware.broadcastradio@1.0 \ - android.hardware.broadcastradio@1.1 \ - android.hardware.camera.common@1.0 \ - android.hardware.camera.device@1.0 \ - android.hardware.camera.device@3.2 \ - android.hardware.camera.provider@2.4 \ - android.hardware.configstore@1.0 \ - android.hardware.contexthub@1.0 \ - android.hardware.drm@1.0 \ - android.hardware.gatekeeper@1.0 \ - android.hardware.gnss@1.0 \ - android.hardware.graphics.allocator@2.0 \ - android.hardware.graphics.common@1.0 \ - android.hardware.graphics.composer@2.1 \ - android.hardware.graphics.mapper@2.0 \ - android.hardware.ir@1.0 \ - android.hardware.keymaster@3.0 \ - android.hardware.light@2.0 \ - android.hardware.media@1.0 \ - android.hardware.media.omx@1.0 \ - android.hardware.media.omx@1.0-utils \ - android.hardware.memtrack@1.0 \ - android.hardware.nfc@1.0 \ - android.hardware.oemlock@1.0 \ - android.hardware.power@1.0 \ - android.hardware.radio@1.0 \ - android.hardware.radio.deprecated@1.0 \ - android.hardware.sensors@1.0 \ - android.hardware.soundtrigger@2.0 \ - android.hardware.thermal@1.0 \ - android.hardware.tv.cec@1.0 \ - android.hardware.tv.input@1.0 \ - android.hardware.usb@1.0 \ - android.hardware.vibrator@1.0 \ - android.hardware.vr@1.0 \ - android.hardware.weaver@1.0 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi.supplicant@1.0 \ - android.hidl.allocator@1.0 \ - android.hidl.base@1.0 \ - android.hidl.manager@1.0 \ - android.hidl.memory@1.0 \ - -PRODUCT_PACKAGES += \ - libdynamic_sensor_ext \ - libaudioroute \ - libxml2 \ - libtinyalsa \ - libtinycompress \ - cplay \ - libion \ - -# WiFi -# Note: Wifi HAL (android.hardware.wifi@1.0-service, wpa_supplicant, -# and wpa_supplicant.conf) is not here. They are at vendor.img -PRODUCT_PACKAGES += \ - libwpa_client \ - hostapd \ - hostapd_cli \ - wificond \ - wifilogd \ - -PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system +include build/make/target/product/treble_common.mk $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) diff --git a/target/product/aosp_arm64_ab.mk b/target/product/aosp_arm64_ab.mk index aa6912637..fe3afb7b1 100644 --- a/target/product/aosp_arm64_ab.mk +++ b/target/product/aosp_arm64_ab.mk @@ -16,89 +16,10 @@ # PRODUCT_PROPERTY_OVERRIDES cannot be used here because sysprops will be at # /vendor/[build|default].prop when build split is on. In order to have sysprops -# on the generic system image, place them in build/make/target/board/generic_arm64_ab/ +# on the generic system image, place them in build/make/target/board/generic_arm64_a/ # system.prop. -PRODUCT_COPY_FILES := \ - device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml - -#split selinux policy -PRODUCT_FULL_TREBLE_OVERRIDE := true - -# Some of HAL interface libraries are automatically added by the dependencies from -# the framework. However, we list them all here to make it explicit and prevent -# possible mistake. -PRODUCT_PACKAGES := \ - android.frameworks.vr.composer@1.0 \ - android.hardware.audio@2.0 \ - android.hardware.audio.common@2.0 \ - android.hardware.audio.common@2.0-util \ - android.hardware.audio.effect@2.0 \ - android.hardware.biometrics.fingerprint@2.1 \ - android.hardware.bluetooth@1.0 \ - android.hardware.boot@1.0 \ - android.hardware.broadcastradio@1.0 \ - android.hardware.broadcastradio@1.1 \ - android.hardware.camera.common@1.0 \ - android.hardware.camera.device@1.0 \ - android.hardware.camera.device@3.2 \ - android.hardware.camera.provider@2.4 \ - android.hardware.configstore@1.1 \ - android.hardware.contexthub@1.0 \ - android.hardware.drm@1.0 \ - android.hardware.gatekeeper@1.0 \ - android.hardware.gnss@1.0 \ - android.hardware.graphics.allocator@2.0 \ - android.hardware.graphics.common@1.0 \ - android.hardware.graphics.composer@2.1 \ - android.hardware.graphics.mapper@2.0 \ - android.hardware.ir@1.0 \ - android.hardware.keymaster@3.0 \ - android.hardware.light@2.0 \ - android.hardware.media@1.0 \ - android.hardware.media.omx@1.0 \ - android.hardware.media.omx@1.0-utils \ - android.hardware.memtrack@1.0 \ - android.hardware.nfc@1.0 \ - android.hardware.power@1.0 \ - android.hardware.radio@1.0 \ - android.hardware.radio.deprecated@1.0 \ - android.hardware.sensors@1.0 \ - android.hardware.soundtrigger@2.0 \ - android.hardware.thermal@1.0 \ - android.hardware.tv.cec@1.0 \ - android.hardware.tv.input@1.0 \ - android.hardware.usb@1.0 \ - android.hardware.vibrator@1.0 \ - android.hardware.vr@1.0 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi.supplicant@1.0 \ - android.hidl.allocator@1.0 \ - android.hidl.memory@1.0 \ - -PRODUCT_PACKAGES += \ - libdynamic_sensor_ext \ - libaudioroute \ - libxml2 \ - libtinyalsa \ - libtinycompress \ - cplay \ - libion \ - -# WiFi -# Note: Wifi HAL (android.hardware.wifi@1.0-service, wpa_supplicant, -# and wpa_supplicant.conf) is not here. They are at vendor.img -PRODUCT_PACKAGES += \ - libwpa_client \ - hostapd \ - hostapd_cli \ - wificond \ - wifilogd \ - -# TODO(jiyong) move ims to vendor partition -#PRODUCT_PACKAGES += ims - -PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system +include build/make/target/product/treble_common.mk AB_OTA_UPDATER := true AB_OTA_PARTITIONS := system diff --git a/target/product/aosp_arm_a.mk b/target/product/aosp_arm_a.mk index 83db4027b..c3188e02c 100644 --- a/target/product/aosp_arm_a.mk +++ b/target/product/aosp_arm_a.mk @@ -19,88 +19,7 @@ # on the generic system image, place them in build/make/target/board/generic_arm_a/ # system.prop. -PRODUCT_COPY_FILES := \ - device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml - -#split selinux policy -PRODUCT_FULL_TREBLE_OVERRIDE := true - -# Some of HAL interface libraries are automatically added by the dependencies from -# the framework. However, we list them all here to make it explicit and prevent -# possible mistake. -PRODUCT_PACKAGES := \ - android.dvr.composer@1.0 \ - android.hardware.audio@2.0 \ - android.hardware.audio.common@2.0 \ - android.hardware.audio.common@2.0-util \ - android.hardware.audio.effect@2.0 \ - android.hardware.biometrics.fingerprint@2.1 \ - android.hardware.bluetooth@1.0 \ - android.hardware.boot@1.0 \ - android.hardware.broadcastradio@1.0 \ - android.hardware.broadcastradio@1.1 \ - android.hardware.camera.common@1.0 \ - android.hardware.camera.device@1.0 \ - android.hardware.camera.device@3.2 \ - android.hardware.camera.provider@2.4 \ - android.hardware.configstore@1.0 \ - android.hardware.contexthub@1.0 \ - android.hardware.drm@1.0 \ - android.hardware.gatekeeper@1.0 \ - android.hardware.gnss@1.0 \ - android.hardware.graphics.allocator@2.0 \ - android.hardware.graphics.common@1.0 \ - android.hardware.graphics.composer@2.1 \ - android.hardware.graphics.mapper@2.0 \ - android.hardware.ir@1.0 \ - android.hardware.keymaster@3.0 \ - android.hardware.light@2.0 \ - android.hardware.media@1.0 \ - android.hardware.media.omx@1.0 \ - android.hardware.media.omx@1.0-utils \ - android.hardware.memtrack@1.0 \ - android.hardware.nfc@1.0 \ - android.hardware.oemlock@1.0 \ - android.hardware.power@1.0 \ - android.hardware.radio@1.0 \ - android.hardware.radio.deprecated@1.0 \ - android.hardware.sensors@1.0 \ - android.hardware.soundtrigger@2.0 \ - android.hardware.thermal@1.0 \ - android.hardware.tv.cec@1.0 \ - android.hardware.tv.input@1.0 \ - android.hardware.usb@1.0 \ - android.hardware.usb@1.1 \ - android.hardware.vibrator@1.0 \ - android.hardware.vr@1.0 \ - android.hardware.weaver@1.0 \ - android.hardware.wifi@1.0 \ - android.hardware.wifi.supplicant@1.0 \ - android.hidl.allocator@1.0 \ - android.hidl.base@1.0 \ - android.hidl.manager@1.0 \ - android.hidl.memory@1.0 \ - -PRODUCT_PACKAGES += \ - libdynamic_sensor_ext \ - libaudioroute \ - libxml2 \ - libtinyalsa \ - libtinycompress \ - cplay \ - libion \ - -# WiFi -# Note: Wifi HAL (android.hardware.wifi@1.0-service, wpa_supplicant, -# and wpa_supplicant.conf) is not here. They are at vendor.img -PRODUCT_PACKAGES += \ - libwpa_client \ - hostapd \ - hostapd_cli \ - wificond \ - wifilogd \ - -PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system +include build/make/target/product/treble_common.mk $(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/verity.mk) diff --git a/target/product/treble_common.mk b/target/product/treble_common.mk new file mode 100644 index 000000000..c6f8264de --- /dev/null +++ b/target/product/treble_common.mk @@ -0,0 +1,184 @@ +# +# Copyright (C) 2017 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. +# + +# Split selinux policy +PRODUCT_FULL_TREBLE_OVERRIDE := true + +# HAL interfaces: +# Some of HAL interface libraries are automatically added by the dependencies +# from the framework. However, we list them all here to make it explicit and +# prevent possible mistake. +PRODUCT_PACKAGES := \ + android.frameworks.schedulerservice@1.0 \ + android.frameworks.sensorservice@1.0 \ + android.frameworks.vr.composer@1.0 \ + android.hardware.audio@2.0 \ + android.hardware.audio.common@2.0 \ + android.hardware.audio.common@2.0-util \ + android.hardware.audio.effect@2.0 \ + android.hardware.biometrics.fingerprint@2.1 \ + android.hardware.bluetooth@1.0 \ + android.hardware.boot@1.0 \ + android.hardware.broadcastradio@1.0 \ + android.hardware.broadcastradio@1.1 \ + android.hardware.camera.common@1.0 \ + android.hardware.camera.device@1.0 \ + android.hardware.camera.device@3.2 \ + android.hardware.camera.provider@2.4 \ + android.hardware.configstore-utils \ + android.hardware.configstore@1.0 \ + android.hardware.configstore@1.1 \ + android.hardware.contexthub@1.0 \ + android.hardware.drm@1.0 \ + android.hardware.dumpstate@1.0 \ + android.hardware.gatekeeper@1.0 \ + android.hardware.gnss@1.0 \ + android.hardware.graphics.allocator@2.0 \ + android.hardware.graphics.bufferqueue@1.0 \ + android.hardware.graphics.common@1.0 \ + android.hardware.graphics.composer@2.1 \ + android.hardware.graphics.mapper@2.0 \ + android.hardware.health@1.0 \ + android.hardware.ir@1.0 \ + android.hardware.keymaster@3.0 \ + android.hardware.light@2.0 \ + android.hardware.media@1.0 \ + android.hardware.media.omx@1.0-utils \ + android.hardware.media.omx@1.0 \ + android.hardware.memtrack@1.0 \ + android.hardware.nfc@1.0 \ + android.hardware.oemlock@1.0 \ + android.hardware.power@1.0 \ + android.hardware.radio@1.0 \ + android.hardware.radio.deprecated@1.0 \ + android.hardware.sensors@1.0 \ + android.hardware.soundtrigger@2.0 \ + android.hardware.thermal@1.0 \ + android.hardware.tv.cec@1.0 \ + android.hardware.tv.input@1.0 \ + android.hardware.usb@1.0 \ + android.hardware.usb@1.1 \ + android.hardware.vibrator@1.0 \ + android.hardware.vr@1.0 \ + android.hardware.weaver@1.0 \ + android.hardware.wifi@1.0 \ + android.hardware.wifi.supplicant@1.0 \ + android.hidl.allocator@1.0 \ + android.hidl.manager@1.0 \ + android.hidl.memory@1.0 \ + android.hidl.token@1.0 \ + android.system.wifi.keystore@1.0 \ + +# VNDK: +# Some VNDK shared objects are automatically included indirectly. +# We list them all here to make it explicit and prevent possible mistakes. +# An example of one such mistake was libcurl, which is included in A/B +# devices because of update_engine, but not in non-A/B devices. +PRODUCT_PACKAGES += \ + libaudioroute \ + libaudioutils \ + libbinder \ + libcamera_metadata \ + libcap \ + libcrypto \ + libcrypto_utils \ + libcups \ + libcurl \ + libdiskconfig \ + libdumpstateutil \ + libevent \ + libexif \ + libexpat \ + libfmq \ + libgatekeeper \ + libgui \ + libhardware_legacy \ + libhidlmemory \ + libicui18n \ + libicuuc \ + libjpeg \ + libkeymaster1 \ + libkeymaster_messages \ + libldacBT_abr \ + libldacBT_enc \ + liblz4 \ + libmdnssd \ + libmemtrack \ + libmemunreachable \ + libmetricslogger \ + libminijail \ + libnetutils \ + libnl \ + libopus \ + libpagemap \ + libpcap \ + libpcre2 \ + libpcrecpp \ + libpdfium \ + libpiex \ + libpower \ + libprocessgroup \ + libprocinfo \ + libprotobuf-cpp-full \ + libprotobuf-cpp-lite \ + libradio_metadata \ + libsoftkeymasterdevice \ + libsonic \ + libsonivox \ + libspeexresampler \ + libsqlite \ + libssl \ + libsuspend \ + libsysutils \ + libtinyalsa \ + libtinyxml2 \ + libui \ + libusbhost \ + libvixl-arm \ + libvixl-arm64 \ + libvorbisidec \ + libwebrtc_audio_preprocessing \ + libxml2 \ + libziparchive \ + +# VNDK-SP: +PRODUCT_PACKAGES += \ + vndk-sp \ + +PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/bootdevice/by-name/system + +# Wifi: +# Wifi HAL (android.hardware.wifi@1.0-service, wpa_supplicant, +# and wpa_supplicant.conf) is not here. They are in vendor.img +PRODUCT_PACKAGES += \ + wificond \ + +# Audio: +USE_XML_AUDIO_POLICY_CONF := 1 +# The following policy XML files are used as fallback for +# vendors/devices not using XML to configure audio policy. +PRODUCT_COPY_FILES += \ + frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml:system/etc/audio_policy_configuration.xml \ + frameworks/av/services/audiopolicy/config/a2dp_audio_policy_configuration.xml:system/etc/a2dp_audio_policy_configuration.xml \ + frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:system/etc/usb_audio_policy_configuration.xml \ + frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:system/etc/r_submix_audio_policy_configuration.xml \ + frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:system/etc/audio_policy_volumes.xml \ + frameworks/av/services/audiopolicy/config/default_volume_tables.xml:system/etc/default_volume_tables.xml \ + +# May need to review why the followings are needed in generic system image. +PRODUCT_COPY_FILES := \ + device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml +