• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15//
16
17// Build the Car service.
18
19package {
20    default_team: "trendy_team_aaos_framework",
21    default_applicable_licenses: ["Android-Apache-2.0"],
22}
23
24genrule {
25    name: "statslog-Car-java-gen",
26    tools: ["stats-log-api-gen"],
27    cmd: "$(location stats-log-api-gen) --java $(out) --module car --javaPackage com.android.car" +
28        " --javaClass CarStatsLog",
29    out: ["com/android/car/CarStatsLog.java"],
30}
31
32gensrcs {
33    name: "gen-car-service-dump-javastream-protos",
34
35    tools: [
36        "aprotoc",
37        "protoc-gen-javastream",
38        "soong_zip",
39    ],
40
41    tool_files: [
42        ":libprotobuf-internal-protos",
43    ],
44
45    cmd: "mkdir -p $(genDir)/$(in) " +
46        "&& $(location aprotoc) " +
47        "  --plugin=$(location protoc-gen-javastream) " +
48        "  --javastream_out=$(genDir)/$(in) " +
49        "  -Iexternal/protobuf/src " +
50        "  -I . " +
51        "  $(in) " +
52        "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
53
54    srcs: [
55        ":car-service-dump-proto-srcs",
56    ],
57
58    output_extension: "srcjar",
59}
60
61genrule {
62    name: "gen-native-dump-cppstream-proto-headers",
63    tools: [
64        "aprotoc",
65        "protoc-gen-cppstream",
66    ],
67    cmd: "mkdir -p $(genDir) " +
68        "&& $(location aprotoc) " +
69        "  --plugin=$(location protoc-gen-cppstream) " +
70        "  --cppstream_out=$(genDir) " +
71        "  --cppstream_opt=experimental_allow_proto3_optional " +
72        "  -Iexternal/protobuf/src " +
73        "  -Ipackages/services/Car/service/proto/android/car/watchdog " +
74        "  $(in) ",
75    srcs: [
76        ":native-dump-proto-srcs",
77    ],
78
79    out: [
80        "carwatchdog_daemon_dump.proto.h",
81        "performance_stats.proto.h",
82        "health_check_client_info.proto.h",
83    ],
84}
85
86genrule {
87    name: "gen-native-dump-proto-headers",
88    tools: [
89        "aprotoc",
90    ],
91    cmd: "mkdir -p $(genDir) " +
92        "&& $(location aprotoc) " +
93        "  --cpp_out=$(genDir) " +
94        "  --proto_path=external/protobuf/src/google/protobuf " +
95        "  --proto_path=packages/services/Car/service/proto/android/car/watchdog " +
96        "  $(in) ",
97    srcs: [
98        ":native-dump-proto-srcs",
99    ],
100    out: [
101        "carwatchdog_daemon_dump.pb.h",
102        "performance_stats.pb.h",
103        "health_check_client_info.pb.h",
104    ],
105}
106
107genrule {
108    name: "gen-native-dump-proto-srcs",
109    tools: [
110        "aprotoc",
111    ],
112    cmd: "mkdir -p $(genDir) " +
113        "&& $(location aprotoc) " +
114        "  --cpp_out=$(genDir) " +
115        "  --proto_path=external/protobuf/src/google/protobuf " +
116        "  --proto_path=packages/services/Car/service/proto/android/car/watchdog " +
117        "  $(in) ",
118    srcs: [
119        ":native-dump-proto-srcs",
120    ],
121    out: [
122        "carwatchdog_daemon_dump.pb.cc",
123        "performance_stats.pb.cc",
124        "health_check_client_info.pb.cc",
125    ],
126}
127
128filegroup {
129    name: "car-service-dump-proto-srcs",
130    srcs: [
131        "proto/android/car/**/*_dump.proto",
132    ],
133    exclude_srcs: [
134        ":native-dump-proto-srcs",
135    ],
136}
137
138filegroup {
139    name: "native-dump-proto-srcs",
140    srcs: [
141        "proto/android/car/watchdog/*_daemon_dump.proto",
142        "proto/android/car/watchdog/performance_stats.proto",
143        "proto/android/car/watchdog/health_check_client_info.proto",
144    ],
145}
146
147filegroup {
148    name: "car-service-non-dump-proto-srcs",
149    srcs: [
150        "proto/android/car/telemetry/*.proto",
151        "proto/android/car/watchdog/atoms.proto",
152    ],
153}
154
155java_defaults {
156    name: "carservice-updatable-min-java-defaults",
157
158    defaults: [
159        "car-framework-aconfig-libraries",
160        "latest_android_hardware_automotive_audiocontrol_java_static",
161    ],
162
163    srcs: [
164        // add full source for all codes under p/s/Car to reduce unnecessary library allow listing.
165        ":IVehicleGeneratedJavaFiles-V3",
166        ":android.car.cluster.navigation-src",
167        ":android.car.watchdoglib-src",
168        ":cartelemetry-cardata-proto-srcs",
169        ":cartelemetryservice-proto-srcs",
170        ":car-service-non-dump-proto-srcs",
171        ":com.android.car.procfsinspector-client-src",
172        ":gen-car-service-dump-javastream-protos",
173        ":iscriptexecutor_aidl",
174        ":statslog-Car-java-gen",
175        ":VhalTestVendorProperties",
176        "src/**/*.java",
177    ],
178
179    aidl: {
180        include_dirs: [
181            "packages/services/Car/libs/procfs-inspector/client/src",
182        ],
183    },
184
185    resource_dirs: ["res"],
186
187    // Resource is still com.android.car.R
188    aaptflags: [
189        "--custom-package com.android.car",
190    ],
191
192    libs: [
193        "android.car-module.impl",
194        "android.car.builtin",
195        "framework-annotations-lib",
196        "framework-bluetooth",
197        "framework-connectivity",
198        "framework-connectivity-t.stubs.module_lib",
199        "framework-location",
200        "framework-statsd",
201        "framework-tethering",
202        "framework-wifi",
203        "modules-utils-os",
204        "modules-utils-preconditions",
205        "modules-utils-shell-command-handler",
206    ],
207
208    static_libs: [
209        "android.automotive.powerpolicy.delegate-V1-java",
210        "android.automotive.telemetry.internal-V2-java", // ICarTelemetryInternal
211        "android.automotive.watchdog.internal-V3-java",
212        "android.frameworks.automotive.powerpolicy.internal-V1-java",
213        "android.frameworks.automotive.powerpolicy-V3-java",
214        "android.hidl.base-V1.0-java",
215        "android.hardware.automotive.audiocontrol-V1.0-java",
216        "android.hardware.automotive.audiocontrol-V2.0-java",
217        "android.hardware.automotive.remoteaccess-V2-java",
218        "android.hardware.automotive.vehicle-V3-java",
219        "android.hardware.automotive.vehicle.property-V3-java",
220        "android.hardware.automotive.vehicle-V2.0-java",
221        "android.hardware.health-V1.0-java",
222        "android.hardware.health-V2.0-java",
223        "android.hardware.automotive.occupant_awareness-V1-java",
224        "android.media.audiopolicy-aconfig-java",
225        "libprotobuf-java-lite",
226        "modules-utils-expresslog",
227    ],
228
229    proto: {
230        type: "lite",
231    },
232
233    optimize: {
234        proguard_flags_files: ["proguard.flags"],
235        enabled: false,
236    },
237
238    sdk_version: "module_current",
239
240    java_resources: [
241        ":CarSvcProps_JSON",
242        ":VehicleHalDefaultProperties_JSON",
243    ],
244}
245
246java_defaults {
247    name: "carservice-updatable-java-defaults",
248
249    visibility: [
250        "//packages/services/Car:__subpackages__",
251    ],
252
253    defaults: ["carservice-updatable-min-java-defaults"],
254
255    // TODO(b/288271411): enable it when car mainline module is supported
256    // min_sdk_version: "33",
257}
258
259// Non-module build
260android_app {
261    name: "CarServiceUpdatableNonModule",
262
263    defaults: ["carservice-updatable-java-defaults"],
264    privileged: true,
265
266    required: ["allowed_privapp_com.android.car"],
267}
268
269// Added to car.framework module
270android_app {
271    name: "CarServiceUpdatable",
272
273    defaults: ["carservice-updatable-java-defaults"],
274    privileged: true,
275
276    apex_available: ["com.android.car.framework"],
277}
278
279java_library {
280
281    name: "car-service-common-util-static-lib",
282
283    srcs: [
284        "src/com/android/car/CarServiceBase.java",
285        "src/com/android/car/CarServiceUtils.java",
286        "src/com/android/car/CarLog.java",
287        "src/com/android/car/CarSystemService.java",
288        "src/com/android/car/util/TransitionLog.java",
289    ],
290
291    libs: [
292        "android.car.builtin",
293        "android.car",
294    ],
295
296    static_libs: [
297        "android.hardware.automotive.vehicle-V3-java",
298        "android.hardware.automotive.vehicle-V2.0-java",
299    ],
300}
301
302// Minimum code shared with carservice builtin.
303// Be careful with what is added here as it takes double space.
304// Also static instance sharing will not work.
305java_library {
306    name: "car-service-lib-for-builtin",
307
308    srcs: [
309        "src/com/android/car/CarLog.java",
310    ],
311
312    libs: [
313        "android.car",
314    ],
315}
316
317//####################################################################################
318// Build a static library to help mocking various car services in testing. This is meant to be used
319// for internal unit tests around the car service.
320//####################################################################################
321android_library {
322    name: "car-service-test-static-lib",
323
324    defaults: ["carservice-updatable-min-java-defaults"],
325
326    manifest: "EmptyAndroidManifest.xml",
327
328    // Avoid using the java_sdk_library version for android.car.builtin since it cannot be found
329    // during runtime on host. Use a java_library version instead.
330    exclude_uses_libs: ["android.car.builtin"],
331
332    static_libs: [
333        "android.car.builtin.testonly",
334    ],
335}
336
337filegroup {
338    name: "iscriptexecutor_aidl",
339    srcs: [
340        "src/com/android/car/telemetry/scriptexecutorinterface/BundleList.aidl",
341        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutor.aidl",
342        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutorListener.aidl",
343    ],
344    path: "src",
345}
346