1#
2# Copyright (C) 2022 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# This makefile supports a generic system image for an automotive device.
18$(call inherit-product, packages/services/Car/car_product/build/car_system.mk)
19
20# Car rotary
21PRODUCT_PACKAGES += \
22    CarRotaryController \
23    CarRotaryImeRRO \
24    RotaryIME \
25    RotaryPlayground \
26
27PRODUCT_PACKAGES_DEBUG += \
28    avbctl \
29    bootctl \
30    curl \
31    tinycap \
32    tinyhostless \
33    tinymix \
34    tinypcminfo \
35    tinyplay \
36    update_engine_client \
37    AdasLocationTestApp \
38    CarHotwordDetectionServiceOne \
39    CarTelemetryApp \
40    DefaultStorageMonitoringCompanionApp \
41    EmbeddedKitchenSinkApp \
42    ExperimentalCarService \
43    GarageModeTestApp \
44    NetworkPreferenceApp \
45    RailwayReferenceApp \
46    SampleCustomInputService \
47    AaosCustomizationTool \
48
49# Default boot animation for AAOS
50PRODUCT_COPY_FILES += \
51    packages/services/Car/car_product/bootanimations/bootanimation-832.zip:$(TARGET_COPY_OUT_SYSTEM)/media/bootanimation.zip
52
53# ClusterOsDouble is the testing app to test Cluster2 framework and it can handle Cluster VHAL
54# and do some Cluster OS role.
55ifeq ($(ENABLE_CLUSTER_OS_DOUBLE), true)
56PRODUCT_PACKAGES += ClusterHomeSample ClusterOsDouble
57else
58# DirectRenderingCluster is the sample app for the old Cluster framework.
59PRODUCT_PACKAGES += DirectRenderingCluster
60endif  # ENABLE_CLUSTER_OS_DOUBLE
61
62# ENABLE_CAMERA_SERVICE must be set as true from the product's makefile if it wants to support
63# Android Camera service.
64ifneq ($(ENABLE_CAMERA_SERVICE), true)
65PRODUCT_PROPERTY_OVERRIDES += config.disable_cameraservice=true
66PRODUCT_PACKAGES += HideCameraApps
67endif
68
69# ENABLE_EVS_SERVICE must be set as true from the product's makefile if it wants to support
70# the Extended View System service.
71ifeq ($(ENABLE_EVS_SERVICE), true)
72PRODUCT_PACKAGES += evsmanagerd
73
74# CUSTOMIZE_EVS_SERVICE_PARAMETER must be set as true from the product's makefile if it wants
75# to use IEvsEnumearor instances other than hw/1.
76ifneq ($(CUSTOMIZE_EVS_SERVICE_PARAMETER), true)
77PRODUCT_COPY_FILES += \
78    packages/services/Car/cpp/evs/manager/aidl/init.evs.rc:$(TARGET_COPY_OUT_SYSTEM)/etc/init/init.evs.rc
79endif
80
81ifeq ($(ENABLE_CAREVSSERVICE_SAMPLE), true)
82# TODO(b/293332636): Clean up below line when both apps are consolidated into a single app.
83PRODUCT_PACKAGES += CarEvsCameraPreviewApp CarEvsMultiCameraPreviewApp
84endif
85ifeq ($(ENABLE_REAR_VIEW_CAMERA_SAMPLE), true)
86PRODUCT_PACKAGES += SampleRearViewCamera
87endif
88# This is needed to be available to all builds because overlay config doesn't support optional overlays.
89PRODUCT_PACKAGE_OVERLAYS += packages/services/Car/tests/SampleRearViewCamera/overlay
90
91endif  # ENABLE_EVS_SERVICE
92
93# Conditionally enable the telemetry service
94ifeq ($(ENABLE_CARTELEMETRY_SERVICE), true)
95PRODUCT_PACKAGES += android.automotive.telemetryd@1.0 \
96                    ScriptExecutor
97endif
98
99# ENABLE_EVS_SAMPLE should be set true or their vendor specific equivalents should be included in
100# the device.mk with the corresponding selinux policies
101ifeq ($(ENABLE_EVS_SAMPLE), true)
102PRODUCT_PACKAGES += evs_app
103# A reference EVS HAL implementation will be added in car_vendor.mk and require AIDL version of
104# the automotive display service implementation.
105USE_AIDL_DISPLAY_SERVICE := true
106else ifeq ($(ENABLE_SAMPLE_EVS_APP), true)
107PRODUCT_PACKAGES += evs_app
108endif
109
110ifeq ($(USE_AIDL_DISPLAY_SERVICE), true)
111PRODUCT_PACKAGES += cardisplayproxyd
112else
113# TODO(b/276340636): Remove HIDL Automotive Display Service implementation when we stop supporting
114# HIDL EVS interface implementations.
115$(warning HIDL version of the Automotive Display Service is deprecated \
116          and will be replaced with cardisplayproxyd.)
117PRODUCT_PACKAGES += android.frameworks.automotive.display@1.0-service
118endif  # USE_AIDL_DISPLAY_SERVICE
119
120PRODUCT_NAME := car_generic_system
121PRODUCT_BRAND := generic
122
123# Define /system partition-specific product properties to identify that /system
124# partition is car_generic_system.
125PRODUCT_SYSTEM_NAME := car_generic
126PRODUCT_SYSTEM_BRAND := Android
127PRODUCT_SYSTEM_MANUFACTURER := Android
128PRODUCT_SYSTEM_MODEL := car_generic
129PRODUCT_SYSTEM_DEVICE := generic
130
131# System.img should be mounted at /, so we include ROOT here.
132_my_paths := \
133  $(TARGET_COPY_OUT_ROOT)/ \
134  $(TARGET_COPY_OUT_SYSTEM)/ \
135
136$(call require-artifacts-in-path, $(_my_paths),)
137