• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2022 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
19genrule {
20    name: "statslog-adservices-java-gen",
21    tools: ["stats-log-api-gen"],
22    cmd: "$(location stats-log-api-gen) --java $(out) --module adservices" +
23        " --javaPackage com.android.adservices.service.stats --javaClass AdServicesStatsLog",
24    out: ["com/android/adservices/service/stats/AdServicesStatsLog.java"],
25}
26
27// Converts the text proto Cobalt registry into a binary proto.
28genrule {
29    name: "cobalt-registry-binarypb-gen",
30    srcs: [
31        "resources/cobalt_registry.textpb",
32        ":adservices-cobalt-proto",
33    ],
34    out: ["cobalt_registry.binarypb"],
35    tools: ["aprotoc"],
36    cmd: "$(location aprotoc) --encode=cobalt.CobaltRegistry " +
37        "--proto_path=packages/modules/AdServices/adservices/libraries/cobalt/proto " +
38        "packages/modules/AdServices/adservices/libraries/cobalt/proto/cobalt_registry.proto " +
39        "< $(location resources/cobalt_registry.textpb) > $(out)",
40}
41
42// Outputs a class confirming the Cobalt registry asset is validated, conditioned on
43// the asset binary proto and text proto being the same.
44genrule {
45    name: "cobalt-registry-validated-java",
46    srcs: [
47        ":checked_in_cobalt_registry_binarypb",
48        ":cobalt-registry-binarypb-gen",
49        "resources/CobaltRegistryValidated.java",
50    ],
51    // Compare the generated binary proto to the asset binary proto and fail if they
52    // are different. Additionally, print a message with instructions on how to update
53    // the asset binary proto.
54    cmd: "cp $(location resources/CobaltRegistryValidated.java) $(out) && " +
55        "cmp -s $(location :cobalt-registry-binarypb-gen) $(location :checked_in_cobalt_registry_binarypb) " +
56        "|| (echo -e '\\n\\n################################################################\\n#\\n" +
57        "#  ERROR: Binary registry is out of date.  To update it, run:\\n#\\n" +
58        "#  cp $(location :cobalt-registry-binarypb-gen) " +
59        "packages/modules/AdServices/adservices/apk/assets/cobalt/cobalt_registry.binarypb\\n#\\n" +
60        "################################################################\\n\\n' >&2 && false)",
61    out: ["com/android/adservices/cobalt/CobaltRegistryValidated.java"],
62}
63
64filegroup {
65    name: "adservices-service-core-sources",
66    srcs: [
67        "java/**/*.java",
68    ],
69    path: "java",
70    visibility: [
71        "//packages/modules/AdServices/adservices/tests:__subpackages__",
72        "//package/modules/ExtServices/extservices:__subpackages__",
73    ],
74}
75
76filegroup {
77    name: "adservices-service-core-jni-sources",
78    srcs: [
79        "jni/java/**/*.java",
80    ],
81    path: "jni",
82    visibility: [
83        "//packages/modules/AdServices/adservices:__subpackages__",
84    ],
85}
86
87filegroup {
88    name: "adservices-service-core-flags-constants-sources",
89    srcs: [
90        "java/com/android/adservices/cobalt/CobaltConstants.java",
91        "java/com/android/adservices/service/CommonFlagsConstants.java",
92        "java/com/android/adservices/service/CommonDebugFlagsConstants.java",
93        "java/com/android/adservices/service/DebugFlagsConstants.java",
94        "java/com/android/adservices/service/FlagsConstants.java",
95    ],
96    path: "java",
97    visibility: [
98        "//packages/modules/AdServices/adservices/tests/test-util",
99    ],
100}
101
102// TODO(b/306522832): move to Shared/ and change packages (to something like
103// c.a.ads.flags), although we'd need to be consider whether to make sure it's
104// used only by adservices itself, not ODP (or SdkSandbox)
105filegroup {
106    name: "adservices-service-common-flags-sources",
107    srcs: [
108        "java/com/android/adservices/service/CommonDebugFlags.java",
109        "java/com/android/adservices/service/CommonDebugFlagsConstants.java",
110        "java/com/android/adservices/service/CommonFlagsConstants.java",
111    ],
112    path: "java",
113    visibility: [
114        "//packages/modules/AdServices/adservices/service",
115    ],
116}
117
118filegroup {
119    name: "adservices-service-core-phflags-sources",
120    srcs: [
121        ":adservices-service-core-flags-constants-sources",
122        ":adservices-service-common-flags-sources",
123        "java/com/android/adservices/service/Flags.java",
124        "java/com/android/adservices/service/FlagsFactory.java",
125        "java/com/android/adservices/service/PhFlags.java",
126        "java/com/android/adservices/service/DebugFlags.java",
127    ],
128    path: "java",
129    visibility: [
130        "//packages/modules/AdServices/adservices/tests/test-util",
131    ],
132}
133
134android_library {
135    name: "adservices-service-core",
136    sdk_version: "module_current",
137    min_sdk_version: "30",
138    srcs: [
139        ":adservices-service-core-sources",
140        ":adservices-service-core-jni-sources",
141        ":adservices-shared-sideless-flags-sources",
142        ":cobalt-registry-validated-java",
143        ":statslog-adservices-java-gen",
144    ],
145    manifest: "AndroidManifest.xml",
146    plugins: [
147        "androidx.appsearch_appsearch-compiler-plugin",
148        "androidx.room_room-compiler-plugin",
149        "auto_oneof_plugin",
150        "auto_value_plugin",
151        "auto_annotation_plugin",
152    ],
153    javacflags: [
154        "-Aroom.schemaLocation=packages/modules/AdServices/adservices/service-core/schemas",
155    ],
156    libs: [
157        "androidx.room_room-runtime",
158        "framework-annotations-lib", // For @SystemApi, etc
159        "framework-adservices.impl",
160        "framework-configinfrastructure.stubs.module_lib",
161        "framework-sdksandbox.impl",
162        "framework-ondevicepersonalization.stubs.module_lib",
163        "framework-statsd.stubs.module_lib", // For WW logging
164        "jsr305",
165        "auto_value_annotations",
166    ],
167    static_libs: [
168        "androidx.concurrent_concurrent-futures",
169        "androidx.annotation_annotation",
170        "androidx.appsearch_appsearch",
171        "androidx.appsearch_appsearch-platform-storage",
172        "cbor-java",
173        "mobile_data_downloader_lib",
174        "modules-utils-preconditions",
175        "tflite_support_classifiers_java",
176        "mobile_data_downloader_lib",
177        "androidx.webkit_webkit",
178        "androidx.javascriptengine_javascriptengine",
179        "adservices-cobalt",
180        "adservices-proto-lite",
181        "adservices-grpclib-lite",
182        "adservices-shared-common",
183        "adservices-shared-datastore",
184        "adservices-shared-error-logging",
185        "adservices-shared-metriclogger",
186        "adservices-shared-spe",
187        "adservices-shared-storage",
188        "adservices-shared-util",
189        "modules-utils-build",
190    ],
191    jarjar_rules: "jarjar-rules.txt",
192    apex_available: [
193        "com.android.adservices",
194        "com.android.extservices",
195    ],
196    lint: {
197        extra_check_modules: ["AdServicesProdLintChecker"],
198        baseline_filename: "lint-baseline.xml",
199    },
200}
201
202cc_library_shared {
203    name: "libhpke_jni",
204    min_sdk_version: "30",
205    sdk_version: "current",
206    stl: "libc++_static",
207    cflags: [
208        "-Werror",
209        "-Wno-unused-parameter",
210        "-Wno-unused-but-set-variable",
211    ],
212    srcs: [
213        "jni/cpp/hpke_jni.cpp",
214        "jni/cpp/ohttp_jni.cpp",
215        "jni/cpp/act_jni.cpp",
216    ],
217    include_dirs: ["packages/modules/AdServices/adservices/service-core/jni/include"],
218    header_libs: ["jni_headers"],
219    shared_libs: [
220        "liblog",
221    ],
222    static_libs: [
223        "libact",
224        "libcrypto_static",
225    ],
226    version_script: "jni/version-script.lds",
227    apex_available: [
228        "//apex_available:platform",
229        "com.android.adservices",
230        "com.android.extservices",
231    ],
232    visibility: [
233        "//packages/modules/AdServices:__subpackages__",
234        "//packages/modules/ExtServices:__subpackages__",
235    ],
236}
237
238// Schemas needs to be bundled via this android_library since service-core unit tests for schema
239// migration will need this.
240android_library {
241    name: "adservices-service-core-schema",
242    sdk_version: "module_current",
243    min_sdk_version: "30",
244    asset_dirs: [
245        "schemas",
246    ],
247    // Must use EmptyManifest.xml since this will be used by the service-core tests. If we use the
248    // normal "AndroidManifest.xml", we may introduce potential error like redeclare permissions.
249    // See b/228270294 for the error about duplicated permissions.
250    manifest: "EmptyManifest.xml",
251    lint: {
252        baseline_filename: "lint-baseline2.xml",
253    },
254}
255