blob: 412f2b7468878124a1c2ecc1e6c2c7361e9b0d64 [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 Onukic69a84e2023-10-20 10:43:55 -070029java_genrule {
Makoto Onuki3aefe332023-10-06 10:02:07 -070030 name: "framework-minus-apex.ravenwood-base",
31 tools: ["hoststubgen"],
32 cmd: "$(location hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -070033 "@$(location :ravenwood-standard-options) " +
Makoto Onuki3aefe332023-10-06 10:02:07 -070034
Makoto Onuki623cffb2023-11-29 10:45:06 -080035 "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
Jeff Sharkeyd2cc1912024-02-09 14:37:10 -070036 "--stats-file $(location hoststubgen_framework-minus-apex_stats.csv) " +
Makoto Onuki434d72822024-04-25 11:03:41 -070037 "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
Makoto Onuki623cffb2023-11-29 10:45:06 -080038
Makoto Onuki3aefe332023-10-06 10:02:07 -070039 "--out-impl-jar $(location ravenwood.jar) " +
40
41 "--gen-keep-all-file $(location hoststubgen_keep_all.txt) " +
42 "--gen-input-dump-file $(location hoststubgen_dump.txt) " +
43
44 "--in-jar $(location :framework-minus-apex-for-hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -070045 "--policy-override-file $(location :ravenwood-framework-policies) " +
46 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
Makoto Onuki3aefe332023-10-06 10:02:07 -070047 srcs: [
48 ":framework-minus-apex-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -070049 ":ravenwood-framework-policies",
50 ":ravenwood-standard-options",
51 ":ravenwood-annotation-allowed-classes",
Makoto Onuki3aefe332023-10-06 10:02:07 -070052 ],
53 out: [
54 "ravenwood.jar",
Makoto Onuki3aefe332023-10-06 10:02:07 -070055
56 // Following files are created just as FYI.
57 "hoststubgen_keep_all.txt",
58 "hoststubgen_dump.txt",
Makoto Onuki623cffb2023-11-29 10:45:06 -080059
60 "hoststubgen_framework-minus-apex.log",
Jeff Sharkeyd2cc1912024-02-09 14:37:10 -070061 "hoststubgen_framework-minus-apex_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -070062 "hoststubgen_framework-minus-apex_apis.csv",
Makoto Onuki3aefe332023-10-06 10:02:07 -070063 ],
64 visibility: ["//visibility:private"],
65}
66
67// Extract the impl jar from "framework-minus-apex.ravenwood-base" for subsequent build rules.
Makoto Onukic69a84e2023-10-20 10:43:55 -070068// Note this emits a "device side" output, so that ravenwood tests can (implicitly)
69// depend on it.
70java_genrule {
Makoto Onuki3aefe332023-10-06 10:02:07 -070071 name: "framework-minus-apex.ravenwood",
Makoto Onuki8bcc6282023-12-18 14:03:59 -080072 defaults: ["ravenwood-internal-only-visibility-genrule"],
Makoto Onuki3aefe332023-10-06 10:02:07 -070073 cmd: "cp $(in) $(out)",
74 srcs: [
75 ":framework-minus-apex.ravenwood-base{ravenwood.jar}",
76 ],
77 out: [
78 "framework-minus-apex.ravenwood.jar",
79 ],
Makoto Onuki3aefe332023-10-06 10:02:07 -070080}
Makoto Onukic69a84e2023-10-20 10:43:55 -070081
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -070082// Extract the stats file.
83genrule {
84 name: "framework-minus-apex.ravenwood.stats",
85 defaults: ["ravenwood-internal-only-visibility-genrule"],
86 cmd: "cp $(in) $(out)",
87 srcs: [
88 ":framework-minus-apex.ravenwood-base{hoststubgen_framework-minus-apex_stats.csv}",
89 ],
90 out: [
91 "hoststubgen_framework-minus-apex_stats.csv",
92 ],
93}
94
Makoto Onuki434d72822024-04-25 11:03:41 -070095genrule {
96 name: "framework-minus-apex.ravenwood.apis",
97 defaults: ["ravenwood-internal-only-visibility-genrule"],
98 cmd: "cp $(in) $(out)",
99 srcs: [
100 ":framework-minus-apex.ravenwood-base{hoststubgen_framework-minus-apex_apis.csv}",
101 ],
102 out: [
103 "hoststubgen_framework-minus-apex_apis.csv",
104 ],
105}
106
Makoto Onukie6ee0222024-05-14 10:26:07 -0700107genrule {
108 name: "framework-minus-apex.ravenwood.keep_all",
109 defaults: ["ravenwood-internal-only-visibility-genrule"],
110 cmd: "cp $(in) $(out)",
111 srcs: [
112 ":framework-minus-apex.ravenwood-base{hoststubgen_keep_all.txt}",
113 ],
114 out: [
115 "hoststubgen_framework-minus-apex_keep_all.txt",
116 ],
117}
118
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700119java_library {
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700120 name: "services.core-for-hoststubgen",
121 installable: false, // host only jar.
122 static_libs: [
123 "services.core",
124 ],
125 sdk_version: "core_platform",
126 visibility: ["//visibility:private"],
127}
128
129java_genrule {
130 name: "services.core.ravenwood-base",
131 tools: ["hoststubgen"],
132 cmd: "$(location hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700133 "@$(location :ravenwood-standard-options) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700134
135 "--debug-log $(location hoststubgen_services.core.log) " +
136 "--stats-file $(location hoststubgen_services.core_stats.csv) " +
Makoto Onuki434d72822024-04-25 11:03:41 -0700137 "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700138
139 "--out-impl-jar $(location ravenwood.jar) " +
140
141 "--gen-keep-all-file $(location hoststubgen_keep_all.txt) " +
142 "--gen-input-dump-file $(location hoststubgen_dump.txt) " +
143
144 "--in-jar $(location :services.core-for-hoststubgen) " +
Makoto Onukidfade842024-05-02 15:42:08 -0700145 "--policy-override-file $(location :ravenwood-services-policies) " +
146 "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700147 srcs: [
148 ":services.core-for-hoststubgen",
Makoto Onukidfade842024-05-02 15:42:08 -0700149 ":ravenwood-services-policies",
150 ":ravenwood-standard-options",
151 ":ravenwood-annotation-allowed-classes",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700152 ],
153 out: [
154 "ravenwood.jar",
155
156 // Following files are created just as FYI.
157 "hoststubgen_keep_all.txt",
158 "hoststubgen_dump.txt",
159
160 "hoststubgen_services.core.log",
161 "hoststubgen_services.core_stats.csv",
Makoto Onuki434d72822024-04-25 11:03:41 -0700162 "hoststubgen_services.core_apis.csv",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700163 ],
164 visibility: ["//visibility:private"],
165}
166
167java_genrule {
168 name: "services.core.ravenwood",
169 defaults: ["ravenwood-internal-only-visibility-genrule"],
170 cmd: "cp $(in) $(out)",
171 srcs: [
172 ":services.core.ravenwood-base{ravenwood.jar}",
173 ],
174 out: [
175 "services.core.ravenwood.jar",
176 ],
177}
178
Makoto Onuki3fb1f2b2024-03-27 13:08:32 -0700179// Extract the stats file.
180genrule {
181 name: "services.core.ravenwood.stats",
182 defaults: ["ravenwood-internal-only-visibility-genrule"],
183 cmd: "cp $(in) $(out)",
184 srcs: [
185 ":services.core.ravenwood-base{hoststubgen_services.core_stats.csv}",
186 ],
187 out: [
188 "hoststubgen_services.core_stats.csv",
189 ],
190}
191
Makoto Onuki434d72822024-04-25 11:03:41 -0700192genrule {
193 name: "services.core.ravenwood.apis",
194 defaults: ["ravenwood-internal-only-visibility-genrule"],
195 cmd: "cp $(in) $(out)",
196 srcs: [
197 ":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}",
198 ],
199 out: [
200 "hoststubgen_services.core_apis.csv",
201 ],
202}
203
Makoto Onukie6ee0222024-05-14 10:26:07 -0700204genrule {
205 name: "services.core.ravenwood.keep_all",
206 defaults: ["ravenwood-internal-only-visibility-genrule"],
207 cmd: "cp $(in) $(out)",
208 srcs: [
209 ":services.core.ravenwood-base{hoststubgen_keep_all.txt}",
210 ],
211 out: [
212 "hoststubgen_services.core_keep_all.txt",
213 ],
214}
215
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700216java_library {
217 name: "services.core.ravenwood-jarjar",
218 installable: false,
219 static_libs: [
220 "services.core.ravenwood",
221 ],
222 jarjar_rules: ":ravenwood-services-jarjar-rules",
Makoto Onukic5ad5fc2024-04-02 14:19:00 -0700223 visibility: ["//visibility:private"],
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700224}
225
226java_library {
Jeff Sharkey16f7cdf2024-02-21 09:46:20 -0700227 name: "services.fakes.ravenwood-jarjar",
228 installable: false,
229 srcs: [":services.fakes-sources"],
230 libs: [
Jeff Sharkey8a922ec2024-02-27 12:36:36 -0700231 "ravenwood-framework",
Jeff Sharkey16f7cdf2024-02-21 09:46:20 -0700232 "services.core.ravenwood",
233 ],
234 jarjar_rules: ":ravenwood-services-jarjar-rules",
Makoto Onukic5ad5fc2024-04-02 14:19:00 -0700235 visibility: ["//visibility:private"],
Jeff Sharkey16f7cdf2024-02-21 09:46:20 -0700236}
237
238java_library {
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700239 name: "mockito-ravenwood-prebuilt",
240 installable: false,
241 static_libs: [
242 "mockito-robolectric-prebuilt",
243 ],
244}
245
246java_library {
247 name: "inline-mockito-ravenwood-prebuilt",
248 installable: false,
249 static_libs: [
250 "inline-mockito-robolectric-prebuilt",
251 ],
252}
253
Makoto Onuki053eac82024-02-13 10:31:18 -0800254// Jars in "ravenwood-runtime" are set to the classpath, sorted alphabetically.
255// Rename some of the dependencies to make sure they're included in the intended order.
256java_genrule {
257 name: "100-framework-minus-apex.ravenwood",
258 cmd: "cp $(in) $(out)",
259 srcs: [":framework-minus-apex.ravenwood"],
260 out: ["100-framework-minus-apex.ravenwood.jar"],
261 visibility: ["//visibility:private"],
262}
263
264java_genrule {
265 // Use 200 to make sure it comes before the mainline stub ("all-updatable...").
266 name: "200-kxml2-android",
267 cmd: "cp $(in) $(out)",
268 srcs: [":kxml2-android"],
269 out: ["200-kxml2-android.jar"],
270 visibility: ["//visibility:private"],
271}
272
Makoto Onukid8231fe2024-05-10 12:49:24 -0700273java_genrule {
274 name: "z00-all-updatable-modules-system-stubs",
275 cmd: "cp $(in) $(out)",
276 srcs: [":all-updatable-modules-system-stubs"],
277 out: ["z00-all-updatable-modules-system-stubs.jar"],
278 visibility: ["//visibility:private"],
279}
280
Makoto Onukic69a84e2023-10-20 10:43:55 -0700281android_ravenwood_libgroup {
282 name: "ravenwood-runtime",
283 libs: [
Makoto Onuki053eac82024-02-13 10:31:18 -0800284 "100-framework-minus-apex.ravenwood",
Jeff Sharkey1e928352024-02-12 13:44:49 -0700285 "200-kxml2-android",
Makoto Onukid8231fe2024-05-10 12:49:24 -0700286
Jeff Sharkey1e928352024-02-12 13:44:49 -0700287 "android.test.mock.ravenwood",
Makoto Onuki053eac82024-02-13 10:31:18 -0800288 "ravenwood-helper-runtime",
Jeff Sharkey1e928352024-02-12 13:44:49 -0700289 "hoststubgen-helper-runtime.ravenwood",
Jeff Sharkey3e91c2b2024-02-15 14:12:07 -0700290 "services.core.ravenwood-jarjar",
Jeff Sharkey16f7cdf2024-02-21 09:46:20 -0700291 "services.fakes.ravenwood-jarjar",
Jeff Sharkey1e928352024-02-12 13:44:49 -0700292
293 // Provide runtime versions of utils linked in below
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700294 "junit",
295 "truth",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700296 "flag-junit",
Jeff Sharkey8a922ec2024-02-27 12:36:36 -0700297 "ravenwood-framework",
Jeff Sharkey41cfbb32023-11-16 09:26:28 -0700298 "ravenwood-junit-impl",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700299 "ravenwood-junit-impl-flag",
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700300 "mockito-ravenwood-prebuilt",
301 "inline-mockito-ravenwood-prebuilt",
Makoto Onukid8231fe2024-05-10 12:49:24 -0700302
303 // It's a stub, so it should be towards the end.
304 "z00-all-updatable-modules-system-stubs",
Makoto Onukic69a84e2023-10-20 10:43:55 -0700305 ],
Makoto Onuki50276f02024-02-13 14:58:56 -0800306 jni_libs: [
307 "libandroid_runtime",
Makoto Onukiaedf30b2024-05-01 11:16:50 -0700308 "libravenwood_runtime",
Makoto Onuki50276f02024-02-13 14:58:56 -0800309 ],
Makoto Onukic69a84e2023-10-20 10:43:55 -0700310}
311
312android_ravenwood_libgroup {
313 name: "ravenwood-utils",
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700314 libs: [
315 "junit",
316 "truth",
Jeff Sharkey7037e352024-02-27 14:22:24 -0700317 "flag-junit",
Jeff Sharkey8a922ec2024-02-27 12:36:36 -0700318 "ravenwood-framework",
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700319 "ravenwood-junit",
Jeff Sharkeyed81c782024-01-11 13:29:07 -0700320 "mockito-ravenwood-prebuilt",
321 "inline-mockito-ravenwood-prebuilt",
Jeff Sharkey91f414e2023-11-07 15:43:59 -0700322 ],
Makoto Onukic69a84e2023-10-20 10:43:55 -0700323}