blob: c1e84fdfa7de1b9a605517e6610afb42b7f795c7 [file] [log] [blame]
Anton Hansson807c0832021-04-14 15:47:59 +01001// Copyright (C) 2019 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
15package {
16 default_visibility: [":__subpackages__"],
17 default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
Anton Hansson807c0832021-04-14 15:47:59 +010020// Defaults common to all mainline module java_sdk_library instances.
21java_defaults {
22 name: "framework-module-common-defaults",
23
Anton Hanssonee390f22021-09-16 15:26:49 +010024 // Use the source of annotations that affect metalava doc generation, since
25 // the relevant generation instructions are themselves in javadoc, which is
26 // not present in class files.
27 api_srcs: [":framework-metalava-annotations"],
28
29 // Make the source retention annotations available on the classpath when compiling
30 // the implementation library. (This should be in impl_only_libs but some modules
31 // use these defaults for java_library, sigh.)
Anton Hansson807c0832021-04-14 15:47:59 +010032 libs: ["framework-annotations-lib"],
33
34 // Framework modules are not generally shared libraries, i.e. they are not
35 // intended, and must not be allowed, to be used in a <uses-library> manifest
36 // entry.
37 shared_library: false,
38
39 // Prevent dependencies that do not specify an sdk_version from accessing the
40 // implementation library by default and force them to use stubs instead.
41 default_to_stubs: true,
42
43 // Enable api lint. This will eventually become the default for java_sdk_library
44 // but it cannot yet be turned on because some usages have not been cleaned up.
45 // TODO(b/156126315) - Remove when no longer needed.
46 api_lint: {
47 enabled: true,
Anton Hansson78408142023-10-26 14:16:05 +000048 legacy_errors_allowed: false,
Anton Hansson807c0832021-04-14 15:47:59 +010049 },
50
51 // The API scope specific properties.
52 public: {
53 enabled: true,
54 sdk_version: "module_current",
55 },
56
57 // installable implies we'll create a non-apex (platform) variant, which
58 // we shouldn't ordinarily need (and it can create issues), so disable that.
59 installable: false,
60
61 // Configure framework module specific metalava options.
Anton Hansson149bb742023-10-23 14:38:19 +000062 droiddoc_options: [
63 "--error UnhiddenSystemApi",
Anton Hansson3892f652023-10-23 14:38:19 +000064 "--error UnflaggedApi",
Anton Hansson149bb742023-10-23 14:38:19 +000065 "--hide CallbackInterface",
Anton Hansson149bb742023-10-23 14:38:19 +000066 "--enhance-documentation",
67 ],
Anton Hansson807c0832021-04-14 15:47:59 +010068
69 annotations_enabled: true,
70
71 // Allow access to the stubs from anywhere
72 visibility: ["//visibility:public"],
73 stubs_library_visibility: ["//visibility:public"],
74
75 // Hide impl library and stub sources
76 impl_library_visibility: [
77 ":__pkg__",
Anton Hansson5053a092022-01-28 13:22:10 +000078 "//frameworks/base/api", // For framework-all
Anton Hansson807c0832021-04-14 15:47:59 +010079 ],
80 stubs_source_visibility: ["//visibility:private"],
81
82 defaults_visibility: ["//visibility:private"],
83
Nikita Ioffeb939df82022-12-06 14:12:52 +000084 dist_group: "android",
85}
86
87// Defaults for the java_sdk_libraries of non-updatable modules.
88// java_sdk_libraries using these defaults should also add themselves to the
89// non_updatable_modules list in frameworks/base/api/api.go
90java_defaults {
91 name: "non-updatable-framework-module-defaults",
92 defaults: ["framework-module-common-defaults"],
93
94 system: {
95 enabled: true,
96 sdk_version: "module_current",
97 },
98 module_lib: {
99 enabled: true,
100 sdk_version: "module_current",
101 },
102 // Non-updatable modules are allowed to provide @TestApi
103 test: {
104 enabled: true,
105 sdk_version: "module_current",
Anton Hansson8f3c2f92022-04-29 11:34:34 +0000106 },
107
Nikita Ioffeb939df82022-12-06 14:12:52 +0000108 defaults_visibility: [
Anton Hansson02b056f2023-10-24 14:56:05 +0000109 "//frameworks/base",
110 "//frameworks/base/api",
Nikita Ioffeb939df82022-12-06 14:12:52 +0000111 "//packages/modules/Virtualization:__subpackages__",
112 ],
Anton Hansson807c0832021-04-14 15:47:59 +0100113}
114
115// Defaults for mainline module provided java_sdk_library instances.
116java_defaults {
117 name: "framework-module-defaults",
118 defaults: ["framework-module-common-defaults"],
119 sdk_version: "module_current",
120
121 system: {
122 enabled: true,
123 sdk_version: "module_current",
124 },
125 module_lib: {
126 enabled: true,
127 sdk_version: "module_current",
128 },
Nikita Ioffeb939df82022-12-06 14:12:52 +0000129
Anton Hansson807c0832021-04-14 15:47:59 +0100130 defaults_visibility: [
131 ":__subpackages__",
Roshan Piusfe257632023-10-13 15:35:47 -0700132 // TODO(b/237461653): Move this to packages/modules/Nfc
Roshan Pius7d50f762023-12-07 10:57:07 -0800133 "//frameworks/base/nfc",
Anton Hansson807c0832021-04-14 15:47:59 +0100134 "//frameworks/base/apex:__subpackages__",
135 "//frameworks/base/libs/hwui",
Anton Hansson807c0832021-04-14 15:47:59 +0100136 "//frameworks/base/wifi",
137 "//packages/modules:__subpackages__",
138 "//packages/providers/MediaProvider:__subpackages__",
Samiul Islam4fd10a52021-10-11 22:54:18 +0100139 "//system/apex/apexd:__subpackages__",
Anton Hansson807c0832021-04-14 15:47:59 +0100140 ],
141}
142
143// Defaults for mainline module system server provided java_sdk_library instances.
144java_defaults {
145 name: "framework-system-server-module-defaults",
146 defaults: ["framework-module-common-defaults"],
147 sdk_version: "system_server_current",
148
149 system_server: {
150 enabled: true,
151 sdk_version: "system_server_current",
152 },
Nikita Ioffeb939df82022-12-06 14:12:52 +0000153
Anton Hansson807c0832021-04-14 15:47:59 +0100154 defaults_visibility: [
155 ":__subpackages__",
156 "//art/libartservice:__subpackages__",
157 "//frameworks/base/apex:__subpackages__",
158 "//packages/modules:__subpackages__",
Samiul Islam4fd10a52021-10-11 22:54:18 +0100159 "//system/apex/apexd:__subpackages__",
Anton Hansson807c0832021-04-14 15:47:59 +0100160 ],
161}
162
Anton Hansson2e172582023-03-06 11:44:02 +0000163filegroup_defaults {
164 name: "framework-sources-module-defaults",
Anton Hanssonf54077e2023-03-20 12:07:14 +0000165 visibility: [
166 "//frameworks/base",
167 "//frameworks/base/api",
168 ],
Anton Hansson2e172582023-03-06 11:44:02 +0000169 defaults_visibility: ["//visibility:public"],
170}
171
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000172// These apex_defaults serve as a common place to add properties which should
173// affect all mainline modules.
Andrei Onea13f28a22023-01-16 14:17:24 +0000174
Andrei Onea152c8322023-05-23 18:24:07 +0000175APEX_LOWEST_MIN_SDK_VERSION = "30"
Andrei Onea13f28a22023-01-16 14:17:24 +0000176DCLA_MIN_SDK_VERSION = "31"
177
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000178apex_defaults {
Andrei Onea13f28a22023-01-16 14:17:24 +0000179 name: "any-launched-apex-modules",
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000180 updatable: true,
181 defaults_visibility: ["//visibility:public"],
182}
183
Andrei Onea13f28a22023-01-16 14:17:24 +0000184apex_defaults {
185 name: "q-launched-apex-module",
186 defaults: ["any-launched-apex-modules"],
Andrei Onea152c8322023-05-23 18:24:07 +0000187 min_sdk_version: APEX_LOWEST_MIN_SDK_VERSION,
Andrei Onea13f28a22023-01-16 14:17:24 +0000188 defaults_visibility: ["//visibility:public"],
189}
Liz Kammerfc0ea402022-05-25 15:04:10 -0400190
191soong_config_module_type_import {
192 from: "system/apex/Android.bp",
Zhi Douc4eea7d2022-12-09 22:24:42 +0000193 module_types: [
194 "library_linking_strategy_apex_defaults",
195 "library_linking_strategy_cc_defaults",
196 ],
Liz Kammerfc0ea402022-05-25 15:04:10 -0400197}
198
199library_linking_strategy_apex_defaults {
Nada Husseinea5a56f2022-09-26 18:50:53 +0000200 name: "q-launched-dcla-enabled-apex-module",
201 defaults_visibility: [
202 "//external/conscrypt/apex",
203 "//packages/modules/DnsResolver/apex",
204 "//frameworks/av/apex"
205 ],
206 defaults: ["q-launched-apex-module"],
207 soong_config_variables: {
208 library_linking_strategy: {
209 // Use the Q min_sdk_version
210 prefer_static: {},
211 // Override the Q min_sdk_version to min_sdk_version that supports dcla
212 conditions_default: {
213 min_sdk_version: DCLA_MIN_SDK_VERSION,
214 },
215 },
216 },
217}
218
219apex_defaults {
220 name: "r-launched-apex-module",
Andrei Onea13f28a22023-01-16 14:17:24 +0000221 defaults: ["any-launched-apex-modules"],
Nada Husseinea5a56f2022-09-26 18:50:53 +0000222 min_sdk_version: "30",
Nada Husseinea5a56f2022-09-26 18:50:53 +0000223 defaults_visibility: ["//visibility:public"],
224}
225
226library_linking_strategy_apex_defaults {
Liz Kammerfc0ea402022-05-25 15:04:10 -0400227 name: "r-launched-dcla-enabled-apex-module",
Nada Husseinea5a56f2022-09-26 18:50:53 +0000228 defaults_visibility: [
229 "//packages/modules/adb:__subpackages__",
230 "//packages/modules/Connectivity/Tethering/apex",
231 ],
Liz Kammerfc0ea402022-05-25 15:04:10 -0400232 defaults: ["r-launched-apex-module"],
233 soong_config_variables: {
234 library_linking_strategy: {
235 // Use the R min_sdk_version
236 prefer_static: {},
237 // Override the R min_sdk_version to min_sdk_version that supports dcla
238 conditions_default: {
239 min_sdk_version: DCLA_MIN_SDK_VERSION,
240 },
241 },
242 },
243}
244
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000245apex_defaults {
246 name: "s-launched-apex-module",
Andrei Onea13f28a22023-01-16 14:17:24 +0000247 defaults: ["any-launched-apex-modules"],
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000248 min_sdk_version: "31",
Hassan Ali6c8f7942022-06-29 14:55:32 +0000249 // Indicates that pre-installed version of this apex can be compressed.
250 // Whether it actually will be compressed is controlled on per-device basis.
251 compressible:true,
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000252 defaults_visibility: [
253 "//art:__subpackages__",
254 "//packages/modules:__subpackages__",
255 ],
256}
257
258apex_defaults {
259 name: "t-launched-apex-module",
Andrei Onea13f28a22023-01-16 14:17:24 +0000260 defaults: ["any-launched-apex-modules"],
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000261 min_sdk_version: "Tiramisu",
Hassan Ali6c8f7942022-06-29 14:55:32 +0000262 // Indicates that pre-installed version of this apex can be compressed.
263 // Whether it actually will be compressed is controlled on per-device basis.
Pedro Loureiro897758d2022-09-27 14:25:59 +0000264 compressible: true,
265 defaults_visibility: ["//packages/modules:__subpackages__"],
266}
267
Pedro Loureiro897758d2022-09-27 14:25:59 +0000268apex_defaults {
269 name: "u-launched-apex-module",
Andrei Onea13f28a22023-01-16 14:17:24 +0000270 defaults: ["any-launched-apex-modules"],
Pedro Loureiro897758d2022-09-27 14:25:59 +0000271 min_sdk_version: "UpsideDownCake",
Pedro Loureiro897758d2022-09-27 14:25:59 +0000272 // Indicates that pre-installed version of this apex can be compressed.
273 // Whether it actually will be compressed is controlled on per-device basis.
274 compressible: true,
Gurpreet Singhb6bc4b72022-03-02 16:34:58 +0000275 defaults_visibility: ["//packages/modules:__subpackages__"],
276}
Zhi Douc4eea7d2022-12-09 22:24:42 +0000277
Harshit Mahajan83b67d12023-08-16 13:15:07 +0000278apex_defaults {
279 name: "v-launched-apex-module",
280 defaults: ["any-launched-apex-modules"],
281 min_sdk_version: "VanillaIceCream",
282 // Indicates that pre-installed version of this apex can be compressed.
283 // Whether it actually will be compressed is controlled on per-device basis.
284 compressible: true,
285 defaults_visibility: ["//packages/modules:__subpackages__"],
286}
287
Harshit Mahajan2e287652024-08-28 10:38:26 +0000288apex_defaults {
289 name: "b-launched-apex-module",
290 defaults: ["any-launched-apex-modules"],
291 min_sdk_version: "Baklava",
292 // Indicates that pre-installed version of this apex can be compressed.
293 // Whether it actually will be compressed is controlled on per-device basis.
294 compressible: true,
295 defaults_visibility: ["//packages/modules:__subpackages__"],
296}
297
Zhi Douc4eea7d2022-12-09 22:24:42 +0000298library_linking_strategy_cc_defaults {
299 name: "apex-lowest-min-sdk-version",
300 defaults_visibility: [
Steven Moreland4afc3622023-10-07 01:13:32 +0000301 "//system/core/libutils:__subpackages__",
Zhi Douc4eea7d2022-12-09 22:24:42 +0000302 ],
303 min_sdk_version: APEX_LOWEST_MIN_SDK_VERSION,
304 soong_config_variables: {
305 library_linking_strategy: {
306 prefer_static: {
307 min_sdk_version: "apex_inherit",
308 },
309 },
310 },
311}