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 # for audio, wifi and sensors
39
40PRODUCT_USE_DYNAMIC_PARTITIONS := true
41DISABLE_RILD_OEM_HOOK := true
42
43# TODO(b/294888357) Remove this condition when OpenWRT is supported for RISC-V.
44ifndef PRODUCT_ENFORCE_MAC80211_HWSIM
45PRODUCT_ENFORCE_MAC80211_HWSIM := true
46endif
47
48PRODUCT_SET_DEBUGFS_RESTRICTIONS := true
49
50PRODUCT_FS_COMPRESSION := 1
51TARGET_RO_FILE_SYSTEM_TYPE ?= erofs
52TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs
53TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 8589934592
54
55TARGET_VULKAN_SUPPORT ?= true
56
57# Enable Virtual A/B
58$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/vabc_features.mk)
59PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := lz4
60PRODUCT_VIRTUAL_AB_COW_VERSION := 3
61PRODUCT_VIRTUAL_AB_COMPRESSION_FACTOR := 65536
62
63PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.threads=true
64PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true
65
66# Enable Scoped Storage related
67$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
68
69# Properties that are not vendor-specific. These will go in the product
70# partition, instead of the vendor partition, and do not need vendor
71# sepolicy
72PRODUCT_PRODUCT_PROPERTIES += \
73    remote_provisioning.hostname=staging-remoteprovisioning.sandbox.googleapis.com \
74    persist.adb.tcp.port=5555 \
75    ro.com.google.locationfeatures=1 \
76    persist.sys.fuse.passthrough.enable=true \
77    remote_provisioning.tee.rkp_only=1
78
79# Until we support adb keys on user builds, and fix logcat over serial,
80# spawn adbd by default without authorization for "adb logcat"
81ifeq ($(TARGET_BUILD_VARIANT),user)
82PRODUCT_PRODUCT_PROPERTIES += \
83    ro.adb.secure=0 \
84    ro.debuggable=1
85
86PRODUCT_PACKAGES += \
87    logpersist.start
88
89PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \
90    $(TARGET_COPY_OUT_SYSTEM)/bin/logcatd \
91    $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.cat \
92    $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.start \
93    $(TARGET_COPY_OUT_SYSTEM)/bin/logpersist.stop \
94    $(TARGET_COPY_OUT_SYSTEM)/etc/init/logcatd.rc
95endif
96
97# Use AIDL for media.c2 HAL
98PRODUCT_VENDOR_PROPERTIES += media.c2.hal.selection=aidl
99
100# Explanation of specific properties:
101#   ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases
102PRODUCT_VENDOR_PROPERTIES += \
103    tombstoned.max_tombstone_count=100 \
104    ro.carrier=unknown \
105    ro.com.android.dataroaming?=false \
106    ro.hardware.virtual_device=1 \
107    ro.logd.size=1M \
108    wifi.interface=wlan0 \
109    wifi.direct.interface=p2p-dev-wlan0 \
110    persist.sys.zram_enabled=1 \
111    ro.hardware.keystore_desede=true \
112    ro.incremental.enable=1 \
113    debug.c2.use_dmabufheaps=1
114
115# Below is a list of properties we probably should get rid of.
116PRODUCT_VENDOR_PROPERTIES += \
117    wlan.driver.status=ok
118
119PRODUCT_VENDOR_PROPERTIES += \
120    debug.stagefright.c2inputsurface=-1
121
122# Enforce privapp permissions control.
123PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce
124
125# Copy preopted files from system_b on first boot
126PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1
127
128AB_OTA_POSTINSTALL_CONFIG += \
129    RUN_POSTINSTALL_system=true \
130    POSTINSTALL_PATH_system=system/bin/otapreopt_script \
131    FILESYSTEM_TYPE_system=erofs \
132    POSTINSTALL_OPTIONAL_system=true
133
134AB_OTA_POSTINSTALL_CONFIG += \
135    RUN_POSTINSTALL_vendor=true \
136    POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
137    FILESYSTEM_TYPE_vendor=erofs \
138    POSTINSTALL_OPTIONAL_vendor=true
139
140# Userdata Checkpointing OTA GC
141PRODUCT_PACKAGES += \
142    checkpoint_gc
143
144# DRM service opt-in
145PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true
146
147# Call deleteAllKeys if vold detects a factory reset
148PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true
149
150#
151# Packages for various GCE-specific utilities
152#
153PRODUCT_PACKAGES += \
154    CuttlefishService \
155    socket_vsock_proxy \
156    tombstone_transmit \
157    tombstone_producer \
158    suspend_blocker \
159    metrics_helper \
160    snapshot_hook_post_resume \
161    snapshot_hook_pre_suspend
162
163$(call soong_config_append,cvd,launch_configs,cvd_config_auto.json cvd_config_auto_portrait.json cvd_config_auto_md.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)
164$(call soong_config_append,cvd,grub_config,grub.cfg)
165
166#
167# Packages for AOSP-available stuff we use from the framework
168#
169PRODUCT_PACKAGES += \
170    e2fsck \
171    ip \
172    sleep \
173    tcpdump \
174    wificond \
175
176#
177# Package for AOSP QNS
178#
179PRODUCT_PACKAGES += \
180    QualifiedNetworksService
181
182#
183# Package for AOSP GBA
184#
185PRODUCT_PACKAGES += \
186    GbaService
187
188#
189# Packages for testing
190#
191PRODUCT_PACKAGES += \
192    aidl_lazy_test_server \
193    aidl_lazy_cb_test_server \
194
195# Runtime Resource Overlays
196PRODUCT_PACKAGES += \
197    cuttlefish_overlay_connectivity \
198    cuttlefish_overlay_frameworks_base_core \
199    cuttlefish_overlay_nfc \
200    cuttlefish_overlay_settings_provider \
201    cuttlefish_overlay_uwb \
202
203#
204# Satellite vendor service for CF
205#
206PRODUCT_PACKAGES += CFSatelliteService
207
208# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to
209# pick up every density resources.
210
211#
212# Common manifest for all targets
213#
214PRODUCT_SHIPPING_API_LEVEL := 35
215LOCAL_DEVICE_FCM_MANIFEST_FILE ?= device/google/cuttlefish/shared/config/manifest.xml
216DEVICE_MANIFEST_FILE += $(LOCAL_DEVICE_FCM_MANIFEST_FILE)
217
218PRODUCT_CHECK_PREBUILT_MAX_PAGE_SIZE := true
219
220#
221# General files
222#
223
224PRODUCT_COPY_FILES += \
225    device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \
226    device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \
227    device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
228    device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
229    device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
230    device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
231    device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml \
232    device/google/cuttlefish/shared/config/seriallogging.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/seriallogging.rc \
233    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \
234    device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \
235    device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \
236    frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
237    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
238    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
239    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
240    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
241    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
242    frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \
243    frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
244    frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \
245    frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
246    frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
247    frameworks/native/data/etc/android.hardware.uwb.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.uwb.xml \
248    frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
249    frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
250    frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
251    frameworks/native/data/etc/android.software.credentials.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.credentials.xml \
252    frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
253    frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \
254
255#
256# Device input config
257# Install .kcm/.kl/.idc files via input.config apex
258#
259PRODUCT_PACKAGES += com.google.cf.input.config
260
261PRODUCT_PACKAGES += \
262    fstab.cf.f2fs.hctr2 \
263    fstab.cf.f2fs.hctr2.vendor_ramdisk \
264    fstab.cf.f2fs.cts \
265    fstab.cf.f2fs.cts.vendor_ramdisk \
266    fstab.cf.ext4.hctr2 \
267    fstab.cf.ext4.hctr2.vendor_ramdisk \
268    fstab.cf.ext4.cts \
269    fstab.cf.ext4.cts.vendor_ramdisk \
270
271# Packages for HAL implementations
272
273# TODO(b/218588089) remove this once cuttlefish can drop HIDL.
274# This adds hwservicemanager and the allocator service to the device.
275PRODUCT_PACKAGES += \
276    hwservicemanager \
277    android.hidl.allocator@1.0-service
278
279#
280# Weaver aidl HAL
281#
282# TODO(b/262418065) Add a real weaver implementation
283
284
285#
286# Authsecret AIDL HAL
287#
288PRODUCT_PACKAGES += \
289    com.android.hardware.authsecret
290
291ifndef LOCAL_AUDIO_PRODUCT_PACKAGE
292#
293# Still use HIDL Audio HAL on 'next'
294#
295LOCAL_AUDIO_PRODUCT_PACKAGE += \
296    android.hardware.audio.parameter_parser.example_service \
297    com.android.hardware.audio
298PRODUCT_SYSTEM_EXT_PROPERTIES += \
299    ro.audio.ihaladaptervendorextension_enabled=true
300endif
301
302ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES
303LOCAL_AUDIO_PRODUCT_COPY_FILES := \
304    device/generic/goldfish/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
305    device/generic/goldfish/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \
306    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
307    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
308    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml
309LOCAL_AUDIO_PRODUCT_COPY_FILES += \
310    hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml
311endif
312
313PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE)
314PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES)
315DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS)
316
317#
318# Contexthub HAL
319#
320LOCAL_CONTEXTHUB_PRODUCT_PACKAGE ?= \
321    com.android.hardware.contexthub
322PRODUCT_PACKAGES += $(LOCAL_CONTEXTHUB_PRODUCT_PACKAGE)
323
324#
325# Drm HAL
326#
327ifeq ($(TARGET_USE_LAZY_CLEARKEY),true)
328PRODUCT_PACKAGES += \
329    com.android.hardware.drm.clearkey.lazy
330else
331PRODUCT_PACKAGES += \
332    android.hardware.drm@latest-service.clearkey
333endif
334
335LOCAL_ENABLE_WIDEVINE ?= true
336ifeq ($(LOCAL_ENABLE_WIDEVINE),true)
337-include vendor/widevine/libwvdrmengine/apex/device/device.mk
338endif
339
340#
341# Confirmation UI HAL
342#
343ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),)
344    LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := com.google.cf.confirmationui
345endif
346PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE)
347
348#
349# Dumpstate HAL
350#
351ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),)
352    LOCAL_DUMPSTATE_PRODUCT_PACKAGE += com.android.hardware.dumpstate
353endif
354PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE)
355
356#
357# Gatekeeper
358#
359PRODUCT_PACKAGES += \
360  com.android.hardware.gatekeeper.cf_remote \
361  com.android.hardware.gatekeeper.nonsecure \
362
363#
364# Oemlock
365#
366LOCAL_ENABLE_OEMLOCK ?= true
367ifeq ($(LOCAL_ENABLE_OEMLOCK),true)
368ifeq ($(LOCAL_OEMLOCK_PRODUCT_PACKAGE),)
369    LOCAL_OEMLOCK_PRODUCT_PACKAGE := com.google.cf.oemlock
370endif
371PRODUCT_PACKAGES += \
372    $(LOCAL_OEMLOCK_PRODUCT_PACKAGE)
373
374PRODUCT_VENDOR_PROPERTIES += ro.oem_unlock_supported=1
375endif
376
377# Health
378ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),)
379    LOCAL_HEALTH_PRODUCT_PACKAGE := \
380    com.google.cf.health \
381    android.hardware.health-service.cuttlefish_recovery \
382
383endif
384PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE)
385
386# Health Storage
387PRODUCT_PACKAGES += \
388    com.google.cf.health.storage
389
390PRODUCT_PACKAGES += \
391    com.android.hardware.input.processor
392
393# Netlink Interceptor HAL
394PRODUCT_PACKAGES += \
395    com.android.hardware.net.nlinterceptor
396
397#
398# Lights
399#
400LOCAL_ENABLE_LIGHT ?= true
401ifeq ($(LOCAL_ENABLE_LIGHT),true)
402PRODUCT_PACKAGES += \
403    com.google.cf.light \
404
405endif
406
407#
408# KeyMint HAL
409#
410PRODUCT_PACKAGES += \
411	com.android.hardware.keymint.rust_cf_remote \
412	com.android.hardware.keymint.rust_nonsecure \
413
414# Indicate that KeyMint includes support for the ATTEST_KEY key purpose.
415PRODUCT_COPY_FILES += \
416    frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml
417# Indicate that KeyMint includes (emulated) support for device ID attestation.
418PRODUCT_COPY_FILES += \
419    frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml
420
421#
422# Non-secure implementation of AuthGraph HAL for compliance.
423#
424PRODUCT_PACKAGES += \
425    com.android.hardware.security.authgraph
426
427#
428# Non-secure implementation of Secretkeeper HAL for compliance.
429#
430PRODUCT_PACKAGES += \
431    com.android.hardware.security.secretkeeper
432
433#
434# Power and PowerStats HALs
435#
436PRODUCT_PACKAGES += com.android.hardware.power
437
438#
439# Tetheroffload HAL
440#
441PRODUCT_PACKAGES += \
442    com.android.hardware.tetheroffload
443
444#
445# Thermal HAL
446#
447LOCAL_THERMAL_HAL_PRODUCT_PACKAGE ?= com.android.hardware.thermal
448PRODUCT_PACKAGES += $(LOCAL_THERMAL_HAL_PRODUCT_PACKAGE)
449
450#
451# NeuralNetworks HAL
452#
453PRODUCT_PACKAGES += \
454    com.android.hardware.neuralnetworks
455
456# USB
457PRODUCT_PACKAGES += \
458    com.android.hardware.usb
459
460# BootControl HAL
461PRODUCT_PACKAGES += \
462    com.android.hardware.boot \
463    android.hardware.boot-service.default_recovery
464
465
466# Memtrack HAL
467PRODUCT_PACKAGES += \
468    com.android.hardware.memtrack
469
470# Fastboot HAL & fastbootd
471PRODUCT_PACKAGES += \
472    android.hardware.fastboot@1.1-impl-mock \
473    fastbootd
474
475# Recovery mode
476ifneq ($(TARGET_NO_RECOVERY),true)
477
478PRODUCT_COPY_FILES += \
479    device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \
480    device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \
481    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \
482
483PRODUCT_PACKAGES += \
484    update_engine_sideload
485
486endif
487
488ifdef TARGET_DEDICATED_RECOVERY
489PRODUCT_BUILD_RECOVERY_IMAGE := true
490PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk
491else
492PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery
493endif
494
495# wifi
496# Add com.android.hardware.wifi for android.hardware.wifi-service
497PRODUCT_PACKAGES += com.android.hardware.wifi
498# Add com.google.cf.wifi and com.google.cf.wpa_supplicant for hostapd and wpa_supplicant
499PRODUCT_PACKAGES += com.google.cf.wifi
500PRODUCT_PACKAGES += com.google.cf.wpa_supplicant
501$(call add_soong_config_namespace, wpa_supplicant)
502$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION))
503$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA)
504
505# VirtWifi interface configuration
506ifeq ($(DEVICE_VIRTWIFI_PORT),)
507    DEVICE_VIRTWIFI_PORT := eth2
508endif
509PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT}
510
511# Wifi Runtime Resource Overlay
512PRODUCT_PACKAGES += \
513    CuttlefishTetheringOverlay \
514    CuttlefishWifiOverlay
515
516ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true)
517PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac80211_hwsim_virtio
518$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true)
519else
520PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi
521endif
522
523# UWB HAL
524PRODUCT_PACKAGES += com.android.hardware.uwb
525PRODUCT_VENDOR_PROPERTIES += ro.vendor.uwb.dev=/dev/hvc9
526
527# Host packages to install
528PRODUCT_HOST_PACKAGES += socket_vsock_proxy
529
530#for Confirmation UI
531PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal
532
533# Need this so that the application's loop on reading input can be synchronized
534# with HW VSYNC
535PRODUCT_VENDOR_PROPERTIES += \
536    ro.surface_flinger.running_without_sync_framework=true
537
538# Enable GPU-intensive background blur support on Cuttlefish when requested by apps
539PRODUCT_VENDOR_PROPERTIES += \
540    ro.surface_flinger.supports_background_blur=1
541
542# Set Game Default Frame Rate
543# See b/286084594
544PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
545    ro.surface_flinger.game_default_frame_rate_override=60
546
547# Disable GPU-intensive background blur for widget picker
548PRODUCT_SYSTEM_PROPERTIES += \
549    ro.launcher.depth.widget=0
550
551# Start fingerprint virtual HAL process
552PRODUCT_VENDOR_PROPERTIES += ro.vendor.fingerprint_virtual_hal_start=true
553
554# Vendor Dlkm Locader
555PRODUCT_PACKAGES += \
556   dlkm_loader
557
558# CAS AIDL HAL
559PRODUCT_PACKAGES += \
560    com.android.hardware.cas
561
562PRODUCT_COPY_FILES += \
563    device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids
564
565# Thread Network AIDL HAL and Demo App
566PRODUCT_PACKAGES += \
567    com.android.hardware.threadnetwork \
568    ThreadNetworkDemoApp
569
570PRODUCT_CHECK_VENDOR_SEAPP_VIOLATIONS := true
571
572PRODUCT_CHECK_DEV_TYPE_VIOLATIONS := true
573
574TARGET_BOARD_FASTBOOT_INFO_FILE = device/google/cuttlefish/shared/fastboot-info.txt
575