1//
2// Copyright (C) 2021 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//
16package {
17    default_team: "trendy_team_fwk_uwb",
18    default_applicable_licenses: ["Android-Apache-2.0"],
19}
20
21java_defaults {
22    name: "service-uwb-common-defaults",
23    defaults: ["uwb-module-sdk-version-defaults"],
24    errorprone: {
25        javacflags: ["-Xep:CheckReturnValue:ERROR"],
26    },
27}
28
29filegroup {
30    name: "service-uwb-srcs",
31    srcs: [
32        "java/**/*.java",
33        ":statslog-uwb-java-gen",
34        ":uwb_config",
35    ],
36}
37
38// pre-jarjar version of service-uwb that builds against pre-jarjar version of framework-uwb
39java_library {
40    name: "service-uwb-pre-jarjar",
41    installable: false,
42    defaults: ["service-uwb-common-defaults"],
43    srcs: [":service-uwb-srcs"],
44    required: ["libuwb_uci_jni_rust"],
45    sdk_version: "system_server_current",
46
47    libs: [
48        "androidx.annotation_annotation",
49        "framework-annotations-lib",
50        "framework-configinfrastructure.stubs.module_lib",
51        "framework-uwb-pre-jarjar",
52        "ServiceUwbResources",
53        "framework-statsd.stubs.module_lib",
54        "framework-wifi.stubs.module_lib",
55        "framework-bluetooth.stubs.module_lib",
56        "framework-location.stubs.module_lib",
57    ],
58
59    static_libs: [
60        "android.hardware.uwb.fira_android-V3-java",
61        "com.uwb.support.aliro",
62        "com.uwb.support.ccc",
63        "com.uwb.support.fira",
64        "com.uwb.support.generic",
65        "com.uwb.support.multichip",
66        "com.uwb.support.profile",
67        "com.uwb.support.oemextension",
68        "com.uwb.support.dltdoa",
69        "com.uwb.support.radar",
70        "com.uwb.support.rftest",
71        "com.uwb.fusion",
72        "guava",
73        "modules-utils-shell-command-handler",
74        "modules-utils-handlerexecutor",
75        "modules-utils-preconditions",
76        "uwb-config-proto",
77        "modules-utils-statemachine",
78        "modules-utils-build",
79        "cbor-java",
80        "bouncycastle-uwb",
81        "uwb_flags_lib",
82    ],
83
84    apex_available: [
85        "com.android.uwb",
86    ],
87}
88
89// service-uwb static library
90// ============================================================
91java_library {
92    name: "service-uwb",
93    defaults: [
94        "service-uwb-common-defaults",
95        "standalone-system-server-module-optimize-defaults",
96    ],
97    installable: true,
98    static_libs: ["service-uwb-pre-jarjar"],
99
100    // Need to include `libs` so that Soong doesn't complain about missing classes after jarjaring
101    // The below libraries are not actually needed to build since no source is compiled
102    // but they are necessary so that R8 has the right references to optimize the code.
103    // Without these, there will be missing class warnings and code may be wrongly optimized.
104    // TODO(b/242088131): remove libraries that aren't used directly
105    libs: [
106        "framework-uwb.impl",
107        "framework-statsd.stubs.module_lib",
108        "framework-wifi.stubs.module_lib",
109        "framework-bluetooth.stubs.module_lib",
110        "framework-connectivity.stubs.module_lib",
111    ],
112
113    sdk_version: "system_server_current",
114
115    jarjar_rules: ":uwb-jarjar-rules",
116    optimize: {
117        proguard_flags_files: ["proguard.flags"],
118    },
119    visibility: [
120        "//packages/modules/Uwb/apex",
121        "//packages/modules/Uwb/service/tests/uwbtests/apex",
122    ],
123    apex_available: [
124        "com.android.uwb",
125    ],
126}
127
128// Statsd auto-generated code
129// ============================================================
130genrule {
131    name: "statslog-uwb-java-gen",
132    tools: ["stats-log-api-gen"],
133    cmd: "$(location stats-log-api-gen) --java $(out) --module uwb " +
134        " --javaPackage com.android.server.uwb.proto --javaClass UwbStatsLog" +
135        " --minApiLevel 33",
136    out: ["com/android/server/uwb/proto/UwbStatsLog.java"],
137}
138