blob: 090ec65b2048e6868980cc14a4a4ece992dc2ce9 [file] [log] [blame]
Makoto Onuki3aefe332023-10-06 10:02:07 -07001package {
2 // See: http://go/android-license-faq
3 // A large-scale-change added 'default_applicable_licenses' to import
4 // all of the 'license_kinds' from "frameworks_base_license"
5 // to get the below license kinds:
6 // SPDX-license-identifier-Apache-2.0
7 default_applicable_licenses: ["frameworks_base_license"],
John Wu98346162024-09-26 22:59:40 +00008
9 // OWNER: g/ravenwood
10 // Bug component: 25698
Makoto Onuki9e4c0722024-10-14 15:32:09 -070011 default_team: "trendy_team_ravenwood",
Makoto Onuki3aefe332023-10-06 10:02:07 -070012}
13
14filegroup {
John Wu25110732024-10-10 22:40:49 +000015 name: "ravenwood-common-policies",
16 srcs: [
17 "texts/ravenwood-common-policies.txt",
18 ],
19 visibility: ["//visibility:private"],
20}
21
22filegroup {
Makoto Onukidfade842024-05-02 15:42:08 -070023 name: "ravenwood-services-policies",
24 srcs: [
25 "texts/ravenwood-services-policies.txt",
26 ],
John Wu2abff412024-10-10 21:58:26 +000027 visibility: ["//visibility:private"],
Makoto Onukidfade842024-05-02 15:42:08 -070028}
29
30filegroup {
31 name: "ravenwood-framework-policies",
32 srcs: [
33 "texts/ravenwood-framework-policies.txt",
34 ],
John Wu2abff412024-10-10 21:58:26 +000035 visibility: ["//visibility:private"],
Makoto Onukidfade842024-05-02 15:42:08 -070036}
37
38filegroup {
39 name: "ravenwood-standard-options",
40 srcs: [
41 "texts/ravenwood-standard-options.txt",
42 ],
John Wu2abff412024-10-10 21:58:26 +000043 visibility: ["//visibility:private"],
Makoto Onukidfade842024-05-02 15:42:08 -070044}
45
46filegroup {
47 name: "ravenwood-annotation-allowed-classes",
48 srcs: [
49 "texts/ravenwood-annotation-allowed-classes.txt",
50 ],
John Wu2abff412024-10-10 21:58:26 +000051 visibility: ["//visibility:private"],
Makoto Onukidfade842024-05-02 15:42:08 -070052}
53
Makoto Onukidf9cd262024-05-16 15:44:38 -070054// This and the next module contain the same classes with different implementations.
55// "ravenwood-runtime-common-device" will be statically linked in device side tests.
56// "ravenwood-runtime-common-ravenwood" will only exist in ravenwood-runtime, which will take
57// precedence even if the test jar (accidentally) contains "ravenwood-runtime-common-device".
58// "ravenwood-runtime-common" uses it to detect if the rutime is Ravenwood or not.
59java_library {
60 name: "ravenwood-runtime-common-ravenwood",
61 host_supported: true,
62 sdk_version: "core_current",
63 srcs: [
64 "runtime-common-ravenwood-src/**/*.java",
65 ],
Makoto Onukid619e432024-07-19 16:45:02 -070066 visibility: [
67 // Some tests need to access the utilities.
68 ":__subpackages__",
69 ],
Makoto Onukidf9cd262024-05-16 15:44:38 -070070}
71
72java_library {
73 name: "ravenwood-runtime-common-device",
74 host_supported: true,
75 sdk_version: "core_current",
76 srcs: [
77 "runtime-common-device-src/**/*.java",
78 ],
79 visibility: ["//visibility:private"],
80}
81
82java_library {
83 name: "ravenwood-runtime-common",
84 host_supported: true,
85 sdk_version: "core_current",
86 srcs: [
87 "runtime-common-src/**/*.java",
88 ],
89 libs: [
90 "ravenwood-runtime-common-ravenwood",
91 ],
John Wu98346162024-09-26 22:59:40 +000092 static_libs: [
93 "framework-annotations-lib", // should it be "libs" instead?
94 ],
Makoto Onukidf9cd262024-05-16 15:44:38 -070095 visibility: ["//visibility:private"],
96}
97
Makoto Onuki053eac82024-02-13 10:31:18 -080098java_library_host {
99 name: "ravenwood-helper-libcore-runtime.host",
100 srcs: [
101 "runtime-helper-src/libcore-fake/**/*.java",
102 ],
Makoto Onuki172f2a02024-10-18 11:03:02 -0700103 libs: [
104 "app-compat-annotations",
105 ],
Makoto Onukidf9cd262024-05-16 15:44:38 -0700106 static_libs: [
107 "ravenwood-runtime-common",
108 ],
Makoto Onuki053eac82024-02-13 10:31:18 -0800109 visibility: ["//visibility:private"],
110}
111
112java_host_for_device {
113 name: "ravenwood-helper-libcore-runtime",
114 libs: [
115 "ravenwood-helper-libcore-runtime.host",
116 ],
117 visibility: ["//visibility:private"],
118}
119
120java_library {
121 name: "ravenwood-helper-framework-runtime",
122 srcs: [
123 "runtime-helper-src/framework/**/*.java",
124 ],
Makoto Onukidf9cd262024-05-16 15:44:38 -0700125 static_libs: [
126 "ravenwood-runtime-common",
Makoto Onuki172f2a02024-10-18 11:03:02 -0700127 "androidx.annotation_annotation",
Makoto Onukidf9cd262024-05-16 15:44:38 -0700128 ],
Makoto Onuki053eac82024-02-13 10:31:18 -0800129 libs: [
130 "framework-minus-apex.ravenwood",
John Wu0bbc5442024-10-17 08:46:06 +0000131 "framework-configinfrastructure.ravenwood",
John Wu98346162024-09-26 22:59:40 +0000132 "ravenwood-helper-libcore-runtime",
Makoto Onuki053eac82024-02-13 10:31:18 -0800133 ],
John Wu98346162024-09-26 22:59:40 +0000134 sdk_version: "core_current",
Makoto Onuki053eac82024-02-13 10:31:18 -0800135 visibility: ["//visibility:private"],
136}
137
138// Combine ravenwood-helper-*-runtime and create a single library, which we include
139// in the ravenwood runtime.
140// We do it this way rather than including the individual jars in the runtime, because
141// for some reason we couldn't include a java_host_for_device module in the ravenwood runtime.
142java_library {
143 name: "ravenwood-helper-runtime",
144 defaults: ["ravenwood-internal-only-visibility-java"],
145 static_libs: [
146 "ravenwood-helper-framework-runtime",
147 "ravenwood-helper-libcore-runtime",
148 ],
149}
150
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700151java_library {
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700152 name: "ravenwood-junit-impl",
153 srcs: [
154 "junit-src/**/*.java",
155 "junit-impl-src/**/*.java",
156 ],
Jeff Sharkeyc91451a2024-01-29 10:55:45 -0700157 static_libs: [
158 "androidx.test.monitor-for-device",
Makoto Onukidf9cd262024-05-16 15:44:38 -0700159 "ravenwood-runtime-common",
Jeff Sharkeyc91451a2024-01-29 10:55:45 -0700160 ],
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700161 libs: [
Jihoon Kang1e37ed32024-08-30 00:29:12 +0000162 "android.test.mock.impl",
Jeff Sharkey5e210d72023-11-10 11:22:05 -0700163 "framework-minus-apex.ravenwood",
Jeff Sharkey8a922ec2024-02-27 12:36:36 -0700164 "ravenwood-framework",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700165 "services.core.ravenwood",
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700166 "junit",
John Wu98346162024-09-26 22:59:40 +0000167 "framework-annotations-lib",
168 "ravenwood-helper-framework-runtime",
169 "ravenwood-helper-libcore-runtime",
John Wu9c7227e2024-10-09 00:29:02 +0000170 "hoststubgen-helper-runtime.ravenwood",
171 "mockito-ravenwood-prebuilt",
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700172 ],
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700173 visibility: ["//frameworks/base"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700174 jarjar_rules: ":ravenwood-services-jarjar-rules",
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700175}
176
John Wu98346162024-09-26 22:59:40 +0000177java_device_for_host {
178 name: "ravenwood-junit-impl-for-ravenizer",
179 libs: [
180 "ravenwood-junit-impl",
181 ],
182 visibility: [":__subpackages__"],
183}
184
Jeff Sharkey7037e352024-02-27 14:22:24 -0700185// Separated out from ravenwood-junit-impl since it needs to compile
186// against `module_current`
187java_library {
188 name: "ravenwood-junit-impl-flag",
189 srcs: [
190 "junit-flag-src/**/*.java",
191 ],
Liana Kazanova0c16dd32024-06-25 20:40:04 +0000192 sdk_version: "module_current",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700193 libs: [
194 "junit",
195 "flag-junit",
196 ],
197 visibility: ["//visibility:public"],
198}
199
Makoto Onuki8df6bd02024-08-01 12:38:50 -0700200// Carefully compiles against only module_current to support tests that
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700201// want to verify they're unbundled. The "impl" library above is what
202// ships inside the Ravenwood environment to actually drive any API
203// access to implementation details.
Makoto Onuki8df6bd02024-08-01 12:38:50 -0700204// We can't use test_current here because this library needs to be statically
205// linked to mainline tests as well, which can't use test APIs because they
206// need to be able to run on multiple API levels.
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700207java_library {
208 name: "ravenwood-junit",
209 srcs: [
210 "junit-src/**/*.java",
211 "junit-stub-src/**/*.java",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700212 "junit-flag-src/**/*.java",
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700213 ],
Felipe Lemedfbfb232024-07-23 05:31:38 +0000214 sdk_version: "module_current",
Makoto Onukidf9cd262024-05-16 15:44:38 -0700215 static_libs: [
216 "ravenwood-runtime-common",
217 "ravenwood-runtime-common-device",
218 ],
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700219 libs: [
220 "junit",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700221 "flag-junit",
John Wu98346162024-09-26 22:59:40 +0000222 "framework-annotations-lib",
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700223 ],
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700224 visibility: ["//visibility:public"],
225}
Jeff Sharkey4ee8a652023-11-14 08:45:56 -0700226
Jeff Sharkey8a922ec2024-02-27 12:36:36 -0700227// Library used to publish a handful of `android.ravenwood` APIs into
228// the Ravenwood BCP; we don't want to publish these APIs into the BCP
229// on physical devices, which is why this is a separate library
230java_library {
231 name: "ravenwood-framework",
232 srcs: [
233 "framework-src/**/*.java",
234 ],
235 libs: [
236 "framework-minus-apex.ravenwood",
237 ],
238 sdk_version: "core_current",
239 visibility: ["//visibility:public"],
240}
241
Jeff Sharkeyc91451a2024-01-29 10:55:45 -0700242java_host_for_device {
243 name: "androidx.test.monitor-for-device",
244 libs: [
245 "androidx.test.monitor-for-host",
246 ],
247}
248
249java_device_for_host {
250 name: "androidx.test.monitor-for-host",
251 libs: [
252 "androidx.test.monitor",
253 ],
254}
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700255
256filegroup {
Makoto Onukif38d5992024-05-30 10:40:50 -0700257 name: "ravenwood-framework-jarjar-rules",
258 srcs: ["texts/ravenwood-framework-jarjar-rules.txt"],
259 visibility: ["//frameworks/base"],
260}
261
262filegroup {
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700263 name: "ravenwood-services-jarjar-rules",
Makoto Onukia3fe5622024-03-27 13:08:32 -0700264 srcs: ["texts/ravenwood-services-jarjar-rules.txt"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700265 visibility: ["//frameworks/base"],
266}
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -0700267
John Wu5e13e252024-09-25 00:43:28 +0000268cc_defaults {
269 name: "ravenwood_jni_defaults",
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700270 cflags: [
271 "-Wall",
272 "-Werror",
273 "-Wno-unused-parameter",
274 "-Wthread-safety",
275 ],
John Wu5e13e252024-09-25 00:43:28 +0000276 static_libs: [
277 "libnativehelper_jvm",
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700278 ],
John Wu5e13e252024-09-25 00:43:28 +0000279 shared_libs: [
280 "liblog",
281 ],
282}
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700283
John Wu5e13e252024-09-25 00:43:28 +0000284// We need this as a separate library because we need to overload the
285// sysprop symbols before libbase is loaded into the process
286cc_library_host_shared {
287 name: "libravenwood_sysprop",
288 defaults: ["ravenwood_jni_defaults"],
289 srcs: ["runtime-jni/ravenwood_sysprop.cpp"],
290}
291
292cc_library_host_shared {
293 name: "libravenwood_runtime",
294 defaults: ["ravenwood_jni_defaults"],
295 srcs: [
296 "runtime-jni/ravenwood_runtime.cpp",
297 "runtime-jni/ravenwood_os_constants.cpp",
298 ],
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700299 shared_libs: [
300 "libbase",
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700301 "libutils",
302 "libcutils",
303 ],
304 visibility: ["//frameworks/base"],
305}
306
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -0700307// For collecting the *stats.csv files in a known directory under out/host/linux-x86/testcases/.
308// The "test" just shows the available stats filenames.
309sh_test_host {
310 name: "ravenwood-stats-checker",
Makoto Onukia3fe5622024-03-27 13:08:32 -0700311 src: "scripts/ravenwood-stats-checker.sh",
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -0700312 test_suites: ["general-tests"],
313 data: [
John Wu98346162024-09-26 22:59:40 +0000314 ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_stats.csv}",
315 ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_apis.csv}",
316 ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_keep_all.txt}",
317 ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_dump.txt}",
Makoto Onuki134a4152024-06-26 14:21:12 -0700318 ":services.core.ravenwood-base{hoststubgen_services.core_stats.csv}",
319 ":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}",
320 ":services.core.ravenwood-base{hoststubgen_services.core_keep_all.txt}",
321 ":services.core.ravenwood-base{hoststubgen_services.core_dump.txt}",
Makoto Onukib4f5f9e2024-10-22 14:51:17 -0700322
323 ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_stats.csv}",
324 ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_apis.csv}",
325 ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_keep_all.txt}",
326 ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_dump.txt}",
327
328 ":framework-statsd.ravenwood-base{framework-statsd_stats.csv}",
329 ":framework-statsd.ravenwood-base{framework-statsd_apis.csv}",
330 ":framework-statsd.ravenwood-base{framework-statsd_keep_all.txt}",
331 ":framework-statsd.ravenwood-base{framework-statsd_dump.txt}",
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -0700332 ],
333}
Makoto Onukie5e97272024-05-23 10:49:31 -0700334
335java_library {
336 name: "services.fakes.ravenwood-jarjar",
337 installable: false,
338 srcs: [":services.fakes-sources"],
339 libs: [
340 "ravenwood-framework",
341 "services.core.ravenwood",
342 ],
343 jarjar_rules: ":ravenwood-services-jarjar-rules",
344 visibility: ["//visibility:private"],
345}
346
347java_library {
348 name: "mockito-ravenwood-prebuilt",
349 installable: false,
350 static_libs: [
351 "mockito-robolectric-prebuilt",
352 ],
353}
354
355java_library {
356 name: "inline-mockito-ravenwood-prebuilt",
357 installable: false,
358 static_libs: [
359 "inline-mockito-robolectric-prebuilt",
360 ],
361}
362
John Wu2abff412024-10-10 21:58:26 +0000363// JARs in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
364// Rename some of the dependencies to make sure they're included in the intended order.
365
366java_library {
367 name: "100-framework-minus-apex.ravenwood",
368 installable: false,
369 static_libs: ["framework-minus-apex.ravenwood"],
370 visibility: ["//visibility:private"],
371}
372
373java_library {
374 name: "200-kxml2-android",
375 installable: false,
376 static_libs: ["kxml2-android"],
377 visibility: ["//visibility:private"],
378}
379
380java_library {
381 name: "z00-all-updatable-modules-system-stubs",
382 installable: false,
383 static_libs: ["all-updatable-modules-system-stubs-for-host"],
384 visibility: ["//visibility:private"],
385}
386
Makoto Onukie5e97272024-05-23 10:49:31 -0700387android_ravenwood_libgroup {
388 name: "ravenwood-runtime",
Makoto Onukid619e432024-07-19 16:45:02 -0700389 data: [
John Wud69d3ee2024-10-15 23:58:01 +0000390 ":system-build.prop",
John Wud0371fa2024-09-13 20:58:49 +0000391 ":framework-res",
392 ":ravenwood-empty-res",
Makoto Onuki8ca3b7f2024-09-17 09:45:39 -0700393 ":framework-platform-compat-config",
394 ":services-platform-compat-config",
Makoto Onukid619e432024-07-19 16:45:02 -0700395 ],
Makoto Onukie5e97272024-05-23 10:49:31 -0700396 libs: [
397 "100-framework-minus-apex.ravenwood",
398 "200-kxml2-android",
399
400 "ravenwood-runtime-common-ravenwood",
401
402 "android.test.mock.ravenwood",
403 "ravenwood-helper-runtime",
404 "hoststubgen-helper-runtime.ravenwood",
405 "services.core.ravenwood-jarjar",
406 "services.fakes.ravenwood-jarjar",
407
Makoto Onuki953445b2024-07-19 11:21:29 -0700408 // ICU
409 "core-icu4j-for-host.ravenwood",
410 "icu4j-icudata-jarjar",
411 "icu4j-icutzdata-jarjar",
412
John Wu0bbc5442024-10-17 08:46:06 +0000413 // DeviceConfig
414 "framework-configinfrastructure.ravenwood",
415
Makoto Onukib4f5f9e2024-10-22 14:51:17 -0700416 // StatsD
417 "framework-statsd.ravenwood",
418
Makoto Onukie5e97272024-05-23 10:49:31 -0700419 // Provide runtime versions of utils linked in below
420 "junit",
421 "truth",
422 "flag-junit",
423 "ravenwood-framework",
424 "ravenwood-junit-impl",
425 "ravenwood-junit-impl-flag",
426 "mockito-ravenwood-prebuilt",
427 "inline-mockito-ravenwood-prebuilt",
428
429 // It's a stub, so it should be towards the end.
430 "z00-all-updatable-modules-system-stubs",
431 ],
432 jni_libs: [
John Wu5e13e252024-09-25 00:43:28 +0000433 // Libraries has to be loaded in the following order
434 "libravenwood_sysprop",
Makoto Onukie5e97272024-05-23 10:49:31 -0700435 "libravenwood_runtime",
John Wu5e13e252024-09-25 00:43:28 +0000436 "libandroid_runtime",
Makoto Onukie5e97272024-05-23 10:49:31 -0700437 ],
438}
439
440android_ravenwood_libgroup {
441 name: "ravenwood-utils",
442 libs: [
443 "junit",
444 "truth",
445 "flag-junit",
446 "ravenwood-framework",
447 "ravenwood-junit",
448 "mockito-ravenwood-prebuilt",
449 "inline-mockito-ravenwood-prebuilt",
450 ],
451}
John Wu2abff412024-10-10 21:58:26 +0000452
453build = [
454 "Framework.bp",
455]