blob: ec58210e1e3bd3c72c27163236db5ea9b8a74719 [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
John Wu98346162024-09-26 22:59:40 +000028// Process framework-all with hoststubgen for Ravenwood.
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.
John Wu98346162024-09-26 22:59:40 +000031// TODO: Do the sharding better, either by making hostsubgen support sharding natively, or
32// making a better build rule.
Makoto Onukifcf5cde2024-08-02 09:11:46 -070033
34genrule_defaults {
35 name: "framework-minus-apex.ravenwood-base_defaults",
John Wu98346162024-09-26 22:59:40 +000036 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070037 tools: ["hoststubgen"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070038 srcs: [
39 ":framework-minus-apex-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -070040 ":ravenwood-framework-policies",
41 ":ravenwood-standard-options",
42 ":ravenwood-annotation-allowed-classes",
Makoto Onuki3aefe332023-10-06 10:02:07 -070043 ],
44 out: [
45 "ravenwood.jar",
Makoto Onuki623cffb2023-11-29 10:45:06 -080046 "hoststubgen_framework-minus-apex.log",
Makoto Onuki3aefe332023-10-06 10:02:07 -070047 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -070048}
49
John Wu98346162024-09-26 22:59:40 +000050framework_minus_apex_cmd = "$(location hoststubgen) " +
51 "@$(location :ravenwood-standard-options) " +
52 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
53 "--out-jar $(location ravenwood.jar) " +
54 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
55 "--policy-override-file $(location :ravenwood-framework-policies) " +
56 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) "
57
Makoto Onukifcf5cde2024-08-02 09:11:46 -070058java_genrule {
59 name: "framework-minus-apex.ravenwood-base_X0",
60 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000061 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 0",
Makoto Onukifcf5cde2024-08-02 09:11:46 -070062}
63
64java_genrule {
65 name: "framework-minus-apex.ravenwood-base_X1",
66 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000067 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 1",
Makoto Onukifcf5cde2024-08-02 09:11:46 -070068}
69
70java_genrule {
71 name: "framework-minus-apex.ravenwood-base_X2",
72 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000073 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 2",
Makoto Onukifcf5cde2024-08-02 09:11:46 -070074}
75
76java_genrule {
77 name: "framework-minus-apex.ravenwood-base_X3",
78 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000079 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 3",
Makoto Onukifcf5cde2024-08-02 09:11:46 -070080}
81
82java_genrule {
83 name: "framework-minus-apex.ravenwood-base_X4",
84 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000085 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 4",
Makoto Onukifcf5cde2024-08-02 09:11:46 -070086}
87
88java_genrule {
89 name: "framework-minus-apex.ravenwood-base_X5",
90 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
John Wu98346162024-09-26 22:59:40 +000091 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 5",
92}
Makoto Onukifcf5cde2024-08-02 09:11:46 -070093
John Wu98346162024-09-26 22:59:40 +000094java_genrule {
95 name: "framework-minus-apex.ravenwood-base_X6",
96 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
97 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 6",
98}
Makoto Onukifcf5cde2024-08-02 09:11:46 -070099
John Wu98346162024-09-26 22:59:40 +0000100java_genrule {
101 name: "framework-minus-apex.ravenwood-base_X7",
102 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
103 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 7",
104}
105
106java_genrule {
107 name: "framework-minus-apex.ravenwood-base_X8",
108 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
109 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 8",
110}
111
112java_genrule {
113 name: "framework-minus-apex.ravenwood-base_X9",
114 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
115 cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 9",
116}
117
118// Build framework-minus-apex.ravenwood-base without sharding.
119// We extract the various dump files from this one, rather than the sharded ones, because
120// some dumps use the output from other classes (e.g. base classes) which may not be in the
121// same shard. Also some of the dump files ("apis") may be slow even when sharded, because
122// the output contains the information from all the input classes, rather than the output classes.
123// Not using sharding is fine for this module because it's only used for collecting the
124// dump / stats files, which don't have to happen regularly.
125java_genrule {
126 name: "framework-minus-apex.ravenwood-base_all",
127 defaults: ["framework-minus-apex.ravenwood-base_defaults"],
128 cmd: framework_minus_apex_cmd +
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700129 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
130 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
131
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700132 "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
John Wu98346162024-09-26 22:59:40 +0000133 "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) ",
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700134
John Wu98346162024-09-26 22:59:40 +0000135 out: [
136 "hoststubgen_framework-minus-apex_keep_all.txt",
137 "hoststubgen_framework-minus-apex_dump.txt",
138 "hoststubgen_framework-minus-apex_stats.csv",
139 "hoststubgen_framework-minus-apex_apis.csv",
140 ],
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700141}
142
143// Marge all the sharded jars
Makoto Onukic69a84e2023-10-20 10:43:55 -0700144java_genrule {
Makoto Onuki3aefe332023-10-06 10:02:07 -0700145 name: "framework-minus-apex.ravenwood",
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700146 defaults: ["ravenwood-internal-only-visibility-java"],
147 cmd: "$(location merge_zips) $(out) $(in)",
148 tools: ["merge_zips"],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700149 srcs: [
Makoto Onukifcf5cde2024-08-02 09:11:46 -0700150 ":framework-minus-apex.ravenwood-base_X0{ravenwood.jar}",
151 ":framework-minus-apex.ravenwood-base_X1{ravenwood.jar}",
152 ":framework-minus-apex.ravenwood-base_X2{ravenwood.jar}",
153 ":framework-minus-apex.ravenwood-base_X3{ravenwood.jar}",
154 ":framework-minus-apex.ravenwood-base_X4{ravenwood.jar}",
155 ":framework-minus-apex.ravenwood-base_X5{ravenwood.jar}",
John Wu98346162024-09-26 22:59:40 +0000156 ":framework-minus-apex.ravenwood-base_X6{ravenwood.jar}",
157 ":framework-minus-apex.ravenwood-base_X7{ravenwood.jar}",
158 ":framework-minus-apex.ravenwood-base_X8{ravenwood.jar}",
159 ":framework-minus-apex.ravenwood-base_X9{ravenwood.jar}",
Makoto Onuki3aefe332023-10-06 10:02:07 -0700160 ],
161 out: [
162 "framework-minus-apex.ravenwood.jar",
163 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -0700164}
Makoto Onukic69a84e2023-10-20 10:43:55 -0700165
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700166java_library {
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700167 name: "services.core-for-hoststubgen",
168 installable: false, // host only jar.
169 static_libs: [
170 "services.core",
171 ],
172 sdk_version: "core_platform",
173 visibility: ["//visibility:private"],
174}
175
176java_genrule {
177 name: "services.core.ravenwood-base",
178 tools: ["hoststubgen"],
179 cmd: "$(location hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700180 "@$(location :ravenwood-standard-options) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700181
182 "--debug-log $(location hoststubgen_services.core.log) " +
183 "--stats-file $(location hoststubgen_services.core_stats.csv) " +
Makoto Onuki434d72822024-04-25 11:03:41 -0700184 "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700185
John Wu98346162024-09-26 22:59:40 +0000186 "--out-jar $(location ravenwood.jar) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700187
Makoto Onuki134a4152024-06-26 14:21:12 -0700188 "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
189 "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700190
191 "--in-jar $(location :services.core-for-hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700192 "--policy-override-file $(location :ravenwood-services-policies) " +
193 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700194 srcs: [
195 ":services.core-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -0700196 ":ravenwood-services-policies",
197 ":ravenwood-standard-options",
198 ":ravenwood-annotation-allowed-classes",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700199 ],
200 out: [
201 "ravenwood.jar",
202
203 // Following files are created just as FYI.
Makoto Onuki134a4152024-06-26 14:21:12 -0700204 "hoststubgen_services.core_keep_all.txt",
205 "hoststubgen_services.core_dump.txt",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700206
207 "hoststubgen_services.core.log",
208 "hoststubgen_services.core_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -0700209 "hoststubgen_services.core_apis.csv",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700210 ],
Makoto Onuki134a4152024-06-26 14:21:12 -0700211 defaults: ["ravenwood-internal-only-visibility-genrule"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700212}
213
214java_genrule {
215 name: "services.core.ravenwood",
216 defaults: ["ravenwood-internal-only-visibility-genrule"],
217 cmd: "cp $(in) $(out)",
218 srcs: [
219 ":services.core.ravenwood-base{ravenwood.jar}",
220 ],
221 out: [
222 "services.core.ravenwood.jar",
223 ],
224}
225
John Wu98346162024-09-26 22:59:40 +0000226// TODO(b/313930116) This jarjar is a bit slow. We should use hoststubgen for renaming,
227// but services.core.ravenwood has complex dependencies, so it'll take more than
228// just using hoststubgen "rename"s.
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700229java_library {
230 name: "services.core.ravenwood-jarjar",
Makoto Onukie5e97272024-05-23 10:49:31 -0700231 defaults: ["ravenwood-internal-only-visibility-java"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700232 installable: false,
233 static_libs: [
234 "services.core.ravenwood",
235 ],
236 jarjar_rules: ":ravenwood-services-jarjar-rules",
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700237}
238
Makoto Onuki053eac82024-02-13 10:31:18 -0800239// Jars in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
240// Rename some of the dependencies to make sure they're included in the intended order.
Makoto Onukif38d5992024-05-30 10:40:50 -0700241java_library {
Makoto Onuki053eac82024-02-13 10:31:18 -0800242 name: "100-framework-minus-apex.ravenwood",
Makoto Onukif38d5992024-05-30 10:40:50 -0700243 defaults: ["ravenwood-internal-only-visibility-java"],
244 static_libs: [
245 "framework-minus-apex.ravenwood",
246 ],
247 sdk_version: "core_platform",
Makoto Onuki7645fa82024-08-02 10:47:55 -0700248 // See b/313930116. Jarjar is too slow on this jar. We use HostStubGen to do the rename.
249 // jarjar_rules: ":ravenwood-framework-jarjar-rules",
Makoto Onuki053eac82024-02-13 10:31:18 -0800250}
251
252java_genrule {
253 // Use 200 to make sure it comes before the mainline stub ("all-updatable...").
254 name: "200-kxml2-android",
Makoto Onukie5e97272024-05-23 10:49:31 -0700255 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800256 cmd: "cp $(in) $(out)",
257 srcs: [":kxml2-android"],
258 out: ["200-kxml2-android.jar"],
Makoto Onuki053eac82024-02-13 10:31:18 -0800259}
260
Makoto Onukid8231fe2024-05-10 12:49:24 -0700261java_genrule {
262 name: "z00-all-updatable-modules-system-stubs",
Makoto Onukie5e97272024-05-23 10:49:31 -0700263 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onukid8231fe2024-05-10 12:49:24 -0700264 cmd: "cp $(in) $(out)",
265 srcs: [":all-updatable-modules-system-stubs"],
266 out: ["z00-all-updatable-modules-system-stubs.jar"],
Makoto Onukic69a84e2023-10-20 10:43:55 -0700267}