• 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 # for audio and wifi
39
40PRODUCT_SHIPPING_API_LEVEL := 34
41PRODUCT_USE_DYNAMIC_PARTITIONS := true
42DISABLE_RILD_OEM_HOOK := true
43
44# TODO(b/205788876) remove this condition when openwrt has an image for arm.
45ifndef PRODUCT_ENFORCE_MAC80211_HWSIM
46PRODUCT_ENFORCE_MAC80211_HWSIM := true
47endif
48
49PRODUCT_SET_DEBUGFS_RESTRICTIONS := true
50
51PRODUCT_FS_COMPRESSION := 1
52TARGET_RO_FILE_SYSTEM_TYPE ?= erofs
53TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs
54TARGET_USERDATAIMAGE_PARTITION_SIZE ?= 6442450944
55
56TARGET_VULKAN_SUPPORT ?= true
57
58# Enable Virtual A/B
59$(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota/android_t_baseline.mk)
60PRODUCT_VIRTUAL_AB_COMPRESSION_METHOD := gz
61
62PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.compression.threads=true
63PRODUCT_VENDOR_PROPERTIES += ro.virtual_ab.batch_writes=true
64
65# Enable Scoped Storage related
66$(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
67
68# Properties that are not vendor-specific. These will go in the product
69# partition, instead of the vendor partition, and do not need vendor
70# sepolicy
71PRODUCT_PRODUCT_PROPERTIES += \
72    remote_provisioning.enable_rkpd=true \
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
85endif
86
87# Explanation of specific properties:
88#   ro.hardware.keystore_desede=true needed for CtsKeystoreTestCases
89PRODUCT_VENDOR_PROPERTIES += \
90    tombstoned.max_tombstone_count=500 \
91    vendor.bt.rootcanal_test_console=off \
92    ro.carrier=unknown \
93    ro.com.android.dataroaming?=false \
94    ro.hardware.virtual_device=1 \
95    ro.logd.size=1M \
96    wifi.interface=wlan0 \
97    wifi.direct.interface=p2p-dev-wlan0 \
98    persist.sys.zram_enabled=1 \
99    ro.hardware.keystore_desede=true \
100    ro.rebootescrow.device=/dev/block/pmem0 \
101    ro.incremental.enable=1 \
102    debug.c2.use_dmabufheaps=1
103
104LOCAL_BT_PROPERTIES ?= \
105 vendor.ser.bt-uart?=/dev/hvc5 \
106
107PRODUCT_VENDOR_PROPERTIES += \
108	 ${LOCAL_BT_PROPERTIES} \
109
110# Below is a list of properties we probably should get rid of.
111PRODUCT_VENDOR_PROPERTIES += \
112    wlan.driver.status=ok
113
114PRODUCT_VENDOR_PROPERTIES += \
115    debug.stagefright.c2inputsurface=-1
116
117# Enforce privapp permissions control.
118PRODUCT_VENDOR_PROPERTIES += ro.control_privapp_permissions?=enforce
119
120# Copy preopted files from system_b on first boot
121PRODUCT_VENDOR_PROPERTIES += ro.cp_system_other_odex=1
122
123AB_OTA_POSTINSTALL_CONFIG += \
124    RUN_POSTINSTALL_system=true \
125    POSTINSTALL_PATH_system=system/bin/otapreopt_script \
126    FILESYSTEM_TYPE_system=erofs \
127    POSTINSTALL_OPTIONAL_system=true
128
129AB_OTA_POSTINSTALL_CONFIG += \
130    RUN_POSTINSTALL_vendor=true \
131    POSTINSTALL_PATH_vendor=bin/checkpoint_gc \
132    FILESYSTEM_TYPE_vendor=erofs \
133    POSTINSTALL_OPTIONAL_vendor=true
134
135# Userdata Checkpointing OTA GC
136PRODUCT_PACKAGES += \
137    checkpoint_gc
138
139# DRM service opt-in
140PRODUCT_VENDOR_PROPERTIES += drm.service.enabled=true
141
142# Call deleteAllKeys if vold detects a factory reset
143PRODUCT_VENDOR_PROPERTIES += ro.crypto.metadata_init_delete_all_keys.enabled=true
144
145#
146# Packages for various GCE-specific utilities
147#
148PRODUCT_PACKAGES += \
149    CuttlefishService \
150    cuttlefish_sensor_injection \
151    socket_vsock_proxy \
152    tombstone_transmit \
153    tombstone_producer \
154    suspend_blocker \
155    vsoc_input_service \
156    metrics_helper \
157
158$(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)
159$(call soong_config_append,cvd,grub_config,grub.cfg)
160
161#
162# Packages for AOSP-available stuff we use from the framework
163#
164PRODUCT_PACKAGES += \
165    e2fsck \
166    ip \
167    sleep \
168    tcpdump \
169    wificond \
170
171#
172# Package for AOSP QNS
173#
174PRODUCT_PACKAGES += \
175    QualifiedNetworksService
176
177#
178# Package for AOSP GBA
179#
180PRODUCT_PACKAGES += \
181    GbaService
182
183#
184# Packages for testing
185#
186PRODUCT_PACKAGES += \
187    aidl_lazy_test_server \
188    aidl_lazy_cb_test_server \
189    hidl_lazy_test_server \
190    hidl_lazy_cb_test_server
191
192# Runtime Resource Overlays
193ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
194PRODUCT_PACKAGES += \
195    cuttlefish_overlay_connectivity \
196    cuttlefish_overlay_frameworks_base_core \
197    cuttlefish_overlay_settings_provider
198
199endif
200
201#
202# Satellite vendor service for CF
203#
204PRODUCT_PACKAGES += CFSatelliteService
205
206# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to
207# pick up every density resources.
208
209#
210# Common manifest for all targets
211#
212LOCAL_DEVICE_FCM_MANIFEST_FILE ?= device/google/cuttlefish/shared/config/manifest.xml
213DEVICE_MANIFEST_FILE += $(LOCAL_DEVICE_FCM_MANIFEST_FILE)
214
215#
216# General files
217#
218
219
220ifneq ($(LOCAL_SENSOR_FILE_OVERRIDES),true)
221ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
222    PRODUCT_COPY_FILES += \
223        frameworks/native/data/etc/android.hardware.sensor.ambient_temperature.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.ambient_temperature.xml \
224        frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \
225        frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \
226        frameworks/native/data/etc/android.hardware.sensor.hinge_angle.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.hinge_angle.xml \
227        frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \
228        frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \
229        frameworks/native/data/etc/android.hardware.sensor.relative_humidity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.relative_humidity.xml
230endif
231endif
232
233ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
234PRODUCT_COPY_FILES += \
235    device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \
236    frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \
237    frameworks/native/data/etc/android.hardware.ethernet.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.ethernet.xml \
238    frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \
239    frameworks/native/data/etc/android.hardware.reboot_escrow.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.reboot_escrow.xml \
240    frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \
241    frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \
242    frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
243    frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \
244    frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \
245    frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
246    frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \
247    frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml
248
249endif
250PRODUCT_COPY_FILES += \
251    frameworks/native/data/etc/android.hardware.consumerir.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.consumerir.xml \
252    device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.cutf_cvm.rc \
253    device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \
254    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/etc/ueventd.rc \
255    device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \
256    device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \
257    device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \
258    device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \
259    device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \
260    frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
261    hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml \
262    frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \
263    frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \
264    frameworks/av/services/audiopolicy/config/bluetooth_audio_policy_configuration_7_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_audio_policy_configuration_7_0.xml \
265    frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
266    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
267    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
268    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
269    frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \
270    device/google/cuttlefish/shared/config/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json \
271    frameworks/native/data/etc/android.software.credentials.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.credentials.xml \
272
273ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
274PRODUCT_PACKAGES += com.google.cf.input.config
275else
276PRODUCT_COPY_FILES += \
277    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_0.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_0.idc \
278    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_1.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_1.idc \
279    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_2.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_2.idc \
280    device/google/cuttlefish/shared/config/input/Crosvm_Virtio_Multitouch_Touchscreen_3.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/Crosvm_Virtio_Multitouch_Touchscreen_3.idc
281endif
282
283PRODUCT_PACKAGES += \
284    fstab.cf.f2fs.hctr2 \
285    fstab.cf.f2fs.hctr2.vendor_ramdisk \
286    fstab.cf.f2fs.cts \
287    fstab.cf.f2fs.cts.vendor_ramdisk \
288    fstab.cf.ext4.hctr2 \
289    fstab.cf.ext4.hctr2.vendor_ramdisk \
290    fstab.cf.ext4.cts \
291    fstab.cf.ext4.cts.vendor_ramdisk \
292
293# Packages for HAL implementations
294
295#
296# Weaver aidl HAL
297#
298# TODO(b/262418065) Add a real weaver implementation
299
300#
301# IR aidl HAL
302#
303PRODUCT_PACKAGES += \
304	android.hardware.ir-service.example \
305	consumerir.default
306
307#
308# Authsecret AIDL HAL
309#
310PRODUCT_PACKAGES += \
311    android.hardware.authsecret-service.example
312
313#
314# Bluetooth HAL and Compatibility Bluetooth library (for older revs).
315#
316ifneq ($(LOCAL_PREFER_VENDOR_APEX),true)
317PRODUCT_COPY_FILES +=\
318    frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \
319    frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml
320
321PRODUCT_PACKAGES += \
322    android.hardware.bluetooth-service.default \
323    bt_vhci_forwarder
324
325# Bluetooth initialization configuration is copied to the init folder here instead of being added
326# as an init_rc attribute of the bt_vhci_forward binary.  The bt_vhci_forward binary is used by
327# multiple targets with different initialization configurations.
328PRODUCT_COPY_FILES += \
329    device/google/cuttlefish/guest/commands/bt_vhci_forwarder/bt_vhci_forwarder.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/bt_vhci_forwarder.rc
330
331else
332PRODUCT_PACKAGES += com.google.cf.bt
333endif
334
335#
336# Bluetooth Audio AIDL HAL
337#
338PRODUCT_PACKAGES += \
339    android.hardware.bluetooth.audio-impl \
340
341#
342# Audio HAL
343# Note: aidl services are loaded, however they are not fully functional yet,
344#       and are not used by the framework, only by VTS tests.
345#
346ifndef LOCAL_AUDIO_PRODUCT_PACKAGE
347LOCAL_AUDIO_PRODUCT_PACKAGE := \
348    android.hardware.audio.service \
349    android.hardware.audio@7.1-impl.ranchu \
350    android.hardware.audio.effect@7.0-impl \
351    android.hardware.audio.service-aidl.example \
352    android.hardware.audio.effect.service-aidl.example \
353    libaecsw \
354    libagc1sw \
355    libagc2sw \
356    libbassboostsw \
357    libbundleaidl \
358    libdownmixaidl \
359    libdynamicsprocessingaidl \
360    libenvreverbsw \
361    libequalizersw \
362    libextensioneffect \
363    libhapticgeneratoraidl \
364    libloudnessenhanceraidl \
365    libnssw \
366    libpreprocessingaidl \
367    libpresetreverbsw \
368    libreverbaidl \
369    libtinyxml2 \
370    libvirtualizersw \
371    libvisualizeraidl \
372    libvolumesw
373DEVICE_MANIFEST_FILE += \
374    device/google/cuttlefish/guest/hals/audio/effects/manifest.xml
375endif
376
377ifndef LOCAL_AUDIO_PRODUCT_COPY_FILES
378LOCAL_AUDIO_PRODUCT_COPY_FILES := \
379    device/generic/goldfish/audio/policy/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
380    device/generic/goldfish/audio/policy/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \
381    frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
382    frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
383    frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
384    frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
385    hardware/interfaces/audio/aidl/default/audio_effects_config.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects_config.xml
386endif
387
388PRODUCT_PACKAGES += $(LOCAL_AUDIO_PRODUCT_PACKAGE)
389PRODUCT_COPY_FILES += $(LOCAL_AUDIO_PRODUCT_COPY_FILES)
390DEVICE_PACKAGE_OVERLAYS += $(LOCAL_AUDIO_DEVICE_PACKAGE_OVERLAYS)
391
392#
393# BiometricsFace HAL (AIDL)
394#
395PRODUCT_PACKAGES += \
396    android.hardware.biometrics.face-service.example
397
398#
399# BiometricsFingerprint HAL (AIDL)
400#
401PRODUCT_PACKAGES += \
402    android.hardware.biometrics.fingerprint-service.example
403
404#
405# Contexthub HAL
406#
407PRODUCT_PACKAGES += \
408    android.hardware.contexthub-service.example
409
410#
411# Drm HAL
412#
413PRODUCT_PACKAGES += \
414    android.hardware.drm@latest-service.clearkey
415
416-include vendor/widevine/libwvdrmengine/apex/device/device.mk
417
418#
419# Confirmation UI HAL
420#
421ifeq ($(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE),)
422    LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE := android.hardware.confirmationui-service.cuttlefish
423endif
424PRODUCT_PACKAGES += $(LOCAL_CONFIRMATIONUI_PRODUCT_PACKAGE)
425
426#
427# Dumpstate HAL
428#
429ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),)
430    LOCAL_DUMPSTATE_PRODUCT_PACKAGE += android.hardware.dumpstate-service.example
431endif
432PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE)
433
434#
435# Gatekeeper
436#
437ifeq ($(LOCAL_GATEKEEPER_PRODUCT_PACKAGE),)
438    LOCAL_GATEKEEPER_PRODUCT_PACKAGE := android.hardware.gatekeeper-service.remote
439endif
440PRODUCT_PACKAGES += \
441    $(LOCAL_GATEKEEPER_PRODUCT_PACKAGE)
442
443#
444# Oemlock
445#
446ifeq ($(LOCAL_OEMLOCK_PRODUCT_PACKAGE),)
447    LOCAL_OEMLOCK_PRODUCT_PACKAGE := android.hardware.oemlock-service.remote
448endif
449PRODUCT_PACKAGES += \
450    $(LOCAL_OEMLOCK_PRODUCT_PACKAGE)
451
452PRODUCT_VENDOR_PROPERTIES += ro.oem_unlock_supported=1
453
454#
455# GPS
456#
457LOCAL_GNSS_PRODUCT_PACKAGE ?= \
458    android.hardware.gnss-service.example
459
460PRODUCT_PACKAGES += $(LOCAL_GNSS_PRODUCT_PACKAGE)
461
462# Health
463ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),)
464    LOCAL_HEALTH_PRODUCT_PACKAGE := \
465    android.hardware.health-service.cuttlefish \
466    android.hardware.health-service.cuttlefish_recovery \
467
468endif
469PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE)
470
471# Health Storage
472PRODUCT_PACKAGES += \
473    android.hardware.health.storage-service.cuttlefish
474
475# Identity Credential
476PRODUCT_PACKAGES += \
477    android.hardware.identity-service.remote
478
479PRODUCT_PACKAGES += \
480    android.hardware.input.processor-service.example
481
482# Netlink Interceptor HAL
483PRODUCT_PACKAGES += \
484    android.hardware.net.nlinterceptor-service.default
485
486#
487# Sensors
488#
489ifeq ($(LOCAL_SENSOR_PRODUCT_PACKAGE),)
490ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
491       LOCAL_SENSOR_PRODUCT_PACKAGE := com.android.hardware.sensors
492else
493       LOCAL_SENSOR_PRODUCT_PACKAGE := android.hardware.sensors-service.example
494endif
495endif
496PRODUCT_PACKAGES += \
497    $(LOCAL_SENSOR_PRODUCT_PACKAGE)
498
499#
500# Lights
501#
502PRODUCT_PACKAGES += \
503    android.hardware.lights-service.example \
504
505#
506# KeyMint HAL
507#
508ifeq ($(LOCAL_KEYMINT_PRODUCT_PACKAGE),)
509    LOCAL_KEYMINT_PRODUCT_PACKAGE := android.hardware.security.keymint-service.rust
510endif
511
512PRODUCT_PACKAGES += \
513    $(LOCAL_KEYMINT_PRODUCT_PACKAGE) \
514
515# Indicate that KeyMint includes support for the ATTEST_KEY key purpose.
516PRODUCT_COPY_FILES += \
517    frameworks/native/data/etc/android.hardware.keystore.app_attest_key.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.keystore.app_attest_key.xml
518
519#
520# Power and PowerStats HALs
521#
522ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
523PRODUCT_PACKAGES += com.android.hardware.power
524else
525PRODUCT_PACKAGES += \
526    android.hardware.power-service.example \
527    android.hardware.power.stats-service.example \
528
529endif
530
531#
532# Tetheroffload HAL
533#
534PRODUCT_PACKAGES += \
535    android.hardware.tetheroffload-service.example
536
537#
538# Thermal HAL
539#
540LOCAL_THERMAL_HAL_PRODUCT_PACKAGE ?= android.hardware.thermal-service.example
541PRODUCT_PACKAGES += $(LOCAL_THERMAL_HAL_PRODUCT_PACKAGE)
542
543#
544# NeuralNetworks HAL
545#
546PRODUCT_PACKAGES += \
547    android.hardware.neuralnetworks-service-sample-all \
548    android.hardware.neuralnetworks-service-sample-limited \
549    android.hardware.neuralnetworks-shim-service-sample
550
551# USB
552PRODUCT_PACKAGES += \
553    com.android.hardware.usb
554
555# Vibrator HAL
556ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
557PRODUCT_PACKAGES += com.android.hardware.vibrator
558else
559PRODUCT_PACKAGES += \
560    android.hardware.vibrator-service.example
561endif
562
563# BootControl HAL
564PRODUCT_PACKAGES += \
565    android.hardware.boot-service.default \
566    android.hardware.boot-service.default_recovery
567
568
569# RebootEscrow HAL
570PRODUCT_PACKAGES += \
571    android.hardware.rebootescrow-service.default
572
573# Memtrack HAL
574PRODUCT_PACKAGES += \
575    android.hardware.memtrack-service.example
576
577# Fastboot HAL & fastbootd
578PRODUCT_PACKAGES += \
579    android.hardware.fastboot@1.1-impl-mock \
580    fastbootd
581
582# Recovery mode
583ifneq ($(TARGET_NO_RECOVERY),true)
584
585PRODUCT_COPY_FILES += \
586    device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \
587    device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \
588    device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \
589
590PRODUCT_PACKAGES += \
591    update_engine_sideload
592
593endif
594
595ifdef TARGET_DEDICATED_RECOVERY
596PRODUCT_BUILD_RECOVERY_IMAGE := true
597PRODUCT_PACKAGES += linker.vendor_ramdisk shell_and_utilities_vendor_ramdisk
598else
599PRODUCT_PACKAGES += linker.recovery shell_and_utilities_recovery
600endif
601
602# wifi
603ifeq ($(LOCAL_PREFER_VENDOR_APEX),true)
604# Add com.android.hardware.wifi for android.hardware.wifi-service
605PRODUCT_PACKAGES += com.android.hardware.wifi
606# Add com.google.cf.wifi for hostapd, wpa_supplicant, etc.
607PRODUCT_PACKAGES += com.google.cf.wifi
608$(call add_soong_config_namespace, wpa_supplicant)
609$(call add_soong_config_var_value, wpa_supplicant, platform_version, $(PLATFORM_VERSION))
610$(call add_soong_config_var_value, wpa_supplicant, nl80211_driver, CONFIG_DRIVER_NL80211_QCA)
611
612else
613PRODUCT_PACKAGES += \
614    rename_netiface \
615    wpa_supplicant \
616    setup_wifi \
617    mac80211_create_radios \
618    hostapd \
619    android.hardware.wifi-service \
620    init.wifi
621PRODUCT_COPY_FILES += \
622    device/google/cuttlefish/shared/config/wpa_supplicant.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/wpa_supplicant.rc
623
624# VirtWifi interface configuration
625ifeq ($(DEVICE_VIRTWIFI_PORT),)
626    DEVICE_VIRTWIFI_PORT := eth2
627endif
628PRODUCT_VENDOR_PROPERTIES += ro.vendor.virtwifi.port=${DEVICE_VIRTWIFI_PORT}
629
630# WLAN driver configuration files
631ifndef LOCAL_WPA_SUPPLICANT_OVERLAY
632LOCAL_WPA_SUPPLICANT_OVERLAY := $(LOCAL_PATH)/config/wpa_supplicant_overlay.conf
633endif
634
635ifndef LOCAL_P2P_SUPPLICANT
636LOCAL_P2P_SUPPLICANT := $(LOCAL_PATH)/config/p2p_supplicant.conf
637endif
638
639PRODUCT_COPY_FILES += \
640    external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_template.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \
641    $(LOCAL_WPA_SUPPLICANT_OVERLAY):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
642    $(LOCAL_P2P_SUPPLICANT):$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant.conf
643endif
644
645# Wifi Runtime Resource Overlay
646PRODUCT_PACKAGES += \
647    CuttlefishTetheringOverlay \
648    CuttlefishWifiOverlay
649
650ifeq ($(PRODUCT_ENFORCE_MAC80211_HWSIM),true)
651PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=mac8011_hwsim_virtio
652$(call soong_config_append,cvdhost,enforce_mac80211_hwsim,true)
653else
654PRODUCT_VENDOR_PROPERTIES += ro.vendor.wifi_impl=virt_wifi
655endif
656
657# UWB HAL
658PRODUCT_PACKAGES += \
659    android.hardware.uwb-service
660PRODUCT_COPY_FILES += \
661    device/google/cuttlefish/guest/hals/uwb/uwb-service.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/uwb-service.rc
662
663
664# Host packages to install
665PRODUCT_HOST_PACKAGES += socket_vsock_proxy
666
667#for Confirmation UI
668PRODUCT_SOONG_NAMESPACES += vendor/google_devices/common/proprietary/confirmatioui_hal
669
670# Need this so that the application's loop on reading input can be synchronized
671# with HW VSYNC
672PRODUCT_VENDOR_PROPERTIES += \
673    ro.surface_flinger.running_without_sync_framework=true
674
675# Enable GPU-intensive background blur support on Cuttlefish when requested by apps
676PRODUCT_VENDOR_PROPERTIES += \
677    ro.surface_flinger.supports_background_blur=1
678
679# Disable GPU-intensive background blur for widget picker
680PRODUCT_SYSTEM_PROPERTIES += \
681    ro.launcher.depth.widget=0
682
683# Start fingerprint virtual HAL process
684PRODUCT_VENDOR_PROPERTIES += ro.vendor.fingerprint_virtual_hal_start=true
685
686# Vendor Dlkm Locader
687PRODUCT_PACKAGES += \
688   dlkm_loader
689
690# NFC AIDL HAL
691PRODUCT_PACKAGES += \
692    android.hardware.nfc-service.cuttlefish
693
694# CAS AIDL HAL
695PRODUCT_PACKAGES += \
696    android.hardware.cas-service.example
697
698PRODUCT_COPY_FILES += \
699    device/google/cuttlefish/shared/config/pci.ids:$(TARGET_COPY_OUT_VENDOR)/pci.ids
700