Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 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 | |
Roger Ellis | 3621bbd | 2020-04-09 12:30:21 -0700 | [diff] [blame] | 17 | # Include all languages |
| 18 | $(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk) |
| 19 | |
Jiyong Park | db9ec5e | 2019-04-15 14:19:52 +0900 | [diff] [blame] | 20 | # Enable updating of APEXes |
| 21 | $(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk) |
| 22 | |
Nikita Ioffe | c09fde4 | 2020-01-30 19:04:15 +0000 | [diff] [blame] | 23 | # Enable userspace reboot |
| 24 | $(call inherit-product, $(SRC_TARGET_DIR)/product/userspace_reboot.mk) |
| 25 | |
Alistair Delva | c7c262c | 2020-01-08 16:20:42 -0800 | [diff] [blame] | 26 | PRODUCT_SHIPPING_API_LEVEL := 30 |
Chris Gross | 0b9b32a | 2019-04-24 08:53:10 -0700 | [diff] [blame] | 27 | PRODUCT_BUILD_BOOT_IMAGE := true |
Alistair Delva | 5ac0965 | 2019-08-30 15:40:25 -0700 | [diff] [blame] | 28 | PRODUCT_USE_DYNAMIC_PARTITIONS := true |
Shuo Qian | 02bfe46 | 2018-05-07 20:53:03 +0000 | [diff] [blame] | 29 | DISABLE_RILD_OEM_HOOK := true |
| 30 | |
Daniel Rosenberg | c4c2f3d | 2019-12-18 18:54:04 -0800 | [diff] [blame] | 31 | TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE ?= f2fs |
| 32 | |
Enrico Granata | a19d1e4 | 2020-03-27 13:49:56 -0700 | [diff] [blame] | 33 | TARGET_VULKAN_SUPPORT ?= true |
| 34 | |
David Anderson | a4220b9 | 2019-10-10 17:34:40 -0700 | [diff] [blame] | 35 | AB_OTA_UPDATER := true |
| 36 | AB_OTA_PARTITIONS += \ |
Enrico Granata | 617305f | 2020-02-23 17:11:12 -0800 | [diff] [blame] | 37 | odm \ |
David Anderson | a4220b9 | 2019-10-10 17:34:40 -0700 | [diff] [blame] | 38 | product \ |
| 39 | system \ |
| 40 | system_ext \ |
| 41 | vendor |
| 42 | |
| 43 | # Enable Virtual A/B |
| 44 | $(call inherit-product, $(SRC_TARGET_DIR)/product/virtual_ab_ota.mk) |
| 45 | |
Daniel Rosenberg | c4c2f3d | 2019-12-18 18:54:04 -0800 | [diff] [blame] | 46 | # Enable Scoped Storage related changes for f2fs |
| 47 | ifeq ($(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE),f2fs) |
| 48 | $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk) |
| 49 | endif |
| 50 | |
Alistair Strachan | f0f9578 | 2019-03-28 03:26:53 -0700 | [diff] [blame] | 51 | # Properties that are not vendor-specific. These will go in the product |
| 52 | # partition, instead of the vendor partition, and do not need vendor |
Alistair Strachan | f6d5bc7 | 2019-03-28 03:25:33 -0700 | [diff] [blame] | 53 | # sepolicy |
Alistair Delva | 76c46d5 | 2019-12-12 13:54:53 -0800 | [diff] [blame] | 54 | PRODUCT_PRODUCT_PROPERTIES += \ |
Alistair Strachan | f970922 | 2019-03-28 04:23:04 -0700 | [diff] [blame] | 55 | persist.adb.tcp.port=5555 \ |
Alistair Strachan | f6d5bc7 | 2019-03-28 03:25:33 -0700 | [diff] [blame] | 56 | ro.com.google.locationfeatures=1 \ |
Greg Hartman | dc268d1 | 2019-07-18 15:30:38 -0700 | [diff] [blame] | 57 | |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 58 | # Explanation of specific properties: |
| 59 | # debug.hwui.swap_with_damage avoids boot failure on M http://b/25152138 |
Greg Hartman | 32a08ed | 2018-12-18 19:48:11 -0800 | [diff] [blame] | 60 | # ro.opengles.version OpenGLES 3.0 |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 61 | PRODUCT_PROPERTY_OVERRIDES += \ |
Greg Hartman | 1c641da | 2018-03-12 18:29:51 -0700 | [diff] [blame] | 62 | tombstoned.max_tombstone_count=500 \ |
Alistair Strachan | 0f01ce0 | 2019-03-28 04:38:44 -0700 | [diff] [blame] | 63 | bt.rootcanal_test_console=off \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 64 | debug.hwui.swap_with_damage=0 \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 65 | ro.carrier=unknown \ |
| 66 | ro.com.android.dataroaming=false \ |
Tomasz Wiszkowski | 9214f17 | 2017-09-19 14:36:53 -0700 | [diff] [blame] | 67 | ro.hardware.virtual_device=1 \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 68 | ro.logd.size=1M \ |
Greg Hartman | 32a08ed | 2018-12-18 19:48:11 -0800 | [diff] [blame] | 69 | ro.opengles.version=196608 \ |
Tomasz Wiszkowski | 9214f17 | 2017-09-19 14:36:53 -0700 | [diff] [blame] | 70 | wifi.interface=wlan0 \ |
Greg Hartman | dc268d1 | 2019-07-18 15:30:38 -0700 | [diff] [blame] | 71 | persist.sys.zram_enabled=1 \ |
Kenny Root | 1f50ee6 | 2020-01-24 12:06:19 -0800 | [diff] [blame] | 72 | ro.rebootescrow.device=/dev/block/pmem0 \ |
Songchun Fan | 36f6234 | 2020-04-28 13:23:02 -0700 | [diff] [blame] | 73 | ro.incremental.enable=1 \ |
Tomasz Wiszkowski | 9214f17 | 2017-09-19 14:36:53 -0700 | [diff] [blame] | 74 | |
| 75 | # Below is a list of properties we probably should get rid of. |
| 76 | PRODUCT_PROPERTY_OVERRIDES += \ |
| 77 | wlan.driver.status=ok |
| 78 | |
Hsin-Yi Chen | dbf169c | 2020-04-24 14:35:01 +0800 | [diff] [blame] | 79 | # Enforce privapp-permissions whitelist. |
| 80 | PRODUCT_PROPERTY_OVERRIDES += ro.control_privapp_permissions=enforce |
| 81 | |
Paul Crowley | 9b2dde1 | 2020-02-07 15:30:26 -0800 | [diff] [blame] | 82 | # aes-256-heh default is not supported in standard kernels. |
| 83 | PRODUCT_PROPERTY_OVERRIDES += ro.crypto.volume.filenames_mode=aes-256-cts |
| 84 | |
Alistair Delva | 6665d5a | 2020-04-28 20:49:29 -0700 | [diff] [blame] | 85 | # Copy preopted files from system_b on first boot |
| 86 | PRODUCT_PROPERTY_OVERRIDES += ro.cp_system_other_odex=1 |
| 87 | |
Alistair Delva | 92ff5fd | 2020-05-07 10:05:37 -0700 | [diff] [blame] | 88 | # DRM service opt-in |
| 89 | PRODUCT_PROPERTY_OVERRIDES += drm.service.enabled=true |
| 90 | |
Emilian Peev | e150090 | 2019-10-28 10:27:49 -0700 | [diff] [blame] | 91 | PRODUCT_SOONG_NAMESPACES += hardware/google/camera |
Cheng Gu | 51cfec1 | 2019-11-13 22:27:41 -0800 | [diff] [blame] | 92 | PRODUCT_SOONG_NAMESPACES += hardware/google/camera/devices/EmulatedCamera |
Emilian Peev | e150090 | 2019-10-28 10:27:49 -0700 | [diff] [blame] | 93 | |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 94 | # |
| 95 | # Packages for various GCE-specific utilities |
| 96 | # |
| 97 | PRODUCT_PACKAGES += \ |
Cody Schuffelen | 4a58ddc | 2018-12-17 18:55:19 -0800 | [diff] [blame] | 98 | socket_vsock_proxy \ |
Jorge E. Moreira | fa1a13d | 2019-04-16 13:46:54 -0700 | [diff] [blame] | 99 | CuttlefishService \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 100 | wpa_supplicant.vsoc.conf \ |
Andreas Huber | f9ad63a | 2018-01-18 12:55:43 -0800 | [diff] [blame] | 101 | vsoc_input_service \ |
Alistair Strachan | 5f90ba4 | 2018-05-03 11:43:25 -0700 | [diff] [blame] | 102 | vport_trigger \ |
Cody Schuffelen | 622d164 | 2018-07-31 14:16:18 -0700 | [diff] [blame] | 103 | rename_netiface \ |
Greg Hartman | 692d2f3 | 2018-10-09 17:09:51 -0700 | [diff] [blame] | 104 | ip_link_add \ |
Cody Schuffelen | 32e8b94 | 2018-11-21 12:16:06 -0800 | [diff] [blame] | 105 | setup_wifi \ |
Ram Muthiah | 3c1cc13 | 2019-04-24 16:23:14 -0700 | [diff] [blame] | 106 | tombstone_transmit \ |
Cody Schuffelen | c423e5d | 2019-09-16 19:49:45 +0000 | [diff] [blame] | 107 | vsock_logcat \ |
Ram Muthiah | 8fddac5 | 2019-05-30 19:00:32 -0700 | [diff] [blame] | 108 | tombstone_producer \ |
Tri Vo | 5c0f632 | 2019-12-06 11:09:45 -0800 | [diff] [blame] | 109 | suspend_blocker \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 110 | |
| 111 | # |
| 112 | # Packages for AOSP-available stuff we use from the framework |
| 113 | # |
| 114 | PRODUCT_PACKAGES += \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 115 | e2fsck \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 116 | ip \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 117 | sleep \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 118 | tcpdump \ |
| 119 | wpa_supplicant \ |
| 120 | wificond \ |
| 121 | |
| 122 | # |
| 123 | # Packages for the OpenGL implementation |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 124 | # |
Greg Hartman | aebd8b9 | 2018-07-24 01:51:52 -0700 | [diff] [blame] | 125 | |
Greg Hartman | 896507f | 2019-03-04 11:14:31 -0800 | [diff] [blame] | 126 | # SwiftShader provides a software-only implementation that is not thread-safe |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 127 | PRODUCT_PACKAGES += \ |
| 128 | libEGL_swiftshader \ |
| 129 | libGLESv1_CM_swiftshader \ |
Greg Hartman | aebd8b9 | 2018-07-24 01:51:52 -0700 | [diff] [blame] | 130 | libGLESv2_swiftshader |
| 131 | |
Greg Hartman | a9e82c0 | 2019-04-03 15:11:24 -0700 | [diff] [blame] | 132 | # GL implementation for virgl |
| 133 | PRODUCT_PACKAGES += \ |
Lingfeng Yang | ba4a524 | 2019-12-18 08:09:27 -0800 | [diff] [blame] | 134 | libGLES_mesa \ |
| 135 | |
Enrico Granata | a19d1e4 | 2020-03-27 13:49:56 -0700 | [diff] [blame] | 136 | # |
| 137 | # Packages for the Vulkan implementation |
| 138 | # |
| 139 | ifeq ($(TARGET_VULKAN_SUPPORT),true) |
Lingfeng Yang | ba4a524 | 2019-12-18 08:09:27 -0800 | [diff] [blame] | 140 | PRODUCT_PACKAGES += \ |
| 141 | vulkan.ranchu \ |
Enrico Granata | a19d1e4 | 2020-03-27 13:49:56 -0700 | [diff] [blame] | 142 | libvulkan_enc \ |
| 143 | vulkan.pastel |
| 144 | endif |
| 145 | |
| 146 | # GL/Vk implementation for gfxstream |
| 147 | PRODUCT_PACKAGES += \ |
Lingfeng Yang | ba4a524 | 2019-12-18 08:09:27 -0800 | [diff] [blame] | 148 | libandroidemu \ |
| 149 | libOpenglCodecCommon \ |
| 150 | libOpenglSystemCommon \ |
| 151 | libGLESv1_CM_emulation \ |
| 152 | lib_renderControl_enc \ |
| 153 | libEGL_emulation \ |
| 154 | libGLESv2_enc \ |
Lingfeng Yang | ba4a524 | 2019-12-18 08:09:27 -0800 | [diff] [blame] | 155 | libGLESv2_emulation \ |
| 156 | libGLESv1_enc |
Greg Hartman | a9e82c0 | 2019-04-03 15:11:24 -0700 | [diff] [blame] | 157 | |
Jason Macnak | 61a6dcf | 2019-10-29 16:51:50 -0700 | [diff] [blame] | 158 | # |
Jon Spivack | 41a85ef | 2020-01-27 22:19:22 +0000 | [diff] [blame] | 159 | # Packages for testing |
| 160 | # |
| 161 | PRODUCT_PACKAGES += \ |
Steven Moreland | 7dfb60f | 2020-03-24 15:36:53 -0700 | [diff] [blame] | 162 | aidl_lazy_test_server \ |
| 163 | hidl_lazy_test_server |
Jon Spivack | 41a85ef | 2020-01-27 22:19:22 +0000 | [diff] [blame] | 164 | |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 165 | DEVICE_PACKAGE_OVERLAYS := device/google/cuttlefish/shared/overlay |
Po-Chien Hsueh | 28d40cc | 2019-08-11 22:24:15 +0800 | [diff] [blame] | 166 | # PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to |
| 167 | # pick up every density resources. |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 168 | |
| 169 | # |
| 170 | # General files |
| 171 | # |
| 172 | PRODUCT_COPY_FILES += \ |
Alistair Strachan | dbe337d | 2019-03-04 17:55:58 -0800 | [diff] [blame] | 173 | device/google/cuttlefish/shared/config/audio_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy.conf \ |
Emilian Peev | e150090 | 2019-10-28 10:27:49 -0700 | [diff] [blame] | 174 | hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_back.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_back.json \ |
| 175 | hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_front.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_front.json \ |
| 176 | hardware/google/camera/devices/EmulatedCamera/hwl/configs/emu_camera_depth.json:$(TARGET_COPY_OUT_VENDOR)/etc/config/emu_camera_depth.json \ |
Alistair Delva | 52b256d | 2019-12-26 14:09:01 -0800 | [diff] [blame] | 177 | device/google/cuttlefish/shared/config/init.vendor.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.cutf_cvm.rc \ |
Jorge E. Moreira | c11b164 | 2019-04-09 11:43:54 -0700 | [diff] [blame] | 178 | device/google/cuttlefish/shared/config/init.product.rc:$(TARGET_COPY_OUT_PRODUCT)/etc/init/init.rc \ |
Jorge E. Moreira | 3fc164b | 2019-01-31 17:58:05 -0800 | [diff] [blame] | 179 | device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_VENDOR)/ueventd.rc \ |
Steven Moreland | a1f1783 | 2018-06-19 15:41:25 -0700 | [diff] [blame] | 180 | device/google/cuttlefish/shared/config/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ |
Alistair Strachan | 383cd38 | 2019-02-15 16:53:42 -0800 | [diff] [blame] | 181 | device/google/cuttlefish/shared/config/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \ |
Steven Moreland | a1f1783 | 2018-06-19 15:41:25 -0700 | [diff] [blame] | 182 | device/google/cuttlefish/shared/config/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \ |
| 183 | device/google/cuttlefish/shared/config/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ |
Alistair Delva | 3373f7b | 2020-05-07 09:15:19 -0700 | [diff] [blame^] | 184 | device/google/cuttlefish/shared/permissions/cuttlefish_excluded_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/cuttlefish_excluded_hardware.xml \ |
Hsin-Yi Chen | dbf169c | 2020-04-24 14:35:01 +0800 | [diff] [blame] | 185 | device/google/cuttlefish/shared/permissions/privapp-permissions-cuttlefish.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-cuttlefish.xml \ |
Alistair Strachan | 11738de | 2019-03-19 18:37:05 -0700 | [diff] [blame] | 186 | frameworks/av/media/libeffects/data/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ |
Steven Moreland | a1f1783 | 2018-06-19 15:41:25 -0700 | [diff] [blame] | 187 | frameworks/av/media/libstagefright/data/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ |
| 188 | frameworks/av/media/libstagefright/data/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \ |
Alistair Strachan | dbe337d | 2019-03-04 17:55:58 -0800 | [diff] [blame] | 189 | frameworks/av/services/audiopolicy/config/audio_policy_configuration_generic.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ |
| 190 | frameworks/av/services/audiopolicy/config/primary_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/primary_audio_policy_configuration.xml \ |
| 191 | frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 192 | frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ |
| 193 | frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \ |
Eric Laurent | 3e77444 | 2019-02-23 12:46:30 -0800 | [diff] [blame] | 194 | frameworks/av/services/audiopolicy/config/surround_sound_configuration_5_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/surround_sound_configuration_5_0.xml \ |
Steven Moreland | d438413 | 2018-06-12 11:14:30 -0700 | [diff] [blame] | 195 | frameworks/native/data/etc/android.hardware.audio.low_latency.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.low_latency.xml \ |
| 196 | frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \ |
Jayant Chowdhary | 6e548e3 | 2020-05-05 15:55:40 -0700 | [diff] [blame] | 197 | frameworks/native/data/etc/android.hardware.camera.concurrent.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.concurrent.xml \ |
Alistair Delva | 3373f7b | 2020-05-07 09:15:19 -0700 | [diff] [blame^] | 198 | frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \ |
| 199 | frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \ |
| 200 | frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \ |
| 201 | frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \ |
| 202 | frameworks/native/data/etc/android.hardware.faketouch.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.faketouch.xml \ |
Steven Moreland | d438413 | 2018-06-12 11:14:30 -0700 | [diff] [blame] | 203 | frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \ |
Kenny Root | 9e3e356 | 2020-01-25 11:43:48 -0800 | [diff] [blame] | 204 | frameworks/native/data/etc/android.hardware.reboot_escrow.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.reboot_escrow.xml \ |
Steven Moreland | d438413 | 2018-06-12 11:14:30 -0700 | [diff] [blame] | 205 | frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \ |
Alistair Strachan | 68d11ae | 2019-02-15 13:40:11 -0800 | [diff] [blame] | 206 | frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \ |
Steven Moreland | d438413 | 2018-06-12 11:14:30 -0700 | [diff] [blame] | 207 | frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \ |
| 208 | frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \ |
Steven Moreland | d438413 | 2018-06-12 11:14:30 -0700 | [diff] [blame] | 209 | frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \ |
| 210 | frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ |
Alistair Delva | 3373f7b | 2020-05-07 09:15:19 -0700 | [diff] [blame^] | 211 | frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \ |
| 212 | frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \ |
| 213 | frameworks/native/data/etc/android.software.verified_boot.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.verified_boot.xml \ |
Jorge E. Moreira | 94269e7 | 2019-03-12 15:19:54 -0700 | [diff] [blame] | 214 | system/bt/vendor_libs/test_vendor_lib/data/controller_properties.json:vendor/etc/bluetooth/controller_properties.json \ |
Alistair Delva | c4fcb67 | 2019-12-26 12:52:54 -0800 | [diff] [blame] | 215 | device/google/cuttlefish/shared/config/task_profiles.json:$(TARGET_COPY_OUT_VENDOR)/etc/task_profiles.json \ |
Enrico Granata | 683adf9 | 2020-04-21 15:41:39 -0700 | [diff] [blame] | 216 | |
| 217 | ifeq ($(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE),f2fs) |
| 218 | PRODUCT_COPY_FILES += \ |
Alistair Delva | 5ac0965 | 2019-08-30 15:40:25 -0700 | [diff] [blame] | 219 | device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_cvm \ |
| 220 | device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \ |
Enrico Granata | 683adf9 | 2020-04-21 15:41:39 -0700 | [diff] [blame] | 221 | device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.cutf_cvm |
| 222 | endif |
| 223 | |
| 224 | ifeq ($(TARGET_USERDATAIMAGE_FILE_SYSTEM_TYPE),ext4) |
| 225 | PRODUCT_COPY_FILES += \ |
| 226 | device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_cvm \ |
| 227 | device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \ |
| 228 | device/google/cuttlefish/shared/config/fstab.ext4:$(TARGET_COPY_OUT_RECOVERY)/root/first_stage_ramdisk/fstab.cutf_cvm |
| 229 | endif |
Alistair Strachan | e7949c3 | 2018-11-28 16:42:48 -0800 | [diff] [blame] | 230 | |
Enrico Granata | a19d1e4 | 2020-03-27 13:49:56 -0700 | [diff] [blame] | 231 | ifeq ($(TARGET_VULKAN_SUPPORT),true) |
| 232 | PRODUCT_COPY_FILES += \ |
| 233 | frameworks/native/data/etc/android.hardware.vulkan.level-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \ |
| 234 | frameworks/native/data/etc/android.hardware.vulkan.version-1_0_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \ |
| 235 | frameworks/native/data/etc/android.software.vulkan.deqp.level-2020-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml |
| 236 | endif |
| 237 | |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 238 | # Packages for HAL implementations |
| 239 | |
| 240 | # |
Alistair Strachan | 18458a6 | 2019-04-04 02:15:00 -0700 | [diff] [blame] | 241 | # Atrace HAL |
| 242 | # |
| 243 | PRODUCT_PACKAGES += \ |
| 244 | android.hardware.atrace@1.0-service |
| 245 | |
| 246 | # |
| 247 | # Authsecret HAL |
| 248 | # |
| 249 | PRODUCT_PACKAGES += \ |
| 250 | android.hardware.authsecret@1.0-service |
| 251 | |
| 252 | # |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 253 | # Hardware Composer HAL |
| 254 | # |
| 255 | PRODUCT_PACKAGES += \ |
Colin Cross | b3ee3d6 | 2019-03-22 13:18:13 -0700 | [diff] [blame] | 256 | hwcomposer.drm_minigbm \ |
Greg Hartman | aa974fe | 2019-04-01 15:41:40 -0700 | [diff] [blame] | 257 | hwcomposer.cutf_cvm_ashmem \ |
Huihong Luo | b9494b0 | 2020-02-24 14:32:48 -0800 | [diff] [blame] | 258 | hwcomposer.cutf_hwc2 \ |
Jorge E. Moreira | 8b42ef6 | 2017-06-22 16:55:58 -0700 | [diff] [blame] | 259 | hwcomposer-stats \ |
Alistair Strachan | 4b4a7b1 | 2019-04-18 15:14:17 -0700 | [diff] [blame] | 260 | android.hardware.graphics.composer@2.2-impl \ |
| 261 | android.hardware.graphics.composer@2.2-service |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 262 | |
| 263 | # |
| 264 | # Gralloc HAL |
| 265 | # |
| 266 | PRODUCT_PACKAGES += \ |
Alistair Strachan | faebd89 | 2018-03-20 14:21:31 -0700 | [diff] [blame] | 267 | gralloc.minigbm \ |
Greg Hartman | aa974fe | 2019-04-01 15:41:40 -0700 | [diff] [blame] | 268 | gralloc.cutf_ashmem \ |
Alistair Strachan | 5ea1b3a | 2019-04-18 15:12:35 -0700 | [diff] [blame] | 269 | android.hardware.graphics.mapper@2.0-impl-2.1 \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 270 | android.hardware.graphics.allocator@2.0-impl \ |
| 271 | android.hardware.graphics.allocator@2.0-service |
| 272 | |
| 273 | # |
| 274 | # Bluetooth HAL and Compatibility Bluetooth library (for older revs). |
| 275 | # |
| 276 | PRODUCT_PACKAGES += \ |
Jakub Pawlowski | c888fc2 | 2019-11-19 18:05:07 +0100 | [diff] [blame] | 277 | android.hardware.bluetooth@1.1-service.sim \ |
Alistair Strachan | 18458a6 | 2019-04-04 02:15:00 -0700 | [diff] [blame] | 278 | android.hardware.bluetooth.audio@2.0-impl |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 279 | |
| 280 | # |
| 281 | # Audio HAL |
| 282 | # |
| 283 | PRODUCT_PACKAGES += \ |
Alistair Strachan | dbe337d | 2019-03-04 17:55:58 -0800 | [diff] [blame] | 284 | audio.primary.cutf \ |
| 285 | audio.r_submix.default \ |
Mikhail Naganov | 6dc07d2 | 2020-01-24 11:58:37 -0800 | [diff] [blame] | 286 | android.hardware.audio@6.0-impl:32 \ |
| 287 | android.hardware.audio.effect@6.0-impl:32 \ |
Alistair Strachan | dbe337d | 2019-03-04 17:55:58 -0800 | [diff] [blame] | 288 | android.hardware.audio@2.0-service \ |
Nicholas Ambur | b34b8c7 | 2019-12-05 15:47:50 -0800 | [diff] [blame] | 289 | android.hardware.soundtrigger@2.3-impl \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 290 | |
| 291 | # |
Ilya Matyukhin | fe69be8 | 2020-01-22 13:44:41 -0800 | [diff] [blame] | 292 | # BiometricsFace HAL |
| 293 | # |
| 294 | PRODUCT_PACKAGES += \ |
Ilya Matyukhin | fb6052c | 2020-03-19 14:22:20 -0700 | [diff] [blame] | 295 | android.hardware.biometrics.face@1.0-service.example |
Ilya Matyukhin | fe69be8 | 2020-01-22 13:44:41 -0800 | [diff] [blame] | 296 | |
| 297 | # |
Brian Duddie | 047d94a | 2020-02-14 14:34:38 -0800 | [diff] [blame] | 298 | # Contexthub HAL |
| 299 | # |
| 300 | PRODUCT_PACKAGES += \ |
| 301 | android.hardware.contexthub@1.1-service.mock |
| 302 | |
| 303 | # |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 304 | # Drm HAL |
| 305 | # |
| 306 | PRODUCT_PACKAGES += \ |
Robert Shih | 63e5a1b | 2019-11-25 22:25:41 -0800 | [diff] [blame] | 307 | android.hardware.drm@1.3-service.clearkey \ |
| 308 | android.hardware.drm@1.3-service.widevine |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 309 | |
| 310 | # |
| 311 | # Dumpstate HAL |
| 312 | # |
Hao Chen | e2c4f16 | 2020-03-23 14:19:25 -0700 | [diff] [blame] | 313 | ifeq ($(LOCAL_DUMPSTATE_PRODUCT_PACKAGE),) |
| 314 | LOCAL_DUMPSTATE_PRODUCT_PACKAGE := android.hardware.dumpstate@1.1-service.example |
| 315 | endif |
| 316 | PRODUCT_PACKAGES += $(LOCAL_DUMPSTATE_PRODUCT_PACKAGE) |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 317 | |
| 318 | # |
| 319 | # Camera |
| 320 | # |
| 321 | PRODUCT_PACKAGES += \ |
Shuzhen Wang | e012312 | 2020-01-21 12:54:08 -0800 | [diff] [blame] | 322 | android.hardware.camera.provider@2.6-service-google \ |
Emilian Peev | e150090 | 2019-10-28 10:27:49 -0700 | [diff] [blame] | 323 | libgooglecamerahwl_impl \ |
Shuzhen Wang | e012312 | 2020-01-21 12:54:08 -0800 | [diff] [blame] | 324 | android.hardware.camera.provider@2.6-impl-google \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 325 | |
| 326 | # |
Steven Moreland | 178b80e | 2018-01-10 10:03:23 -0800 | [diff] [blame] | 327 | # Gatekeeper |
| 328 | # |
| 329 | PRODUCT_PACKAGES += \ |
Janis Danisevskis | 64d7180 | 2019-06-06 16:04:57 -0700 | [diff] [blame] | 330 | android.hardware.gatekeeper@1.0-service.software |
Steven Moreland | 178b80e | 2018-01-10 10:03:23 -0800 | [diff] [blame] | 331 | |
| 332 | # |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 333 | # GPS |
| 334 | # |
| 335 | PRODUCT_PACKAGES += \ |
Yu-Han Yang | 256bcaf | 2019-11-05 15:29:53 -0800 | [diff] [blame] | 336 | android.hardware.gnss@2.1-service |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 337 | |
Steven Moreland | c6bcbcd | 2018-01-10 12:27:59 -0800 | [diff] [blame] | 338 | # Health |
Enrico Granata | 3ad4719 | 2020-04-15 11:15:07 -0700 | [diff] [blame] | 339 | ifeq ($(LOCAL_HEALTH_PRODUCT_PACKAGE),) |
| 340 | LOCAL_HEALTH_PRODUCT_PACKAGE := \ |
Yifan Hong | a916b2e | 2019-10-14 16:50:00 -0700 | [diff] [blame] | 341 | android.hardware.health@2.1-impl-cuttlefish \ |
| 342 | android.hardware.health@2.1-service |
Enrico Granata | 3ad4719 | 2020-04-15 11:15:07 -0700 | [diff] [blame] | 343 | endif |
| 344 | PRODUCT_PACKAGES += $(LOCAL_HEALTH_PRODUCT_PACKAGE) |
Steven Moreland | c6bcbcd | 2018-01-10 12:27:59 -0800 | [diff] [blame] | 345 | |
Yifan Hong | fe328a2 | 2019-01-04 10:43:16 -0800 | [diff] [blame] | 346 | # Health Storage |
| 347 | PRODUCT_PACKAGES += \ |
| 348 | android.hardware.health.storage@1.0-service.cuttlefish |
| 349 | |
David Zeuthen | f5769c5 | 2020-01-14 19:28:21 -0500 | [diff] [blame] | 350 | # Identity Credential |
| 351 | PRODUCT_PACKAGES += \ |
David Zeuthen | 3974843 | 2020-02-12 11:02:56 -0500 | [diff] [blame] | 352 | android.hardware.identity-service.example |
David Zeuthen | f5769c5 | 2020-01-14 19:28:21 -0500 | [diff] [blame] | 353 | |
Siarhei Vishniakou | 481c061 | 2019-01-11 14:53:35 -0800 | [diff] [blame] | 354 | # Input Classifier HAL |
| 355 | PRODUCT_PACKAGES += \ |
| 356 | android.hardware.input.classifier@1.0-service.default |
| 357 | |
Steven Moreland | c6bcbcd | 2018-01-10 12:27:59 -0800 | [diff] [blame] | 358 | # |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 359 | # Sensors |
| 360 | # |
Jyoti Bhayana | 58729df | 2020-04-06 10:04:47 -0700 | [diff] [blame] | 361 | ifeq ($(LOCAL_SENSOR_PRODUCT_PACKAGE),) |
| 362 | LOCAL_SENSOR_PRODUCT_PACKAGE := android.hardware.sensors@2.1-service.mock |
| 363 | endif |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 364 | PRODUCT_PACKAGES += \ |
Jyoti Bhayana | 58729df | 2020-04-06 10:04:47 -0700 | [diff] [blame] | 365 | $(LOCAL_SENSOR_PRODUCT_PACKAGE) |
Wei Wang | ee83314 | 2019-01-08 08:59:47 -0800 | [diff] [blame] | 366 | # |
| 367 | # Thermal (mock) |
| 368 | # |
| 369 | PRODUCT_PACKAGES += \ |
Wei Wang | b1a2893 | 2019-01-09 11:32:13 -0800 | [diff] [blame] | 370 | android.hardware.thermal@2.0-service.mock |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 371 | |
| 372 | # |
| 373 | # Lights |
| 374 | # |
| 375 | PRODUCT_PACKAGES += \ |
Ivailo Karamanolev | 01e6821 | 2020-02-12 19:27:54 +0100 | [diff] [blame] | 376 | android.hardware.lights-service.example \ |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 377 | |
| 378 | # |
| 379 | # Keymaster HAL |
| 380 | # |
| 381 | PRODUCT_PACKAGES += \ |
Shawn Willden | b167108 | 2019-11-06 10:18:38 -0700 | [diff] [blame] | 382 | android.hardware.keymaster@4.1-service |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 383 | |
| 384 | # |
| 385 | # Power HAL |
| 386 | # |
| 387 | PRODUCT_PACKAGES += \ |
Wei Wang | 35eefd8 | 2020-01-13 11:21:49 -0800 | [diff] [blame] | 388 | android.hardware.power-service.example |
Benjamin Schwartz | 3521ea1 | 2019-01-25 09:36:39 -0800 | [diff] [blame] | 389 | |
| 390 | # |
| 391 | # PowerStats HAL |
| 392 | # |
| 393 | PRODUCT_PACKAGES += \ |
| 394 | android.hardware.power.stats@1.0-service.mock |
| 395 | |
Greg Hartman | 2fbc494 | 2017-12-14 15:45:55 -0800 | [diff] [blame] | 396 | # |
Michael Butler | e15c4c3 | 2018-12-07 17:40:59 -0800 | [diff] [blame] | 397 | # NeuralNetworks HAL |
| 398 | # |
| 399 | PRODUCT_PACKAGES += \ |
Michael Butler | f1ef00c | 2019-09-11 12:42:06 -0700 | [diff] [blame] | 400 | android.hardware.neuralnetworks@1.3-service-sample-all \ |
| 401 | android.hardware.neuralnetworks@1.3-service-sample-float-fast \ |
| 402 | android.hardware.neuralnetworks@1.3-service-sample-float-slow \ |
| 403 | android.hardware.neuralnetworks@1.3-service-sample-minimal \ |
| 404 | android.hardware.neuralnetworks@1.3-service-sample-quant |
Michael Butler | e15c4c3 | 2018-12-07 17:40:59 -0800 | [diff] [blame] | 405 | |
| 406 | # |
Greg Hartman | 2fbc494 | 2017-12-14 15:45:55 -0800 | [diff] [blame] | 407 | # USB |
| 408 | PRODUCT_PACKAGES += \ |
| 409 | android.hardware.usb@1.0-service |
| 410 | |
Harpreet "Eli" Sangha | 0443f4f | 2019-01-31 16:13:12 +0900 | [diff] [blame] | 411 | # Vibrator HAL |
| 412 | PRODUCT_PACKAGES += \ |
Steven Moreland | 691da38 | 2019-10-25 15:06:53 -0700 | [diff] [blame] | 413 | android.hardware.vibrator-service.example |
Tomasz Wiszkowski | ca327fe | 2017-05-26 15:54:12 -0700 | [diff] [blame] | 414 | |
David Anderson | e9d9470 | 2019-10-07 13:27:01 -0700 | [diff] [blame] | 415 | # BootControl HAL |
| 416 | PRODUCT_PACKAGES += \ |
| 417 | android.hardware.boot@1.1-impl \ |
| 418 | android.hardware.boot@1.1-impl.recovery \ |
| 419 | android.hardware.boot@1.1-service |
| 420 | |
Kenny Root | 3a78def | 2019-12-03 15:31:05 -0800 | [diff] [blame] | 421 | # RebootEscrow HAL |
| 422 | PRODUCT_PACKAGES += \ |
| 423 | android.hardware.rebootescrow-service.default |
| 424 | |
Andreas Huber | 2ad6248 | 2018-01-31 09:15:01 -0800 | [diff] [blame] | 425 | # WLAN driver configuration files |
| 426 | PRODUCT_COPY_FILES += \ |
| 427 | $(LOCAL_PATH)/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf |
Alistair Strachan | 5b47aac | 2019-01-03 12:55:59 -0800 | [diff] [blame] | 428 | |
| 429 | # Recovery mode |
| 430 | ifneq ($(TARGET_NO_RECOVERY),true) |
Alistair Strachan | 5b47aac | 2019-01-03 12:55:59 -0800 | [diff] [blame] | 431 | |
| 432 | PRODUCT_COPY_FILES += \ |
Alistair Delva | 52b256d | 2019-12-26 14:09:01 -0800 | [diff] [blame] | 433 | device/google/cuttlefish/shared/config/init.recovery.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.cutf_cvm.rc \ |
Alistair Delva | 3a44dfb | 2019-12-26 13:18:31 -0800 | [diff] [blame] | 434 | device/google/cuttlefish/shared/config/cgroups.json:$(TARGET_COPY_OUT_RECOVERY)/root/vendor/etc/cgroups.json \ |
Alistair Delva | 4548610 | 2019-12-26 14:16:04 -0800 | [diff] [blame] | 435 | device/google/cuttlefish/shared/config/ueventd.rc:$(TARGET_COPY_OUT_RECOVERY)/root/ueventd.cutf_cvm.rc \ |
Alistair Strachan | 5b47aac | 2019-01-03 12:55:59 -0800 | [diff] [blame] | 436 | |
| 437 | endif |
Dan Willemsen | 302bfda | 2019-02-09 22:27:57 -0800 | [diff] [blame] | 438 | |
Ram Muthiah | 901c804 | 2019-07-24 17:04:03 -0700 | [diff] [blame] | 439 | # |
| 440 | # Shell script Vendor Module Loading |
| 441 | # |
| 442 | PRODUCT_COPY_FILES += \ |
| 443 | $(LOCAL_PATH)/config/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \ |
| 444 | |
Dan Willemsen | 302bfda | 2019-02-09 22:27:57 -0800 | [diff] [blame] | 445 | # Host packages to install |
Cody Schuffelen | e22a331 | 2019-11-22 17:38:56 +0000 | [diff] [blame] | 446 | PRODUCT_HOST_PACKAGES += socket_vsock_proxy |
Cody Schuffelen | 70c304c | 2019-10-28 12:13:30 -0700 | [diff] [blame] | 447 | |
| 448 | PRODUCT_EXTRA_VNDK_VERSIONS := 28 29 |
Dan Willemsen | 3cd5544 | 2020-01-27 17:59:47 -0800 | [diff] [blame] | 449 | |
| 450 | PRODUCT_SOONG_NAMESPACES += external/mesa3d |
Sundong Ahn | ff5ff7e | 2020-02-03 14:56:14 +0900 | [diff] [blame] | 451 | |
| 452 | # Need this so that the application's loop on reading input can be synchronized |
| 453 | # with HW VSYNC |
| 454 | PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.running_without_sync_framework=true |