• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (C) 2024 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// This file hosts all the genrule and module definitions for all Android specific
16// code that needs further post-processing by hoststubgen to support Ravenwood.
17
18/////////////////////////
19// framework-minus-apex
20/////////////////////////
21
22// Process framework-minus-apex with hoststubgen for Ravenwood.
23// This step takes several tens of seconds, so we manually shard it to multiple modules.
24// All the copies have to be kept in sync.
25// TODO: Do the sharding better, either by making hostsubgen support sharding natively, or
26// making a better build rule.
27
28genrule_defaults {
29    name: "framework-minus-apex.ravenwood-base_defaults",
30    tools: ["hoststubgen"],
31    srcs: [
32        ":framework-minus-apex-for-host",
33        ":ravenwood-common-policies",
34        ":ravenwood-framework-policies",
35        ":ravenwood-standard-options",
36        ":ravenwood-standard-annotations",
37        ":ravenwood-annotation-allowed-classes",
38    ],
39    out: [
40        "ravenwood.jar",
41        "hoststubgen_framework-minus-apex.log",
42    ],
43    visibility: ["//visibility:private"],
44}
45
46framework_minus_apex_cmd = "$(location hoststubgen) " +
47    "@$(location :ravenwood-standard-options) " +
48    "@$(location :ravenwood-standard-annotations) " +
49    "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
50    "--out-jar $(location ravenwood.jar) " +
51    "--in-jar $(location :framework-minus-apex-for-host) " +
52    "--policy-override-file $(location :ravenwood-common-policies) " +
53    "--policy-override-file $(location :ravenwood-framework-policies) " +
54    "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) "
55
56java_genrule {
57    name: "framework-minus-apex.ravenwood-base_X0",
58    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
59    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 0",
60}
61
62java_genrule {
63    name: "framework-minus-apex.ravenwood-base_X1",
64    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
65    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 1",
66}
67
68java_genrule {
69    name: "framework-minus-apex.ravenwood-base_X2",
70    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
71    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 2",
72}
73
74java_genrule {
75    name: "framework-minus-apex.ravenwood-base_X3",
76    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
77    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 3",
78}
79
80java_genrule {
81    name: "framework-minus-apex.ravenwood-base_X4",
82    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
83    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 4",
84}
85
86java_genrule {
87    name: "framework-minus-apex.ravenwood-base_X5",
88    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
89    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 5",
90}
91
92java_genrule {
93    name: "framework-minus-apex.ravenwood-base_X6",
94    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
95    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 6",
96}
97
98java_genrule {
99    name: "framework-minus-apex.ravenwood-base_X7",
100    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
101    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 7",
102}
103
104java_genrule {
105    name: "framework-minus-apex.ravenwood-base_X8",
106    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
107    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 8",
108}
109
110java_genrule {
111    name: "framework-minus-apex.ravenwood-base_X9",
112    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
113    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 9",
114}
115
116// Build framework-minus-apex.ravenwood-base without sharding.
117// We extract the various dump files from this one, rather than the sharded ones, because
118// some dumps use the output from other classes (e.g. base classes) which may not be in the
119// same shard. Also some of the dump files ("apis") may be slow even when sharded, because
120// the output contains the information from all the input classes, rather than the output classes.
121// Not using sharding is fine for this module because it's only used for collecting the
122// dump / stats files, which don't have to happen regularly.
123java_genrule {
124    name: "framework-minus-apex.ravenwood-base_all",
125    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
126    cmd: framework_minus_apex_cmd +
127        "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
128        "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
129
130        "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
131        "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) ",
132
133    out: [
134        "hoststubgen_framework-minus-apex_keep_all.txt",
135        "hoststubgen_framework-minus-apex_dump.txt",
136        "hoststubgen_framework-minus-apex_stats.csv",
137        "hoststubgen_framework-minus-apex_apis.csv",
138    ],
139}
140
141// Marge all the sharded jars
142java_genrule {
143    name: "framework-minus-apex.ravenwood",
144    defaults: ["ravenwood-internal-only-visibility-java"],
145    cmd: "$(location merge_zips) $(out) $(in)",
146    tools: ["merge_zips"],
147    srcs: [
148        ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}",
149        ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}",
150        ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}",
151        ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}",
152        ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}",
153        ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}",
154        ":framework-minus-apex.ravenwood-base_X6{ravenwood.jar}",
155        ":framework-minus-apex.ravenwood-base_X7{ravenwood.jar}",
156        ":framework-minus-apex.ravenwood-base_X8{ravenwood.jar}",
157        ":framework-minus-apex.ravenwood-base_X9{ravenwood.jar}",
158    ],
159    out: [
160        "framework-minus-apex.ravenwood.jar",
161    ],
162}
163
164//////////////////
165// services.core
166//////////////////
167
168java_library {
169    name: "services.core-for-host",
170    installable: false, // host only jar.
171    static_libs: [
172        "services.core",
173    ],
174    sdk_version: "core_platform",
175    visibility: ["//visibility:private"],
176}
177
178java_genrule {
179    name: "services.core.ravenwood-base",
180    tools: ["hoststubgen"],
181    cmd: "$(location hoststubgen) " +
182        "@$(location :ravenwood-standard-options) " +
183        "@$(location :ravenwood-standard-annotations) " +
184
185        "--debug-log $(location hoststubgen_services.core.log) " +
186        "--stats-file $(location hoststubgen_services.core_stats.csv) " +
187        "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
188        "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
189        "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +
190
191        "--out-jar $(location ravenwood.jar) " +
192        "--in-jar $(location :services.core-for-host) " +
193
194        "--policy-override-file $(location :ravenwood-common-policies) " +
195        "--policy-override-file $(location :ravenwood-services-policies) " +
196        "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
197    srcs: [
198        ":services.core-for-host",
199        ":ravenwood-common-policies",
200        ":ravenwood-services-policies",
201        ":ravenwood-standard-options",
202        ":ravenwood-standard-annotations",
203        ":ravenwood-annotation-allowed-classes",
204    ],
205    out: [
206        "ravenwood.jar",
207
208        // Following files are created just as FYI.
209        "hoststubgen_services.core_keep_all.txt",
210        "hoststubgen_services.core_dump.txt",
211
212        "hoststubgen_services.core.log",
213        "hoststubgen_services.core_stats.csv",
214        "hoststubgen_services.core_apis.csv",
215    ],
216    visibility: ["//visibility:private"],
217}
218
219java_genrule {
220    name: "services.core.ravenwood",
221    // This is used by unit tests too (so tests will be able to access HSG-processed implementation)
222    // so it's visible to all.
223    cmd: "cp $(in) $(out)",
224    srcs: [
225        ":services.core.ravenwood-base{ravenwood.jar}",
226    ],
227    out: [
228        "services.core.ravenwood.jar",
229    ],
230}
231
232// TODO(b/313930116) This jarjar is a bit slow. We should use hoststubgen for renaming,
233// but services.core.ravenwood has complex dependencies, so it'll take more than
234// just using hoststubgen "rename"s.
235java_library {
236    name: "services.core.ravenwood-jarjar",
237    defaults: ["ravenwood-internal-only-visibility-java"],
238    installable: false,
239    static_libs: [
240        "services.core.ravenwood",
241    ],
242    jarjar_rules: ":ravenwood-services-jarjar-rules",
243}
244
245///////////////
246// core-icu4j
247///////////////
248
249java_genrule {
250    name: "core-icu4j-for-host.ravenwood-base",
251    tools: ["hoststubgen"],
252    cmd: "$(location hoststubgen) " +
253        "@$(location :ravenwood-standard-options) " +
254        "@$(location :ravenwood-standard-annotations) " +
255
256        "--debug-log $(location hoststubgen_core-icu4j-for-host.log) " +
257        "--stats-file $(location hoststubgen_core-icu4j-for-host_stats.csv) " +
258        "--supported-api-list-file $(location hoststubgen_core-icu4j-for-host_apis.csv) " +
259        "--gen-keep-all-file $(location hoststubgen_core-icu4j-for-host_keep_all.txt) " +
260        "--gen-input-dump-file $(location hoststubgen_core-icu4j-for-host_dump.txt) " +
261
262        "--out-jar $(location ravenwood.jar) " +
263        "--in-jar $(location :core-icu4j-for-host) " +
264
265        "--policy-override-file $(location :ravenwood-common-policies) " +
266        "--policy-override-file $(location :icu-ravenwood-policies) ",
267    srcs: [
268        ":core-icu4j-for-host",
269
270        ":ravenwood-common-policies",
271        ":icu-ravenwood-policies",
272        ":ravenwood-standard-options",
273        ":ravenwood-standard-annotations",
274    ],
275    out: [
276        "ravenwood.jar",
277
278        // Following files are created just as FYI.
279        "hoststubgen_core-icu4j-for-host_keep_all.txt",
280        "hoststubgen_core-icu4j-for-host_dump.txt",
281
282        "hoststubgen_core-icu4j-for-host.log",
283        "hoststubgen_core-icu4j-for-host_stats.csv",
284        "hoststubgen_core-icu4j-for-host_apis.csv",
285    ],
286    visibility: ["//visibility:private"],
287}
288
289java_genrule {
290    name: "core-icu4j-for-host.ravenwood",
291    defaults: ["ravenwood-internal-only-visibility-genrule"],
292    cmd: "cp $(in) $(out)",
293    srcs: [
294        ":core-icu4j-for-host.ravenwood-base{ravenwood.jar}",
295    ],
296    out: [
297        "core-icu4j-for-host.ravenwood.jar",
298    ],
299}
300
301///////////////////////////////////
302// framework-configinfrastructure
303///////////////////////////////////
304
305java_genrule {
306    name: "framework-configinfrastructure.ravenwood-base",
307    tools: ["hoststubgen"],
308    cmd: "$(location hoststubgen) " +
309        "@$(location :ravenwood-standard-options) " +
310        "@$(location :ravenwood-standard-annotations) " +
311
312        "--debug-log $(location framework-configinfrastructure.log) " +
313        "--stats-file $(location framework-configinfrastructure_stats.csv) " +
314        "--supported-api-list-file $(location framework-configinfrastructure_apis.csv) " +
315        "--gen-keep-all-file $(location framework-configinfrastructure_keep_all.txt) " +
316        "--gen-input-dump-file $(location framework-configinfrastructure_dump.txt) " +
317
318        "--out-impl-jar $(location ravenwood.jar) " +
319        "--in-jar $(location :framework-configinfrastructure.impl{.jar}) " +
320
321        "--policy-override-file $(location :ravenwood-common-policies) " +
322        "--policy-override-file $(location :framework-configinfrastructure-ravenwood-policies) ",
323    srcs: [
324        ":framework-configinfrastructure.impl{.jar}",
325
326        ":ravenwood-common-policies",
327        ":framework-configinfrastructure-ravenwood-policies",
328        ":ravenwood-standard-options",
329        ":ravenwood-standard-annotations",
330    ],
331    out: [
332        "ravenwood.jar",
333
334        // Following files are created just as FYI.
335        "framework-configinfrastructure_keep_all.txt",
336        "framework-configinfrastructure_dump.txt",
337
338        "framework-configinfrastructure.log",
339        "framework-configinfrastructure_stats.csv",
340        "framework-configinfrastructure_apis.csv",
341    ],
342    visibility: ["//visibility:private"],
343}
344
345java_genrule {
346    name: "framework-configinfrastructure.ravenwood",
347    defaults: ["ravenwood-internal-only-visibility-genrule"],
348    cmd: "cp $(in) $(out)",
349    srcs: [
350        ":framework-configinfrastructure.ravenwood-base{ravenwood.jar}",
351    ],
352    out: [
353        "framework-configinfrastructure.ravenwood.jar",
354    ],
355}
356
357///////////////////////////////////
358// framework-statsd
359///////////////////////////////////
360
361java_genrule {
362    name: "framework-statsd.ravenwood-base",
363    tools: ["hoststubgen"],
364    cmd: "$(location hoststubgen) " +
365        "@$(location :ravenwood-standard-options) " +
366        "@$(location :ravenwood-standard-annotations) " +
367
368        "--debug-log $(location framework-statsd.log) " +
369        "--stats-file $(location framework-statsd_stats.csv) " +
370        "--supported-api-list-file $(location framework-statsd_apis.csv) " +
371        "--gen-keep-all-file $(location framework-statsd_keep_all.txt) " +
372        "--gen-input-dump-file $(location framework-statsd_dump.txt) " +
373
374        "--out-impl-jar $(location ravenwood.jar) " +
375        "--in-jar $(location :framework-statsd.impl{.jar}) " +
376
377        "--policy-override-file $(location :ravenwood-common-policies) " +
378        "--policy-override-file $(location :framework-statsd-ravenwood-policies) ",
379    srcs: [
380        ":framework-statsd.impl{.jar}",
381
382        ":ravenwood-common-policies",
383        ":framework-statsd-ravenwood-policies",
384        ":ravenwood-standard-options",
385        ":ravenwood-standard-annotations",
386    ],
387    out: [
388        "ravenwood.jar",
389
390        // Following files are created just as FYI.
391        "framework-statsd_keep_all.txt",
392        "framework-statsd_dump.txt",
393
394        "framework-statsd.log",
395        "framework-statsd_stats.csv",
396        "framework-statsd_apis.csv",
397    ],
398    visibility: ["//visibility:private"],
399}
400
401java_genrule {
402    name: "framework-statsd.ravenwood",
403    defaults: ["ravenwood-internal-only-visibility-genrule"],
404    cmd: "cp $(in) $(out)",
405    srcs: [
406        ":framework-statsd.ravenwood-base{ravenwood.jar}",
407    ],
408    out: [
409        "framework-statsd.ravenwood.jar",
410    ],
411}
412
413//////////////////////
414// framework-graphics
415//////////////////////
416
417java_genrule {
418    name: "framework-graphics.ravenwood-base",
419    tools: ["hoststubgen"],
420    cmd: "$(location hoststubgen) " +
421        "@$(location :ravenwood-standard-options) " +
422        "@$(location :ravenwood-standard-annotations) " +
423
424        "--debug-log $(location framework-graphics.log) " +
425        "--stats-file $(location framework-graphics_stats.csv) " +
426        "--supported-api-list-file $(location framework-graphics_apis.csv) " +
427        "--gen-keep-all-file $(location framework-graphics_keep_all.txt) " +
428        "--gen-input-dump-file $(location framework-graphics_dump.txt) " +
429
430        "--out-impl-jar $(location ravenwood.jar) " +
431        "--in-jar $(location :framework-graphics.impl{.jar}) " +
432
433        "--policy-override-file $(location :ravenwood-common-policies) " +
434        "--policy-override-file $(location :framework-graphics-ravenwood-policies) ",
435    srcs: [
436        ":framework-graphics.impl{.jar}",
437
438        ":ravenwood-common-policies",
439        ":framework-graphics-ravenwood-policies",
440        ":ravenwood-standard-options",
441        ":ravenwood-standard-annotations",
442    ],
443    out: [
444        "ravenwood.jar",
445
446        // Following files are created just as FYI.
447        "framework-graphics_keep_all.txt",
448        "framework-graphics_dump.txt",
449
450        "framework-graphics.log",
451        "framework-graphics_stats.csv",
452        "framework-graphics_apis.csv",
453    ],
454    visibility: ["//visibility:private"],
455}
456
457java_genrule {
458    name: "framework-graphics.ravenwood",
459    defaults: ["ravenwood-internal-only-visibility-genrule"],
460    cmd: "cp $(in) $(out)",
461    srcs: [
462        ":framework-graphics.ravenwood-base{ravenwood.jar}",
463    ],
464    out: [
465        "framework-graphics.ravenwood.jar",
466    ],
467}
468