• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (C) 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# Include all languages
18$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
19
20# Enable updating of APEXes
21$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
22
23# Enable userspace reboot
24$(call inherit-product, $(SRC_TARGET_DIR)/product/userspace_reboot.mk)
25
26# Enforce generic ramdisk allow list
27$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk)
28
29# Set Vendor SPL to match platform
30VENDOR_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
31
32# Set boot SPL
33BOOT_SECURITY_PATCH = $(PLATFORM_SECURITY_PATCH)
34
35PRODUCT_VENDOR_PROPERTIES += \
36    ro.vendor.boot_security_patch=$(BOOT_SECURITY_PATCH)
37
38PRODUCT_SOONG_NAMESPACES += device/generic/goldfish-opengl # for vulkan
39PRODUCT_SOONG_NAMESPACES += device/generic/goldfish # for audio and wifi
40
41PRODUCT_SHIPPING_API_LEVEL := 33
42PRODUCT_USE_DYNAMIC_PARTITIONS := true
43DISABLE_RILD_OEM_HOOK := true
44
45# TODO(b/205788876) remove this condition when openwrt has an image for arm.
46ifndef PRODUCT_ENFORCE_MAC80211_HWSIM
47PRODUCT_ENFORCE_MAC80211_HWSIM := true
48endif
49
50PRODUCT_SET_DEBUGFS_RESTRICTIONS := true
51
52PRODUCT_SOONG_NAMESPACES += device/generic/goldfish-opengl # for vulkan
53
54PRODUCT_FS_COMPRESSION := 1
55TARGET_RO_FILE_SYSTEM_TYPE ?= ext4
56TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs
57TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 6442450944
58
59TARGET_VULKAN_SUPPORT ?= true
60TARGET_ENABLE_HOST_BLUETOOTH_EMULATION ?= true
61TARGET_USE_BTLINUX_HAL_IMPL ?= true
62
63# TODO(b/65201432): Swiftshader needs to create executable memory.
64PRODUCT_REQUIRES_INSECURE_EXECMEM_FOR_SWIFTSHADER := true
65
66AB_OTA_UPDATER := true
67AB_OTA_PARTITIONS += \
68    boot \
69    odm \
70    odm_dlkm \
71    product \
72    system \
73    system_dlkm \
74    system_ext \
75    vbmeta \
76    vbmeta_system \
77    vendor \
78    vendor_boot \
79    vendor_dlkm \
80
81TARGET_USES_INITBOOT ?= true
82ifeq ($(TARGET_USES_INITBOOT),true)
83AB_OTA_PARTITIONS += init_boot
84endif
85
86# Enable Virtual A/B
87$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/android_t_baseline.mk)
88PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := gz
89
90# Enable Scoped Storage related
91$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
92
93# Properties that are not vendor-specific. These will go in the product
94# partition, instead of the vendor partition, and do not need vendor
95# sepolicy
96PRODUCT_PRODUCT_PROPERTIES += \
97    persist.adb.tcp.port=5555 \
98    ro.com.google.locationfeatures=1 \
99    persist.sys.fuse.passthrough.enable=true \
100    persist.sys.fuse.bpf.enable=false \
101
102# Until we support adb keys on user builds, and fix logcat over serial,
103# spawn adbd by default without authorization for "adb logcat"
104ifeq ($(TARGET_BUILD_VARIANT),user)
105PRODUCT_PRODUCT_PROPERTIES += \
106    ro.adb.secure=0 \
107    ro.debuggable=1
108endif
109
110# Explanation of specific properties:
111#   ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases
112PRODUCT_VENDOR_PROPERTIES += \
113    tombstoned.max_tombstone_count=500 \
114    vendor.bt.rootcanal_test_console=off \
115    ro.carrier=unknown \
116    ro.com.android.dataroaming?=false \
117    ro.hardware.virtual_device=1 \
118    ro.logd.size=1M \
119    wifi.interface=wlan0 \
120    wifi.direct.interface=p2p-dev-wlan0 \
121    persist.sys.zram_enabled=1 \
122    ro.hardware.keystore_desede=true \
123    ro.rebootescrow.device=/dev/block/pmem0 \
124    ro.vendor.hwcomposer.pmem=/dev/block/pmem1 \
125    ro.incremental.enable=1 \
126    debug.c2.use_dmabufheaps=1 \
127    ro.camerax.extensions.enabled=true \
128
129LOCAL_BT_PROPERTIES ?= \
130 vendor.ser.bt-uart?=/dev/hvc5 \
131
132PRODUCT_VENDOR_PROPERTIES += \
133	 ${LOCAL_BT_PROPERTIES} \
134
135# Below is a list of properties we probably should get rid of.
136PRODUCT_VENDOR_PROPERTIES += \
137    wlan.driver.status=ok
138
139ifneq ($(LOCAL_DISABLE_OMX),true)
140# Codec 1.0 requires the OMX services
141DEVICE_MANIFEST_FILE += \
142    device/google/cuttlefish/shared/config/android.hardware.media.omx@1.0.xml
143endif
144
145PRODUCT_VENDOR_PROPERTIES += \
146    debug.stagefright.c2inputsurface=-1
147
148# Enforce privapp permissions control.
149PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce
150
151# aes-256-heh default is not supported in standard kernels.
152PRODUCT_VENDOR_PROPERTIES += ro.crypto.volume.filenames_mode=aes-256-cts
153
154# Copy preopted files from system_b on first boot
155PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1
156
157AB_OTA_POSTINSTALL_CONFIG += \
158    RUN_POSTINSTALL_system=true \
159    POSTINSTALL_PATH_system=system/bin/otapreopt_script \
160    FILESYSTEM_TYPE_system=ext4 \
161    POSTINSTALL_OPTIONAL_system=true
162
163AB_OTA_POSTINSTALL_CONFIG += \
164    RUN_POSTINSTALL_vendor=true \
165    POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
166    FILESYSTEM_TYPE_vendor=ext4 \
167    POSTINSTALL_OPTIONAL_vendor=true
168
169# Userdata Checkpointing OTA GC
170PRODUCT_PACKAGES += \
171    checkpoint_gc
172
173# Enable CameraX extension sample
174PRODUCT_PACKAGES += androidx.camera.extensions.impl sample_camera_extensions.xml
175
176# DRM service opt-in
177PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true
178
179# Call deleteAllKeys if vold detects a factory reset
180PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true
181
182PRODUCT_SOONG_NAMESPACES += hardware/google/camera
183PRODUCT_SOONG_NAMESPACES += hardware/google/camera/devices/EmulatedCamera
184
185#
186# Packages for various GCE-specific utilities
187#
188PRODUCT_PACKAGES += \
189    CuttlefishService \
190    cuttlefish_sensor_injection \
191    socket_vsock_proxy \
192    tombstone_transmit \
193    tombstone_producer \
194    suspend_blocker \
195    vsoc_input_service \
196
197$(call soong_config_append,cvd,launch_configs,cvd_config_auto.json cvd_config_foldable.json cvd_config_go.json cvd_config_phone.json cvd_config_slim.json cvd_config_tablet.json cvd_config_tv.json cvd_config_wear.json)
198$(call soong_config_append,cvd,grub_config,grub.cfg)
199
200#
201# Packages for AOSP-available stuff we use from the framework
202#
203PRODUCT_PACKAGES += \
204    e2fsck \
205    ip \
206    sleep \
207    tcpdump \
208    wificond \
209
210#
211# Packages for the OpenGL implementation
212#
213
214# ANGLE provides an OpenGL implementation built on top of Vulkan.
215PRODUCT_PACKAGES += \
216    libEGL_angle \
217    libGLESv1_CM_angle \
218    libGLESv2_angle
219
220# GL implementation for virgl
221PRODUCT_PACKAGES += \
222    libGLES_mesa \
223
224#
225# Packages for the Vulkan implementation
226#
227ifeq ($(TARGET_VULKAN_SUPPORT),true)
228PRODUCT_PACKAGES += \
229    vulkan.ranchu \
230    libvulkan_enc \
231    vulkan.pastel
232endif
233
234# GL/Vk implementation for gfxstream
235PRODUCT_PACKAGES += \
236    libandroidemu \
237    libOpenglCodecCommon \
238    libOpenglSystemCommon \
239    libGLESv1_CM_emulation \
240    lib_renderControl_enc \
241    libEGL_emulation \
242    libGLESv2_enc \
243    libGLESv2_emulation \
244    libGLESv1_enc \
245    libGoldfishProfiler \
246
247#
248# Packages for testing
249#
250PRODUCT_PACKAGES += \
251    aidl_lazy_test_server \
252    aidl_lazy_cb_test_server \
253    hidl_lazy_test_server \
254    hidl_lazy_cb_test_server
255
256# Runtime Resource Overlays
257ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
258PRODUCT_PACKAGES += \
259    cuttlefish_overlay_connectivity \
260    cuttlefish_overlay_frameworks_base_core \
261    cuttlefish_overlay_settings_provider
262
263endif
264
265# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to
266# pick up every density resources.
267
268#
269# Common manifest for all targets
270#
271DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
272
273#
274# General files
275#
276
277
278ifneq ($(LOCAL_SENSOR_FILE_OVERRIDES),true)
279ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
280    PRODUCT_COPY_FILES += \
281        frameworks/native/data/etc/android.hardware.sensor.ambient_temperature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.ambient_temperature.xml \
282        frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \
283        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
284        frameworks/native/data/etc/android.hardware.sensor.hinge_angle.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hinge_angle.xml \
285        frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
286        frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
287        frameworks/native/data/etc/android.hardware.sensor.relative_humidity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.relative_humidity.xml
288endif
289endif
290
291ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
292PRODUCT_COPY_FILES += \
293    device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \
294    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
295    frameworks/native/data/etc/android.hardware.camera.concurrent.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.concurrent.xml \
296    frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \
297    frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \
298    frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \
299    frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \
300    frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \
301    frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \
302    frameworks/native/data/etc/android.hardware.reboot_escrow.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.reboot_escrow.xml \
303    frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
304    frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
305    frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
306    frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
307    frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
308    frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
309    frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \
310    frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \
311    hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_back.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_back.json \
312    hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_front.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_front.json \
313    hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_depth.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_depth.json
314endif
315PRODUCT_COPY_FILES += \
316    frameworks/native/data/etc/android.hardware.consumerir.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.consumerir.xml \
317    device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \
318    device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \
319    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \
320    device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
321    device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
322    device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
323    device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
324    device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \
325    frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
326    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
327    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
328    frameworks/av/services/audiopolicy/config/a2dp_in_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_in_audio_policy_configuration_7_0.xml \
329    frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \
330    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
331    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
332    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
333    frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \
334    device/google/cuttlefish/shared/config/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json \
335
336ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
337PRODUCT_PACKAGES += com.google.cf.input.config
338else
339PRODUCT_COPY_FILES += \
340    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_0.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_0.idc \
341    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_1.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_1.idc \
342    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_2.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_2.idc \
343    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_3.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_3.idc
344endif
345
346PRODUCT_COPY_FILES += \
347    device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.f2fs \
348    device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.f2fs \
349    device/google/cuttlefish/shared/config/fstab.f2fs:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.f2fs \
350    device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.ext4 \
351    device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.ext4 \
352    device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.ext4
353
354ifeq ($(TARGET_VULKAN_SUPPORT),true)
355ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
356PRODUCT_COPY_FILES += \
357    frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
358    frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
359    frameworks/native/data/etc/android.software.vulkan.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
360    frameworks/native/data/etc/android.software.opengles.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.opengles.deqp.level.xml
361endif
362endif
363
364# Packages for HAL implementations
365
366#
367# Atrace HAL
368#
369PRODUCT_PACKAGES += \
370    android.hardware.atrace@1.0-service
371
372#
373# Weaver aidl HAL
374#
375PRODUCT_PACKAGES += \
376    android.hardware.weaver-service.example
377
378#
379# IR aidl HAL
380#
381PRODUCT_PACKAGES += \
382	android.hardware.ir-service.example
383
384#
385# OemLock aidl HAL
386#
387PRODUCT_PACKAGES += \
388    android.hardware.oemlock-service.example
389
390#
391# Authsecret HAL
392#
393PRODUCT_PACKAGES += \
394    android.hardware.authsecret@1.0-service
395
396#
397# Authsecret AIDL HAL
398#
399PRODUCT_PACKAGES += \
400    android.hardware.authsecret-service.example
401#
402# Hardware Composer HAL
403#
404# The device needs to avoid having both hwcomposer2.4 and hwcomposer3
405# services running at the same time so make the user manually enables
406# in order to run with --gpu_mode=drm.
407ifeq ($(TARGET_ENABLE_DRMHWCOMPOSER),true)
408DEVICE_MANIFEST_FILE += \
409    device/google/cuttlefish/shared/config/manifest_android.hardware.graphics.composer@2.4-service.xml
410PRODUCT_PACKAGES += \
411    android.hardware.graphics.composer@2.4-service \
412    hwcomposer.drm
413else
414PRODUCT_PACKAGES += \
415    android.hardware.graphics.composer3-service.ranchu
416endif
417
418#
419# Gralloc HAL
420#
421PRODUCT_PACKAGES += \
422    android.hardware.graphics.allocator-V1-service.minigbm \
423    android.hardware.graphics.mapper@4.0-impl.minigbm
424
425#
426# Bluetooth HAL and Compatibility Bluetooth library (for older revs).
427#
428ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
429ifeq ($(LOCAL_BLUETOOTH_PRODUCT_PACKAGE),)
430ifeq ($(TARGET_ENABLE_HOST_BLUETOOTH_EMULATION),true)
431ifeq ($(TARGET_USE_BTLINUX_HAL_IMPL),true)
432    LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.btlinux
433else
434    LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.remote
435endif
436else
437    LOCAL_BLUETOOTH_PRODUCT_PACKAGE := android.hardware.bluetooth@1.1-service.sim
438endif
439    DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest_android.hardware.bluetooth@1.1-service.xml
440endif
441
442PRODUCT_COPY_FILES +=\
443    frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
444    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml
445
446PRODUCT_PACKAGES += $(LOCAL_BLUETOOTH_PRODUCT_PACKAGE)
447
448PRODUCT_PACKAGES += android.hardware.bluetooth.audio@2.1-impl  bt_vhci_forwarder
449
450# Bluetooth initialization configuration is copied to the init folder here instead of being added
451# as an init_rc attribute of the bt_vhci_forward binary.  The bt_vhci_forward binary is used by
452# multiple targets with different initialization configurations.
453PRODUCT_COPY_FILES += \
454    device/google/cuttlefish/guest/commands/bt_vhci_forwarder/bt_vhci_forwarder.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/bt_vhci_forwarder.rc
455
456else
457PRODUCT_PACKAGES += com.google.cf.bt android.hardware.bluetooth.audio@2.1-impl
458endif
459
460#
461# Bluetooth Audio AIDL HAL
462#
463PRODUCT_PACKAGES += \
464    android.hardware.bluetooth.audio-impl \
465
466#
467# Audio HAL
468#
469ifndef LOCAL_AUDIO_PRODUCT_PACKAGE
470LOCAL_AUDIO_PRODUCT_PACKAGE := \
471    android.hardware.audio.service \
472    android.hardware.audio@7.1-impl.ranchu \
473    android.hardware.audio.effect@7.0-impl
474DEVICE_MANIFEST_FILE += \
475    device/google/cuttlefish/guest/hals/audio/effects/manifest.xml
476endif
477
478ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES
479LOCAL_AUDIO_PRODUCT_COPY_FILES := \
480    device/generic/goldfish/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
481    device/generic/goldfish/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \
482    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
483    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
484    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
485    frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
486endif
487
488PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE)
489PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES)
490DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS)
491
492#
493# BiometricsFace HAL (HIDL)
494#
495PRODUCT_PACKAGES += \
496    android.hardware.biometrics.face@1.0-service.example
497
498#
499# BiometricsFingerprint HAL (HIDL)
500#
501PRODUCT_PACKAGES += \
502    android.hardware.biometrics.fingerprint@2.2-service.example
503
504#
505# BiometricsFace HAL (AIDL)
506#
507PRODUCT_PACKAGES += \
508    android.hardware.biometrics.face-service.example
509
510#
511# BiometricsFingerprint HAL (AIDL)
512#
513PRODUCT_PACKAGES += \
514    android.hardware.biometrics.fingerprint-service.example
515
516#
517# Contexthub HAL
518#
519PRODUCT_PACKAGES += \
520    android.hardware.contexthub-service.example
521
522#
523# Drm HAL
524#
525PRODUCT_PACKAGES += \
526    android.hardware.drm@latest-service.clearkey \
527    android.hardware.drm@latest-service.widevine
528
529#
530# Confirmation UI HAL
531#
532ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),)
533    LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := android.hardware.confirmationui@1.0-service.cuttlefish
534endif
535PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE)
536
537#
538# Dumpstate HAL
539#
540ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),)
541    LOCAL_DUMPSTATE_PRODUCT_PACKAGE += android.hardware.dumpstate-service.example
542endif
543PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE)
544
545#
546# Camera
547#
548ifeq ($(TARGET_USE_VSOCK_CAMERA_HAL_IMPL),true)
549PRODUCT_PACKAGES += \
550    android.hardware.camera.provider@2.7-external-vsock-service \
551    android.hardware.camera.provider@2.7-impl-cuttlefish
552DEVICE_MANIFEST_FILE += \
553    device/google/cuttlefish/guest/hals/camera/manifest.xml
554else
555ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
556PRODUCT_PACKAGES += com.google.emulated.camera.provider.hal
557PRODUCT_PACKAGES += com.google.emulated.camera.provider.hal.fastscenecycle
558endif
559PRODUCT_PACKAGES += \
560    android.hardware.camera.provider@2.7-service-google \
561    libgooglecamerahwl_impl \
562    android.hardware.camera.provider@2.7-impl-google \
563
564endif
565#
566# Gatekeeper
567#
568ifeq ($(LOCAL_GATEKEEPER_PRODUCT_PACKAGE),)
569       LOCAL_GATEKEEPER_PRODUCT_PACKAGE := android.hardware.gatekeeper@1.0-service.remote
570endif
571PRODUCT_PACKAGES += \
572    $(LOCAL_GATEKEEPER_PRODUCT_PACKAGE)
573
574#
575# GPS
576#
577LOCAL_GNSS_PRODUCT_PACKAGE ?= \
578    android.hardware.gnss-service.example
579
580PRODUCT_PACKAGES += $(LOCAL_GNSS_PRODUCT_PACKAGE)
581
582# Health
583ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),)
584    LOCAL_HEALTH_PRODUCT_PACKAGE := \
585    android.hardware.health-service.cuttlefish \
586    android.hardware.health-service.cuttlefish_recovery \
587
588endif
589PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE)
590
591# Health Storage
592PRODUCT_PACKAGES += \
593    android.hardware.health.storage-service.cuttlefish
594
595# Identity Credential
596PRODUCT_PACKAGES += \
597    android.hardware.identity-service.remote
598
599PRODUCT_PACKAGES += \
600    android.hardware.input.processor-service.example
601
602# Netlink Interceptor HAL
603PRODUCT_PACKAGES += \
604    android.hardware.net.nlinterceptor-service.default
605
606#
607# Sensors
608#
609ifeq ($(LOCAL_SENSOR_PRODUCT_PACKAGE),)
610# TODO(b/210883464): Convert the sensors APEX to use the new AIDL impl.
611#ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
612#       LOCAL_SENSOR_PRODUCT_PACKAGE := com.android.hardware.sensors
613#else
614       LOCAL_SENSOR_PRODUCT_PACKAGE := android.hardware.sensors-service.example
615#endif
616endif
617PRODUCT_PACKAGES += \
618    $(LOCAL_SENSOR_PRODUCT_PACKAGE)
619#
620# Thermal (mock)
621#
622ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
623PRODUCT_PACKAGES += com.android.hardware.thermal.mock
624else
625PRODUCT_PACKAGES += android.hardware.thermal@2.0-service.mock
626endif
627
628#
629# Lights
630#
631PRODUCT_PACKAGES += \
632    android.hardware.lights-service.example \
633
634#
635# KeyMint HAL
636#
637ifeq ($(LOCAL_KEYMINT_PRODUCT_PACKAGE),)
638       LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.remote
639# Indicate that this KeyMint includes support for the ATTEST_KEY key purpose.
640PRODUCT_COPY_FILES += \
641    frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml
642endif
643 PRODUCT_PACKAGES += \
644    $(LOCAL_KEYMINT_PRODUCT_PACKAGE)
645
646# Keymint configuration
647ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
648PRODUCT_COPY_FILES += \
649    frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml
650endif
651
652#
653# Dice HAL
654#
655PRODUCT_PACKAGES += \
656    android.hardware.security.dice-service.non-secure-software
657
658#
659# Power and PowerStats HALs
660#
661ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
662PRODUCT_PACKAGES += com.android.hardware.power
663else
664PRODUCT_PACKAGES += \
665    android.hardware.power-service.example \
666    android.hardware.power.stats-service.example \
667
668endif
669
670#
671# NeuralNetworks HAL
672#
673PRODUCT_PACKAGES += \
674    android.hardware.neuralnetworks@1.3-service-sample-all \
675    android.hardware.neuralnetworks@1.3-service-sample-limited \
676    android.hardware.neuralnetworks-service-sample-all \
677    android.hardware.neuralnetworks-service-sample-limited \
678    android.hardware.neuralnetworks-shim-service-sample
679
680#
681# USB
682# TODO(b/227791019): Convert USB AIDL HAL to APEX
683# ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
684# PRODUCT_PACKAGES += \
685#    com.android.hardware.usb
686#else
687PRODUCT_PACKAGES += \
688    android.hardware.usb-service.example
689#endif
690
691# Vibrator HAL
692ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
693PRODUCT_PACKAGES += com.android.hardware.vibrator
694else
695PRODUCT_PACKAGES += \
696    android.hardware.vibrator-service.example
697endif
698
699# BootControl HAL
700PRODUCT_PACKAGES += \
701    android.hardware.boot@1.2-impl \
702    android.hardware.boot@1.2-impl.recovery \
703    android.hardware.boot@1.2-service
704
705# RebootEscrow HAL
706PRODUCT_PACKAGES += \
707    android.hardware.rebootescrow-service.default
708
709# Memtrack HAL
710PRODUCT_PACKAGES += \
711    android.hardware.memtrack-service.example
712
713# Fastboot HAL & fastbootd
714PRODUCT_PACKAGES += \
715    android.hardware.fastboot@1.1-impl-mock \
716    fastbootd
717
718# Recovery mode
719ifneq ($(TARGET_NO_RECOVERY),true)
720
721PRODUCT_COPY_FILES += \
722    device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \
723    device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \
724    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \
725
726PRODUCT_PACKAGES += \
727    update_engine_sideload
728
729endif
730
731ifdef TARGET_DEDICATED_RECOVERY
732PRODUCT_BUILD_RECOVERY_IMAGE := true
733PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk
734else
735PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery
736endif
737
738# wifi
739ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
740ifneq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true)
741PRODUCT_PACKAGES += com.google.cf.wifi
742# Demonstrate multi-installed vendor APEXes by installing another wifi HAL vendor APEX
743# which does not include the passpoint feature XML.
744#
745# The default is set in BoardConfig.mk using bootconfig.
746# This can be changed at CVD launch-time using
747#     --extra_bootconfig_args "androidboot.vendor.apex.com.android.wifi.hal:=X"
748# or post-launch, at runtime using
749#     setprop persist.vendor.apex.com.android.wifi.hal X && reboot
750# where X is the name of the APEX file to use.
751PRODUCT_PACKAGES += com.google.cf.wifi.no-passpoint
752
753$(call add_soong_config_namespace, wpa_supplicant)
754$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION))
755$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA)
756PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi
757else
758PRODUCT_SOONG_NAMESPACES += device/google/cuttlefish/apex/com.google.cf.wifi_hwsim
759PRODUCT_PACKAGES += com.google.cf.wifi_hwsim
760$(call add_soong_config_namespace, wpa_supplicant)
761$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION))
762$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA)
763PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio
764
765$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true)
766endif
767else
768
769PRODUCT_PACKAGES += \
770    rename_netiface \
771    wpa_supplicant
772PRODUCT_COPY_FILES += \
773    device/google/cuttlefish/shared/config/wpa_supplicant.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/wpa_supplicant.rc
774
775# VirtWifi interface configuration
776ifeq ($(DEVICE_VIRTWIFI_PORT),)
777    DEVICE_VIRTWIFI_PORT := eth2
778endif
779PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT}
780
781# WLAN driver configuration files
782ifndef LOCAL_WPA_SUPPLICANT_OVERLAY
783LOCAL_WPA_SUPPLICANT_OVERLAY := $(LOCAL_PATH)/config/wpa_supplicant_overlay.conf
784endif
785ifndef LOCAL_P2P_SUPPLICANT
786LOCAL_P2P_SUPPLICANT := $(LOCAL_PATH)/config/p2p_supplicant.conf
787endif
788PRODUCT_COPY_FILES += \
789    external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_template.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \
790    $(LOCAL_WPA_SUPPLICANT_OVERLAY):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
791    $(LOCAL_P2P_SUPPLICANT):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf
792
793ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true)
794PRODUCT_PACKAGES += \
795    mac80211_create_radios \
796    hostapd \
797    android.hardware.wifi@1.0-service \
798    init.wifi.sh
799
800PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio
801
802$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true)
803
804else
805PRODUCT_PACKAGES += setup_wifi
806PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi
807endif
808
809endif
810
811# UWB HAL
812PRODUCT_PACKAGES += \
813    android.hardware.uwb-service
814
815ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true)
816# Wifi Runtime Resource Overlay
817PRODUCT_PACKAGES += \
818    CuttlefishTetheringOverlay \
819    CuttlefishWifiOverlay
820endif
821
822# Host packages to install
823PRODUCT_HOST_PACKAGES += socket_vsock_proxy
824
825PRODUCT_EXTRA_VNDK_VERSIONS := 28 29 30 31
826
827PRODUCT_SOONG_NAMESPACES += external/mesa3d
828
829#for Confirmation UI
830PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal
831
832# Need this so that the application's loop on reading input can be synchronized
833# with HW VSYNC
834PRODUCT_VENDOR_PROPERTIES += \
835    ro.surface_flinger.running_without_sync_framework=true
836
837# Enable GPU-intensive background blur support on Cuttlefish when requested by apps
838PRODUCT_VENDOR_PROPERTIES += \
839    ro.surface_flinger.supports_background_blur=1
840
841# Disable GPU-intensive background blur for widget picker
842PRODUCT_SYSTEM_PROPERTIES += \
843    ro.launcher.depth.widget=0
844
845# Vendor Dlkm Locader
846PRODUCT_PACKAGES += \
847   dlkm_loader
848
849# NFC AIDL HAL
850PRODUCT_PACKAGES += \
851    android.hardware.nfc-service.cuttlefish
852
853PRODUCT_COPY_FILES += \
854    device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids
855