• 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    cmd: "mkdir -p $(genDir)/$(in) " +
42        "&& $(location aprotoc) " +
43        "  --plugin=$(location protoc-gen-javastream) " +
44        "  --javastream_out=$(genDir)/$(in) " +
45        "  -I . " +
46        "  $(in) " +
47        "&& $(location soong_zip) -jar -o $(out) -C $(genDir)/$(in) -D $(genDir)/$(in)",
48
49    srcs: [
50        ":car-service-dump-proto-srcs",
51    ],
52
53    output_extension: "srcjar",
54}
55
56genrule {
57    name: "gen-native-dump-cppstream-proto-headers",
58    tools: [
59        "aprotoc",
60        "protoc-gen-cppstream",
61    ],
62
63    cmd: "mkdir -p $(genDir) " +
64        "&& $(location aprotoc) " +
65        "  --plugin=$(location protoc-gen-cppstream) " +
66        "  --cppstream_out=$(genDir) " +
67        "  --cppstream_opt=experimental_allow_proto3_optional " +
68        "  -I . " +
69        "  $(in) ",
70    srcs: [
71        ":native-dump-proto-srcs",
72    ],
73
74    out: [
75        "packages/services/Car/service/proto/android/car/watchdog/carwatchdog_daemon_dump.proto.h",
76        "packages/services/Car/service/proto/android/car/watchdog/performance_stats.proto.h",
77        "packages/services/Car/service/proto/android/car/watchdog/health_check_client_info.proto.h",
78    ],
79}
80
81genrule {
82    name: "gen-native-dump-proto-headers",
83    tools: [
84        "aprotoc",
85    ],
86
87    cmd: "mkdir -p $(genDir) " +
88        "&& $(location aprotoc) " +
89        "  --cpp_out=$(genDir) " +
90        "  --proto_path=external/protobuf/src/google/protobuf " +
91        "  -I . " +
92        "  $(in) ",
93    srcs: [
94        ":native-dump-proto-srcs",
95    ],
96    out: [
97        "packages/services/Car/service/proto/android/car/watchdog/carwatchdog_daemon_dump.pb.h",
98        "packages/services/Car/service/proto/android/car/watchdog/performance_stats.pb.h",
99        "packages/services/Car/service/proto/android/car/watchdog/health_check_client_info.pb.h",
100    ],
101}
102
103genrule {
104    name: "gen-native-dump-proto-srcs",
105    tools: [
106        "aprotoc",
107    ],
108
109    cmd: "mkdir -p $(genDir) " +
110        "&& $(location aprotoc) " +
111        "  --cpp_out=$(genDir) " +
112        "  --proto_path=external/protobuf/src/google/protobuf " +
113        "  -I . " +
114        "  $(in) ",
115    srcs: [
116        ":native-dump-proto-srcs",
117    ],
118    out: [
119        "packages/services/Car/service/proto/android/car/watchdog/carwatchdog_daemon_dump.pb.cc",
120        "packages/services/Car/service/proto/android/car/watchdog/performance_stats.pb.cc",
121        "packages/services/Car/service/proto/android/car/watchdog/health_check_client_info.pb.cc",
122    ],
123}
124
125filegroup {
126    name: "car-service-dump-proto-srcs",
127    srcs: [
128        "proto/android/car/**/*_dump.proto",
129    ],
130    exclude_srcs: [
131        ":native-dump-proto-srcs",
132    ],
133}
134
135filegroup {
136    name: "native-dump-proto-srcs",
137    srcs: [
138        "proto/android/car/watchdog/*_daemon_dump.proto",
139        "proto/android/car/watchdog/performance_stats.proto",
140        "proto/android/car/watchdog/health_check_client_info.proto",
141    ],
142}
143
144filegroup {
145    name: "car-service-non-dump-proto-srcs",
146    srcs: [
147        "proto/android/car/telemetry/*.proto",
148        "proto/android/car/watchdog/atoms.proto",
149    ],
150}
151
152filegroup {
153    name: "car-service-srcs",
154    srcs: [
155        "src/**/*.java",
156    ],
157    exclude_srcs: [
158        "src/com/android/car/power/NativePowerNotificationsOff.java",
159        "src/com/android/car/power/NativePowerNotificationsOn.java",
160    ],
161}
162
163java_defaults {
164    name: "carservice-updatable-min-java-defaults",
165
166    defaults: [
167        "car-framework-aconfig-libraries",
168        "latest_android_hardware_automotive_audiocontrol_java_static",
169        "vhal-interface-defaults",
170    ],
171
172    srcs: [
173        // add full source for all codes under p/s/Car to reduce unnecessary library allow listing.
174        ":IVehicleGeneratedJavaFiles-V4",
175        ":android.car.cluster.navigation-src",
176        ":android.car.watchdoglib-src",
177        ":cartelemetry-cardata-proto-srcs",
178        ":cartelemetryservice-proto-srcs",
179        ":car-service-non-dump-proto-srcs",
180        ":com.android.car.procfsinspector-client-src",
181        ":gen-car-service-dump-javastream-protos",
182        ":iscriptexecutor_aidl",
183        ":statslog-Car-java-gen",
184        ":VhalTestVendorProperties",
185        ":car-service-srcs",
186    ],
187
188    aidl: {
189        include_dirs: [
190            "packages/services/Car/libs/procfs-inspector/client/src",
191        ],
192    },
193
194    resource_dirs: ["res"],
195
196    // Resource is still com.android.car.R
197    aaptflags: [
198        "--custom-package com.android.car",
199    ],
200
201    libs: [
202        "android.car-module.impl",
203        "android.car.builtin.stubs.module_lib",
204        "framework-annotations-lib",
205        "framework-bluetooth.stubs.module_lib",
206        "framework-connectivity.stubs.module_lib",
207        "framework-connectivity-t.stubs.module_lib",
208        "framework-location.stubs.module_lib",
209        "framework-statsd.stubs.module_lib",
210        "framework-tethering.stubs.module_lib",
211        "framework-wifi.stubs.module_lib",
212        "modules-utils-os",
213        "modules-utils-preconditions",
214        "modules-utils-shell-command-handler",
215    ],
216
217    static_libs: [
218        "android.automotive.power.delegate-java",
219        "android.automotive.telemetry.internal-V2-java", // ICarTelemetryInternal
220        "android.automotive.watchdog.internal-java",
221        "android.frameworks.automotive.powerpolicy.internal-V1-java",
222        "android.frameworks.automotive.powerpolicy-V3-java",
223        "android.hidl.base-V1.0-java",
224        "android.hardware.automotive.audiocontrol-V1.0-java",
225        "android.hardware.automotive.audiocontrol-V2.0-java",
226        "android.hardware.automotive.remoteaccess-V2-java",
227        "android.hardware.health-V1.0-java",
228        "android.hardware.health-V2.0-java",
229        "android.hardware.automotive.occupant_awareness-V1-java",
230        "android.media.audiopolicy-aconfig-java",
231        "libprotobuf-java-lite",
232        "modules-utils-expresslog",
233    ] + select(release_flag("RELEASE_FRAMEWORK_NATIVE_POWER_NOTIFICATIONS"), {
234        true: ["native_power_notifications_enabled"],
235        default: ["native_power_notifications_disabled"],
236    }),
237
238    proto: {
239        type: "lite",
240    },
241
242    optimize: {
243        proguard_flags_files: ["proguard.flags"],
244        enabled: false,
245    },
246
247    sdk_version: "module_current",
248
249    java_resources: [
250        ":CarSvcProps_JSON",
251        ":VehicleHalDefaultProperties_JSON",
252    ],
253}
254
255java_defaults {
256    name: "carservice-updatable-java-defaults",
257
258    visibility: [
259        "//packages/services/Car:__subpackages__",
260    ],
261
262    flags_packages: [
263        "android.car.feature-aconfig",
264    ],
265
266    defaults: ["carservice-updatable-min-java-defaults"],
267
268    // TODO(b/288271411): enable it when car mainline module is supported
269    // min_sdk_version: "33",
270}
271
272// Non-module build
273android_app {
274    name: "CarServiceUpdatableNonModule",
275
276    defaults: ["carservice-updatable-java-defaults"],
277    privileged: true,
278
279    required: ["allowed_privapp_com.android.car"],
280}
281
282// Added to car.framework module
283android_app {
284    name: "CarServiceUpdatable",
285
286    defaults: ["carservice-updatable-java-defaults"],
287    privileged: true,
288
289    apex_available: ["com.android.car.framework"],
290}
291
292java_library {
293    name: "car-service-common-util-static-lib",
294
295    defaults: ["vhal-interface-defaults"],
296
297    srcs: [
298        "src/com/android/car/CarServiceBase.java",
299        "src/com/android/car/CarServiceUtils.java",
300        "src/com/android/car/CarLog.java",
301        "src/com/android/car/CarSystemService.java",
302        "src/com/android/car/util/TransitionLog.java",
303    ],
304
305    libs: [
306        "android.car.builtin.stubs.module_lib",
307        "android.car",
308    ],
309}
310
311// Minimum code shared with carservice builtin.
312// Be careful with what is added here as it takes double space.
313// Also static instance sharing will not work.
314java_library {
315    name: "car-service-lib-for-builtin",
316
317    srcs: [
318        "src/com/android/car/CarLog.java",
319    ],
320
321    libs: [
322        "android.car",
323    ],
324}
325
326//####################################################################################
327// Build a static library to help mocking various car services in testing. This is meant to be used
328// for internal unit tests around the car service.
329//####################################################################################
330android_library {
331    name: "car-service-test-static-lib",
332
333    defaults: ["carservice-updatable-min-java-defaults"],
334
335    manifest: "EmptyAndroidManifest.xml",
336
337    // Avoid using the java_sdk_library version for android.car.builtin since it cannot be found
338    // during runtime on host. Use a java_library version instead.
339    exclude_uses_libs: ["android.car.builtin"],
340
341    static_libs: [
342        "android.car.builtin.testonly",
343    ],
344}
345
346filegroup {
347    name: "iscriptexecutor_aidl",
348    srcs: [
349        "src/com/android/car/telemetry/scriptexecutorinterface/BundleList.aidl",
350        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutor.aidl",
351        "src/com/android/car/telemetry/scriptexecutorinterface/IScriptExecutorListener.aidl",
352    ],
353    path: "src",
354}
355
356java_defaults {
357    name: "vhal-interface-defaults",
358    static_libs: [
359        "android.hardware.automotive.vehicle-V2.0-java",
360        "android.hardware.automotive.vehicle-V4-java",
361        "android.hardware.automotive.vehicle.property-V4-java",
362    ],
363}
364
365// #############################################################################
366// Java library to control features based on build system flag.
367// #############################################################################
368java_library {
369    name: "native_power_notifications_enabled",
370    srcs: [
371        "src/com/android/car/power/NativePowerNotificationsOn.java",
372    ],
373    sdk_version: "module_current",
374    apex_available: [
375        "//apex_available:platform",
376        "com.android.car.framework",
377    ],
378}
379
380java_library {
381    name: "native_power_notifications_disabled",
382    srcs: [
383        "src/com/android/car/power/NativePowerNotificationsOff.java",
384    ],
385    sdk_version: "module_current",
386    apex_available: [
387        "//apex_available:platform",
388        "com.android.car.framework",
389    ],
390}
391