blob: 7faa33f8834efd1d8d32d2faf1182a9ffdcb065e [file] [log] [blame]
Makoto Onuki3aefe332023-10-06 10:02:07 -07001// 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
15// We need this "trampoline" rule to force soong to give a host-side jar to
Makoto Onukic69a84e2023-10-20 10:43:55 -070016// framework-minus-apex.ravenwood-base. Otherwise, soong would mix up the arch (?) and we'd get
Makoto Onuki3aefe332023-10-06 10:02:07 -070017// a dex jar.
18java_library {
19 name: "framework-minus-apex-for-hoststubgen",
20 installable: false, // host only jar.
21 static_libs: [
22 "framework-minus-apex",
23 ],
24 sdk_version: "core_platform",
25 visibility: ["//visibility:private"],
26}
27
28// Generate the stub/impl from framework-all, with hidden APIs.
Makoto Onukifcf5cde2024-08-02 09:11:46 -070029// This step takes several tens of seconds, so we manually shard it to multiple modules.
30// All the copies have to be kept in sync.
31// TODO: Do the sharding better.
32
33genrule_defaults {
34 name: "framework-minus-apex.ravenwood-base_defaults",
Makoto Onuki3aefe332023-10-06 10:02:07 -070035 tools: ["hoststubgen"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070036 srcs: [
37 ":framework-minus-apex-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -070038 ":ravenwood-framework-policies",
39 ":ravenwood-standard-options",
40 ":ravenwood-annotation-allowed-classes",
Makoto Onuki3aefe332023-10-06 10:02:07 -070041 ],
42 out: [
43 "ravenwood.jar",
Makoto Onuki3aefe332023-10-06 10:02:07 -070044
45 // Following files are created just as FYI.
Makoto Onuki134a4152024-06-26 14:21:12 -070046 "hoststubgen_framework-minus-apex_keep_all.txt",
47 "hoststubgen_framework-minus-apex_dump.txt",
Makoto Onuki623cffb2023-11-29 10:45:06 -080048
49 "hoststubgen_framework-minus-apex.log",
Jeff Sharkeyd2cc1912024-02-09 14:37:10 -070050 "hoststubgen_framework-minus-apex_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -070051 "hoststubgen_framework-minus-apex_apis.csv",
Makoto Onuki3aefe332023-10-06 10:02:07 -070052 ],
Makoto Onukifcf5cde2024-08-02 09:11:46 -070053 visibility: ["//visibility:private"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070054}
55
Makoto Onukifcf5cde2024-08-02 09:11:46 -070056java_genrule {
57 name: "framework-minus-apex.ravenwood-base_X0",
58 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
59 cmd: "$(location hoststubgen) " +
60 "--num-shards 6 --shard-index 0 " + // Only this line differs
61
62 "@$(location :ravenwood-standard-options) " +
63
64 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
65 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
66 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
67
68 "--out-impl-jar $(location ravenwood.jar) " +
69
70 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
71 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
72
73 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
74 "--policy-override-file $(location :ravenwood-framework-policies) " +
75 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
76}
77
78java_genrule {
79 name: "framework-minus-apex.ravenwood-base_X1",
80 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
81 cmd: "$(location hoststubgen) " +
82 "--num-shards 6 --shard-index 1 " + // Only this line differs
83
84 "@$(location :ravenwood-standard-options) " +
85
86 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
87 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
88 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
89
90 "--out-impl-jar $(location ravenwood.jar) " +
91
92 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
93 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
94
95 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
96 "--policy-override-file $(location :ravenwood-framework-policies) " +
97 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
98}
99
100java_genrule {
101 name: "framework-minus-apex.ravenwood-base_X2",
102 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
103 cmd: "$(location hoststubgen) " +
104 "--num-shards 6 --shard-index 2 " + // Only this line differs
105
106 "@$(location :ravenwood-standard-options) " +
107
108 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
109 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
110 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
111
112 "--out-impl-jar $(location ravenwood.jar) " +
113
114 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
115 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
116
117 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
118 "--policy-override-file $(location :ravenwood-framework-policies) " +
119 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
120}
121
122java_genrule {
123 name: "framework-minus-apex.ravenwood-base_X3",
124 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
125 cmd: "$(location hoststubgen) " +
126 "--num-shards 6 --shard-index 3 " + // Only this line differs
127
128 "@$(location :ravenwood-standard-options) " +
129
130 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
131 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
132 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
133
134 "--out-impl-jar $(location ravenwood.jar) " +
135
136 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
137 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
138
139 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
140 "--policy-override-file $(location :ravenwood-framework-policies) " +
141 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
142}
143
144java_genrule {
145 name: "framework-minus-apex.ravenwood-base_X4",
146 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
147 cmd: "$(location hoststubgen) " +
148 "--num-shards 6 --shard-index 4 " + // Only this line differs
149
150 "@$(location :ravenwood-standard-options) " +
151
152 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
153 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
154 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
155
156 "--out-impl-jar $(location ravenwood.jar) " +
157
158 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
159 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
160
161 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
162 "--policy-override-file $(location :ravenwood-framework-policies) " +
163 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
164}
165
166java_genrule {
167 name: "framework-minus-apex.ravenwood-base_X5",
168 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
169 cmd: "$(location hoststubgen) " +
170 "--num-shards 6 --shard-index 5 " + // Only this line differs
171
172 "@$(location :ravenwood-standard-options) " +
173
174 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
175 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
176 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
177
178 "--out-impl-jar $(location ravenwood.jar) " +
179
180 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
181 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) " +
182
183 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
184 "--policy-override-file $(location :ravenwood-framework-policies) " +
185 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
186}
187
188// Marge all the sharded jars
Makoto Onukic69a84e2023-10-20 10:43:55 -0700189java_genrule {
Makoto Onuki3aefe332023-10-06 10:02:07 -0700190 name: "framework-minus-apex.ravenwood",
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700191 defaults: ["ravenwood-internal-only-visibility-java"],
192 cmd: "$(location merge_zips) $(out) $(in)",
193 tools: ["merge_zips"],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700194 srcs: [
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700195 ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}",
196 ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}",
197 ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}",
198 ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}",
199 ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}",
200 ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}",
Makoto Onuki3aefe332023-10-06 10:02:07 -0700201 ],
202 out: [
203 "framework-minus-apex.ravenwood.jar",
204 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700205}
Makoto Onukic69a84e2023-10-20 10:43:55 -0700206
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700207// Merge the sharded text files
208genrule {
209 name: "hoststubgen_framework-minus-apex_stats.csv",
210 defaults: ["ravenwood-internal-only-visibility-genrule"],
211 cmd: "cat $(in) > $(out)",
212 srcs: [
213 ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_stats.csv}",
214 ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_stats.csv}",
215 ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_stats.csv}",
216 ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_stats.csv}",
217 ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_stats.csv}",
218 ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_stats.csv}",
219 ],
220 out: ["hoststubgen_framework-minus-apex_stats.csv"],
221}
222
223genrule {
224 name: "hoststubgen_framework-minus-apex_apis.csv",
225 defaults: ["ravenwood-internal-only-visibility-genrule"],
226 cmd: "cat $(in) > $(out)",
227 srcs: [
228 ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_apis.csv}",
229 ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_apis.csv}",
230 ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_apis.csv}",
231 ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_apis.csv}",
232 ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_apis.csv}",
233 ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_apis.csv}",
234 ],
235 out: ["hoststubgen_framework-minus-apex_apis.csv"],
236}
237
238genrule {
239 name: "hoststubgen_framework-minus-apex_keep_all.txt",
240 defaults: ["ravenwood-internal-only-visibility-genrule"],
241 cmd: "cat $(in) > $(out)",
242 srcs: [
243 ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_keep_all.txt}",
244 ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_keep_all.txt}",
245 ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_keep_all.txt}",
246 ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_keep_all.txt}",
247 ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_keep_all.txt}",
248 ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_keep_all.txt}",
249 ],
250 out: ["hoststubgen_framework-minus-apex_keep_all.txt"],
251}
252
253genrule {
254 name: "hoststubgen_framework-minus-apex_dump.txt",
255 defaults: ["ravenwood-internal-only-visibility-genrule"],
256 cmd: "cat $(in) > $(out)",
257 srcs: [
258 ":framework-minus-apex.ravenwood-base_X0{hoststubgen_framework-minus-apex_dump.txt}",
259 ":framework-minus-apex.ravenwood-base_X1{hoststubgen_framework-minus-apex_dump.txt}",
260 ":framework-minus-apex.ravenwood-base_X2{hoststubgen_framework-minus-apex_dump.txt}",
261 ":framework-minus-apex.ravenwood-base_X3{hoststubgen_framework-minus-apex_dump.txt}",
262 ":framework-minus-apex.ravenwood-base_X4{hoststubgen_framework-minus-apex_dump.txt}",
263 ":framework-minus-apex.ravenwood-base_X5{hoststubgen_framework-minus-apex_dump.txt}",
264 ],
265 out: ["hoststubgen_framework-minus-apex_dump.txt"],
266}
267
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700268java_library {
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700269 name: "services.core-for-hoststubgen",
270 installable: false, // host only jar.
271 static_libs: [
272 "services.core",
273 ],
274 sdk_version: "core_platform",
275 visibility: ["//visibility:private"],
276}
277
278java_genrule {
279 name: "services.core.ravenwood-base",
280 tools: ["hoststubgen"],
281 cmd: "$(location hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700282 "@$(location :ravenwood-standard-options) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700283
284 "--debug-log $(location hoststubgen_services.core.log) " +
285 "--stats-file $(location hoststubgen_services.core_stats.csv) " +
Makoto Onuki434d72822024-04-25 11:03:41 -0700286 "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700287
288 "--out-impl-jar $(location ravenwood.jar) " +
289
Makoto Onuki134a4152024-06-26 14:21:12 -0700290 "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
291 "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700292
293 "--in-jar $(location :services.core-for-hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700294 "--policy-override-file $(location :ravenwood-services-policies) " +
295 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700296 srcs: [
297 ":services.core-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -0700298 ":ravenwood-services-policies",
299 ":ravenwood-standard-options",
300 ":ravenwood-annotation-allowed-classes",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700301 ],
302 out: [
303 "ravenwood.jar",
304
305 // Following files are created just as FYI.
Makoto Onuki134a4152024-06-26 14:21:12 -0700306 "hoststubgen_services.core_keep_all.txt",
307 "hoststubgen_services.core_dump.txt",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700308
309 "hoststubgen_services.core.log",
310 "hoststubgen_services.core_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -0700311 "hoststubgen_services.core_apis.csv",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700312 ],
Makoto Onuki134a4152024-06-26 14:21:12 -0700313 defaults: ["ravenwood-internal-only-visibility-genrule"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700314}
315
316java_genrule {
317 name: "services.core.ravenwood",
318 defaults: ["ravenwood-internal-only-visibility-genrule"],
319 cmd: "cp $(in) $(out)",
320 srcs: [
321 ":services.core.ravenwood-base{ravenwood.jar}",
322 ],
323 out: [
324 "services.core.ravenwood.jar",
325 ],
326}
327
328java_library {
329 name: "services.core.ravenwood-jarjar",
Makoto Onukie5e97272024-05-23 10:49:31 -0700330 defaults: ["ravenwood-internal-only-visibility-java"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700331 installable: false,
332 static_libs: [
333 "services.core.ravenwood",
334 ],
335 jarjar_rules: ":ravenwood-services-jarjar-rules",
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700336}
337
Makoto Onuki053eac82024-02-13 10:31:18 -0800338// Jars in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
339// Rename some of the dependencies to make sure they're included in the intended order.
Makoto Onukif38d5992024-05-30 10:40:50 -0700340// Also apply jarjar.
341java_library {
Makoto Onuki053eac82024-02-13 10:31:18 -0800342 name: "100-framework-minus-apex.ravenwood",
Makoto Onukif38d5992024-05-30 10:40:50 -0700343 defaults: ["ravenwood-internal-only-visibility-java"],
344 static_libs: [
345 "framework-minus-apex.ravenwood",
346 ],
347 sdk_version: "core_platform",
Makoto Onuki7645fa82024-08-02 10:47:55 -0700348 // See b/313930116. Jarjar is too slow on this jar. We use HostStubGen to do the rename.
349 // jarjar_rules: ":ravenwood-framework-jarjar-rules",
Makoto Onuki053eac82024-02-13 10:31:18 -0800350}
351
352java_genrule {
353 // Use 200 to make sure it comes before the mainline stub ("all-updatable...").
354 name: "200-kxml2-android",
Makoto Onukie5e97272024-05-23 10:49:31 -0700355 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800356 cmd: "cp $(in) $(out)",
357 srcs: [":kxml2-android"],
358 out: ["200-kxml2-android.jar"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800359}
360
Makoto Onukid8231fe2024-05-10 12:49:24 -0700361java_genrule {
362 name: "z00-all-updatable-modules-system-stubs",
Makoto Onukie5e97272024-05-23 10:49:31 -0700363 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onukid8231fe2024-05-10 12:49:24 -0700364 cmd: "cp $(in) $(out)",
365 srcs: [":all-updatable-modules-system-stubs"],
366 out: ["z00-all-updatable-modules-system-stubs.jar"],
Makoto Onukic69a84e2023-10-20 10:43:55 -0700367}