1// Copyright (C) 2023 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
15package {
16    default_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19// NOTE: currently there's just one library for everything (which in
20// reality is just AtomicFileDataStore), but it might be better to
21// split into multiple libraries in the feature (if it gets bigger
22// and/or if new classes adds external dependencies like proto support)
23java_library {
24    name: "adservices-shared-storage",
25    min_sdk_version: "30",
26    sdk_version: "module_current",
27    srcs: [
28        "java/com/android/adservices/shared/storage/*.java",
29    ],
30    libs: [
31        "framework-annotations-lib",
32    ],
33    static_libs: [
34        "adservices-shared-error-logging",
35        "adservices-statsd",
36        "adservices-shared-util",
37        "modules-utils-build",
38        "modules-utils-preconditions",
39    ],
40    visibility: [
41        "//packages/modules/AdServices:__subpackages__",
42        "//packages/modules/ExtServices:__subpackages__",
43        "//packages/modules/OnDevicePersonalization:__subpackages__",
44    ],
45    apex_available: [
46        "com.android.adservices",
47        "com.android.extservices",
48        "com.android.ondevicepersonalization",
49    ],
50    lint: {
51        extra_check_modules: ["AdServicesProdLintChecker"],
52        baseline_filename: "lint-baseline-adservices-shared-storage.xml", // TODO(b/356688417): Clean up baseline file.
53    },
54}
55
56java_library {
57    name: "adservices-shared-datastore",
58    min_sdk_version: "30",
59    sdk_version: "module_current",
60    srcs: [
61        "java/com/android/adservices/shared/datastore/**/*.java",
62        "java/com/android/adservices/shared/datastore/**/*.kt",
63    ],
64    static_libs: [
65        "libprotobuf-java-lite",
66        "androidx.datastore_datastore",
67        "androidx.datastore_datastore-guava",
68    ],
69    apex_available: [
70        "com.android.adservices",
71        "com.android.extservices",
72        "com.android.ondevicepersonalization",
73    ],
74}
75
76java_library {
77    name: "adservices-statsd",
78    sdk_version: "module_current",
79    min_sdk_version: "30",
80    srcs: [
81        ":statslog-adservices-java-gen",
82    ],
83    libs: [
84        "androidx.annotation_annotation",
85        "framework-statsd.stubs.module_lib",
86    ],
87    visibility: [
88        "//packages/modules/AdServices:__subpackages__",
89        "//packages/modules/ExtServices:__subpackages__",
90        "//packages/modules/OnDevicePersonalization:__subpackages__",
91    ],
92    apex_available: [
93        "com.android.adservices",
94        "com.android.extservices",
95        "com.android.ondevicepersonalization",
96    ],
97}
98
99java_library {
100    name: "adservices-shared-error-logging",
101    min_sdk_version: "30",
102    sdk_version: "module_current",
103    srcs: [
104        "java/com/android/adservices/shared/errorlogging/*.java",
105        ":statslog-adservices-java-gen",
106    ],
107    static_libs: [
108        "adservices-shared-util",
109        "adservices-shared-proto-lite",
110        "adservices-shared-proto-utils",
111        "adservices-shared-common",
112    ],
113    libs: [
114        "androidx.annotation_annotation",
115        "framework-annotations-lib",
116        "framework-statsd.stubs.module_lib",
117        "auto_value_annotations",
118        "jsr305",
119    ],
120    plugins: [
121        "auto_value_plugin",
122        "auto_annotation_plugin",
123    ],
124    visibility: [
125        "//packages/modules/AdServices:__subpackages__",
126        "//packages/modules/ExtServices:__subpackages__",
127        "//packages/modules/OnDevicePersonalization:__subpackages__",
128    ],
129    apex_available: [
130        "com.android.adservices",
131        "com.android.extservices",
132        "com.android.ondevicepersonalization",
133    ],
134    lint: {
135        extra_check_modules: ["AdServicesProdLintChecker"],
136    },
137}
138
139java_library {
140    name: "adservices-shared-spe",
141    min_sdk_version: "30",
142    sdk_version: "module_current",
143    srcs: [
144        "java/com/android/adservices/shared/spe/**/*.java",
145        ":statslog-adservices-java-gen",
146    ],
147    static_libs: [
148        "adservices-shared-common",
149        "adservices-shared-error-logging",
150        "adservices-shared-proto-utils",
151        "guava", // MoreExecutors, Executors...
152    ],
153    libs: [
154        "androidx.annotation_annotation",
155        "framework-annotations-lib",
156        "framework-statsd.stubs.module_lib",
157        "auto_value_annotations",
158    ],
159    plugins: [
160        "auto_value_plugin",
161        "auto_annotation_plugin",
162    ],
163    visibility: [
164        "//packages/modules/AdServices:__subpackages__",
165        "//packages/modules/ExtServices:__subpackages__",
166        "//packages/modules/OnDevicePersonalization:__subpackages__",
167    ],
168    apex_available: [
169        "com.android.adservices",
170        "com.android.extservices",
171        "com.android.ondevicepersonalization",
172    ],
173    lint: {
174        extra_check_modules: ["AdServicesProdLintChecker"],
175        baseline_filename: "lint-baseline-adservices-shared-spe.xml", // TODO(b/356688417): Clean up baseline file.
176    },
177}
178
179// NOTE: currently there's just one library for everything (which for
180// now is just ApplicationContext), but it might be better to split
181// into multiple libraries in the future (if it gets bigger and/or
182// if new classes adds external dependencies)
183java_library {
184    name: "adservices-shared-common",
185    min_sdk_version: "30",
186    sdk_version: "module_current",
187    srcs: [
188        "java/com/android/adservices/shared/common/**/*.java",
189    ],
190    exclude_srcs: [
191        "java/com/android/adservices/shared/common/exception/*.java",
192        "java/com/android/adservices/shared/common/system/*.java",
193    ],
194    static_libs: [
195        "adservices-shared-util",
196        "modules-utils-preconditions",
197    ],
198    libs: [
199        "framework-annotations-lib",
200        "jsr305", // for @ThreadSafe",
201    ],
202    apex_available: [
203        "com.android.adservices",
204        "com.android.extservices",
205        "com.android.ondevicepersonalization",
206    ],
207    lint: {
208        extra_check_modules: ["AdServicesProdLintChecker"],
209    },
210}
211
212java_library {
213    name: "adservices-shared-exceptions",
214    min_sdk_version: "30",
215    sdk_version: "module_current",
216    srcs: [
217        "java/com/android/adservices/shared/common/exception/*.java",
218    ],
219    apex_available: [
220        "com.android.adservices",
221        "com.android.extservices",
222        "com.android.ondevicepersonalization",
223    ],
224    lint: {
225        extra_check_modules: ["AdServicesProdLintChecker"],
226    },
227}
228
229// Provides helper to be used only by system-server classes
230java_library {
231    name: "adservices-shared-system-common",
232    min_sdk_version: "33",
233    sdk_version: "module_current",
234    srcs: [
235        "java/com/android/adservices/shared/system/**/*.java",
236    ],
237    libs: [
238        "error_prone_annotations", // for @FormatMethod
239        "framework-annotations-lib", // for @VisibleForTesting
240    ],
241    apex_available: [
242        "com.android.adservices",
243        // extservices doesn't have system-server classes
244        "com.android.ondevicepersonalization",
245    ],
246    visibility: [
247        // Available for its own tests...
248        "//packages/modules/AdServices/shared/tests/device-side:__subpackages__",
249
250        // ... and system-server projects
251        "//packages/modules/AdServices/adservices/service:__subpackages__",
252        "//packages/modules/AdServices/sdksandbox/service:__subpackages__",
253        "//packages/modules/OnDevicePersonalization/systemservice:__subpackages__",
254    ],
255    lint: {
256        extra_check_modules: ["AdServicesProdLintChecker"],
257    },
258}
259
260filegroup {
261    name: "adservices-shared-flag-annotation-sources",
262    srcs: [
263        "java/com/android/adservices/shared/common/flags/ConfigFlag.java",
264        "java/com/android/adservices/shared/common/flags/FeatureFlag.java",
265    ],
266    visibility: [
267        "//packages/modules/AdServices/adservices:__subpackages__",
268        "//packages/modules/OnDevicePersonalization:__subpackages__",
269    ],
270    path: "java",
271}
272
273java_library {
274    name: "adservices-shared-proto-utils",
275    min_sdk_version: "30",
276    sdk_version: "module_current",
277    srcs: [
278        "java/com/android/adservices/shared/util/ProtoParser.java",
279        "java/com/android/adservices/shared/errorlogging/AdServicesErrorLogger.java",
280    ],
281    static_libs: [
282        "adservices-shared-proto-lite",
283        "adservices-shared-util",
284        "adservices-statsd",
285    ],
286    libs: [
287        "framework-annotations-lib",
288    ],
289    apex_available: [
290        "com.android.adservices",
291        "com.android.extservices",
292        "com.android.ondevicepersonalization",
293    ],
294    lint: {
295        extra_check_modules: ["AdServicesProdLintChecker"],
296    },
297}
298
299// NOTE: this util library only have one Preconditions class now. If we add more classes, we should
300// consider splitting this into a specific preconditions library. (if it gets bigger and/or if new
301// classes adds external dependencies)
302java_library {
303    name: "adservices-shared-util",
304    min_sdk_version: "30",
305    sdk_version: "module_current",
306    srcs: [
307        "java/com/android/adservices/shared/util/*.java",
308    ],
309    exclude_srcs: [
310        "java/com/android/adservices/shared/util/ProtoParser.java",
311    ],
312    libs: [
313        "framework-annotations-lib",
314    ],
315    static_libs: [
316        "modules-utils-build",
317        "error_prone_annotations", // For @FormatMethod
318    ],
319    apex_available: [
320        "com.android.adservices",
321        "com.android.extservices",
322        "com.android.ondevicepersonalization",
323    ],
324    lint: {
325        extra_check_modules: ["AdServicesProdLintChecker"],
326    },
327}
328
329java_library {
330    name: "adservices-shared-metriclogger",
331    min_sdk_version: "30",
332    sdk_version: "module_current",
333    srcs: [
334        "java/com/android/adservices/shared/metriclogger/**/*.java",
335    ],
336    plugins: [
337        "auto_value_plugin",
338        "auto_annotation_plugin",
339    ],
340    libs: [
341        "framework-annotations-lib",
342        "auto_value_annotations",
343        "guava",
344    ],
345    static_libs: [
346        "adservices-shared-error-logging",
347        "adservices-shared-util",
348        "modules-utils-build",
349        "modules-utils-preconditions",
350        "adservices-shared-proto-lite",
351        "androidx.annotation_annotation",
352    ],
353    visibility: [
354        "//packages/modules/AdServices:__subpackages__",
355        "//packages/modules/ExtServices:__subpackages__",
356        "//packages/modules/OnDevicePersonalization:__subpackages__",
357    ],
358    apex_available: [
359        "com.android.adservices",
360        "com.android.extservices",
361        "com.android.ondevicepersonalization",
362    ],
363    lint: {
364        extra_check_modules: ["AdServicesProdLintChecker"],
365        baseline_filename: "lint-baseline-adservices-shared-storage.xml", // TODO(b/356688417): Clean up baseline file.
366    },
367}
368