xref: /aosp_15_r20/external/icu/android_icu4j/Android.bp (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
1*0e209d39SAndroid Build Coastguard Worker//
2*0e209d39SAndroid Build Coastguard Worker// Copyright (C) 2017 The Android Open Source Project
3*0e209d39SAndroid Build Coastguard Worker//
4*0e209d39SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
5*0e209d39SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
6*0e209d39SAndroid Build Coastguard Worker// You may obtain a copy of the License at
7*0e209d39SAndroid Build Coastguard Worker//
8*0e209d39SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
9*0e209d39SAndroid Build Coastguard Worker//
10*0e209d39SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
11*0e209d39SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
12*0e209d39SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*0e209d39SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
14*0e209d39SAndroid Build Coastguard Worker// limitations under the License.
15*0e209d39SAndroid Build Coastguard Worker//
16*0e209d39SAndroid Build Coastguard Worker
17*0e209d39SAndroid Build Coastguard Workerpackage {
18*0e209d39SAndroid Build Coastguard Worker    default_team: "trendy_team_java_core_libraries",
19*0e209d39SAndroid Build Coastguard Worker    default_visibility: ["//visibility:private"],
20*0e209d39SAndroid Build Coastguard Worker    // See: http://go/android-license-faq
21*0e209d39SAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
22*0e209d39SAndroid Build Coastguard Worker    // all of the 'license_kinds' from "external_icu_license"
23*0e209d39SAndroid Build Coastguard Worker    // to get the below license kinds:
24*0e209d39SAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
25*0e209d39SAndroid Build Coastguard Worker    //   SPDX-license-identifier-BSD
26*0e209d39SAndroid Build Coastguard Worker    //   SPDX-license-identifier-ICU
27*0e209d39SAndroid Build Coastguard Worker    //   SPDX-license-identifier-MIT
28*0e209d39SAndroid Build Coastguard Worker    //   SPDX-license-identifier-Unicode-DFS
29*0e209d39SAndroid Build Coastguard Worker    //   legacy_unencumbered
30*0e209d39SAndroid Build Coastguard Worker    default_applicable_licenses: ["external_icu_license"],
31*0e209d39SAndroid Build Coastguard Worker}
32*0e209d39SAndroid Build Coastguard Worker
33*0e209d39SAndroid Build Coastguard Worker//==========================================================
34*0e209d39SAndroid Build Coastguard Worker// build repackaged ICU for target
35*0e209d39SAndroid Build Coastguard Worker//
36*0e209d39SAndroid Build Coastguard Worker// This is done in the libcore/JavaLibraries.mk file as there are circular
37*0e209d39SAndroid Build Coastguard Worker// dependencies between ICU and libcore
38*0e209d39SAndroid Build Coastguard Worker//==========================================================
39*0e209d39SAndroid Build Coastguard Workerfilegroup {
40*0e209d39SAndroid Build Coastguard Worker    name: "android_icu4j_public_api_files",
41*0e209d39SAndroid Build Coastguard Worker    srcs: [
42*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_repackaged_src_files",
43*0e209d39SAndroid Build Coastguard Worker    ],
44*0e209d39SAndroid Build Coastguard Worker    path: "src/main/java",
45*0e209d39SAndroid Build Coastguard Worker}
46*0e209d39SAndroid Build Coastguard Worker
47*0e209d39SAndroid Build Coastguard Workerfilegroup {
48*0e209d39SAndroid Build Coastguard Worker    name: "android_icu4j_repackaged_src_files",
49*0e209d39SAndroid Build Coastguard Worker    srcs: ["src/main/java/android/icu/**/*.java"],
50*0e209d39SAndroid Build Coastguard Worker    path: "src/main/java",
51*0e209d39SAndroid Build Coastguard Worker}
52*0e209d39SAndroid Build Coastguard Worker
53*0e209d39SAndroid Build Coastguard Worker// The files contains Android-specific codes to expose intra-core APIs
54*0e209d39SAndroid Build Coastguard Worker// from ICU4J/ICU4C to libcore or core platform APIs to the framework.
55*0e209d39SAndroid Build Coastguard Worker// The package is com.android.icu.* and should not expose any public APIs.
56*0e209d39SAndroid Build Coastguard Workerfilegroup {
57*0e209d39SAndroid Build Coastguard Worker    name: "libcore_icu_bridge_src_files",
58*0e209d39SAndroid Build Coastguard Worker    srcs: ["libcore_bridge/src/java/**/*.java"],
59*0e209d39SAndroid Build Coastguard Worker    path: "libcore_bridge/src/java",
60*0e209d39SAndroid Build Coastguard Worker}
61*0e209d39SAndroid Build Coastguard Worker
62*0e209d39SAndroid Build Coastguard Workerjava_defaults {
63*0e209d39SAndroid Build Coastguard Worker    name: "libcore_icu_bridge_defaults",
64*0e209d39SAndroid Build Coastguard Worker    srcs: [
65*0e209d39SAndroid Build Coastguard Worker        "libcore_bridge/src/java/**/*.java",
66*0e209d39SAndroid Build Coastguard Worker        ":app-compat-annotations-source",
67*0e209d39SAndroid Build Coastguard Worker    ],
68*0e209d39SAndroid Build Coastguard Worker    jarjar_rules: "jarjar-rules.txt",
69*0e209d39SAndroid Build Coastguard Worker    plugins: [
70*0e209d39SAndroid Build Coastguard Worker        "compat-changeid-annotation-processor",
71*0e209d39SAndroid Build Coastguard Worker    ],
72*0e209d39SAndroid Build Coastguard Worker}
73*0e209d39SAndroid Build Coastguard Worker
74*0e209d39SAndroid Build Coastguard Worker// A host library containing time zone related classes. Used for
75*0e209d39SAndroid Build Coastguard Worker// host-side tools and tests that have to deal with Android
76*0e209d39SAndroid Build Coastguard Worker// time zone data.
77*0e209d39SAndroid Build Coastguard Workerjava_library_host {
78*0e209d39SAndroid Build Coastguard Worker    name: "timezone-host",
79*0e209d39SAndroid Build Coastguard Worker    visibility: [
80*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
81*0e209d39SAndroid Build Coastguard Worker        "//system/timezone/input_tools/version",
82*0e209d39SAndroid Build Coastguard Worker    ],
83*0e209d39SAndroid Build Coastguard Worker    srcs: [
84*0e209d39SAndroid Build Coastguard Worker        "libcore_bridge/src/java/com/android/i18n/timezone/TzDataSetVersion.java",
85*0e209d39SAndroid Build Coastguard Worker    ],
86*0e209d39SAndroid Build Coastguard Worker    libs: [
87*0e209d39SAndroid Build Coastguard Worker        "art.module.api.annotations",
88*0e209d39SAndroid Build Coastguard Worker    ],
89*0e209d39SAndroid Build Coastguard Worker}
90*0e209d39SAndroid Build Coastguard Worker
91*0e209d39SAndroid Build Coastguard Worker// core-repackaged-icu4j contains only the repackaged ICU4J that does not
92*0e209d39SAndroid Build Coastguard Worker// use any internal or android specific code. If it ever did then it could depend on
93*0e209d39SAndroid Build Coastguard Worker// art-module-intra-core-api-stubs-system-modules (a superset) instead.
94*0e209d39SAndroid Build Coastguard Worker// It is important that core-icu4j is restricted to only use stable APIs from the ART module
95*0e209d39SAndroid Build Coastguard Worker// since it is in a different APEX module that can be updated independently.
96*0e209d39SAndroid Build Coastguard Workerjava_library_static {
97*0e209d39SAndroid Build Coastguard Worker    name: "core-repackaged-icu4j",
98*0e209d39SAndroid Build Coastguard Worker    installable: false,
99*0e209d39SAndroid Build Coastguard Worker    srcs: [":android_icu4j_repackaged_src_files"],
100*0e209d39SAndroid Build Coastguard Worker    libs: [
101*0e209d39SAndroid Build Coastguard Worker        "unsupportedappusage",
102*0e209d39SAndroid Build Coastguard Worker        // Need framework-api-annotations-lib for @FlaggedApi.
103*0e209d39SAndroid Build Coastguard Worker        // Put framework-api-annotations into libs to avoid exposing the definition of framework's
104*0e209d39SAndroid Build Coastguard Worker        // annotations from ICU (wrong place) instead of framework (correct place).
105*0e209d39SAndroid Build Coastguard Worker        "framework-annotations-lib",
106*0e209d39SAndroid Build Coastguard Worker        // We only need the aconfig library for @FlaggedApi. We can move it to static_libs
107*0e209d39SAndroid Build Coastguard Worker        // if we need it for flagging features in the future.
108*0e209d39SAndroid Build Coastguard Worker        "icu_aconfig_flags_lib",
109*0e209d39SAndroid Build Coastguard Worker    ],
110*0e209d39SAndroid Build Coastguard Worker    // The resource files are generated in the downstream branch master-icu-dev.
111*0e209d39SAndroid Build Coastguard Worker    java_resource_dirs: ["resources"],
112*0e209d39SAndroid Build Coastguard Worker
113*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
114*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-public-api-stubs-system-modules",
115*0e209d39SAndroid Build Coastguard Worker
116*0e209d39SAndroid Build Coastguard Worker    dxflags: ["--core-library"],
117*0e209d39SAndroid Build Coastguard Worker    apex_available: [
118*0e209d39SAndroid Build Coastguard Worker        "com.android.i18n",
119*0e209d39SAndroid Build Coastguard Worker    ],
120*0e209d39SAndroid Build Coastguard Worker    errorprone: {
121*0e209d39SAndroid Build Coastguard Worker        javacflags: [
122*0e209d39SAndroid Build Coastguard Worker            "-Xep:MissingOverride:OFF", // Ignore missing @Override.
123*0e209d39SAndroid Build Coastguard Worker            "-Xep:ConstantOverflow:WARN", // Known constant overflow in SplittableRandom
124*0e209d39SAndroid Build Coastguard Worker            "-Xep:BoxedPrimitiveEquality:WARN",
125*0e209d39SAndroid Build Coastguard Worker            "-Xep:ComparableType:WARN",
126*0e209d39SAndroid Build Coastguard Worker            "-Xep:EmptyTopLevelDeclaration:WARN",
127*0e209d39SAndroid Build Coastguard Worker        ],
128*0e209d39SAndroid Build Coastguard Worker    },
129*0e209d39SAndroid Build Coastguard Worker    lint: {
130*0e209d39SAndroid Build Coastguard Worker        warning_checks: ["SuspiciousIndentation"],
131*0e209d39SAndroid Build Coastguard Worker        baseline_filename: "lint-baseline.xml",
132*0e209d39SAndroid Build Coastguard Worker    },
133*0e209d39SAndroid Build Coastguard Worker}
134*0e209d39SAndroid Build Coastguard Worker
135*0e209d39SAndroid Build Coastguard Worker// A separated core library that contains ICU4J because ICU4J will be in a different APEX module,
136*0e209d39SAndroid Build Coastguard Worker// not in ART module.
137*0e209d39SAndroid Build Coastguard Workerjava_library {
138*0e209d39SAndroid Build Coastguard Worker    name: "core-icu4j",
139*0e209d39SAndroid Build Coastguard Worker    defaults: ["libcore_icu_bridge_defaults"],
140*0e209d39SAndroid Build Coastguard Worker    visibility: [
141*0e209d39SAndroid Build Coastguard Worker        "//art/tools/fuzzer",
142*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
143*0e209d39SAndroid Build Coastguard Worker    ],
144*0e209d39SAndroid Build Coastguard Worker    apex_available: [
145*0e209d39SAndroid Build Coastguard Worker        "com.android.i18n",
146*0e209d39SAndroid Build Coastguard Worker    ],
147*0e209d39SAndroid Build Coastguard Worker    permitted_packages: [
148*0e209d39SAndroid Build Coastguard Worker        "android.icu",
149*0e209d39SAndroid Build Coastguard Worker        "com.android.icu",
150*0e209d39SAndroid Build Coastguard Worker        "com.android.i18n.system",
151*0e209d39SAndroid Build Coastguard Worker        "com.android.i18n.timezone",
152*0e209d39SAndroid Build Coastguard Worker        "com.android.i18n.util",
153*0e209d39SAndroid Build Coastguard Worker    ],
154*0e209d39SAndroid Build Coastguard Worker    installable: true,
155*0e209d39SAndroid Build Coastguard Worker    hostdex: false,
156*0e209d39SAndroid Build Coastguard Worker
157*0e209d39SAndroid Build Coastguard Worker    static_libs: ["core-repackaged-icu4j"],
158*0e209d39SAndroid Build Coastguard Worker
159*0e209d39SAndroid Build Coastguard Worker    // It is important that core-icu4j is restricted to only use stable APIs from the ART module
160*0e209d39SAndroid Build Coastguard Worker    // since it is in a different APEX module that can be updated independently.
161*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
162*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-intra-core-api-stubs-system-modules",
163*0e209d39SAndroid Build Coastguard Worker
164*0e209d39SAndroid Build Coastguard Worker    dxflags: ["--core-library"],
165*0e209d39SAndroid Build Coastguard Worker}
166*0e209d39SAndroid Build Coastguard Worker
167*0e209d39SAndroid Build Coastguard Worker// Java library for use on host, e.g. by ravenwood, robolectric.
168*0e209d39SAndroid Build Coastguard Workerjava_library {
169*0e209d39SAndroid Build Coastguard Worker    name: "core-icu4j-for-host",
170*0e209d39SAndroid Build Coastguard Worker    visibility: [
171*0e209d39SAndroid Build Coastguard Worker        "//art/build",
172*0e209d39SAndroid Build Coastguard Worker        "//external/robolectric",
173*0e209d39SAndroid Build Coastguard Worker        "//external/robolectric-shadows",
174*0e209d39SAndroid Build Coastguard Worker        "//frameworks/layoutlib",
175*0e209d39SAndroid Build Coastguard Worker        "//frameworks/base/ravenwood:__subpackages__",
176*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
177*0e209d39SAndroid Build Coastguard Worker    ],
178*0e209d39SAndroid Build Coastguard Worker    static_libs: [
179*0e209d39SAndroid Build Coastguard Worker        "core-icu4j",
180*0e209d39SAndroid Build Coastguard Worker    ],
181*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
182*0e209d39SAndroid Build Coastguard Worker    system_modules: "none",
183*0e209d39SAndroid Build Coastguard Worker}
184*0e209d39SAndroid Build Coastguard Worker
185*0e209d39SAndroid Build Coastguard Workerplatform_compat_config {
186*0e209d39SAndroid Build Coastguard Worker    name: "icu4j-platform-compat-config",
187*0e209d39SAndroid Build Coastguard Worker    src: ":core-icu4j",
188*0e209d39SAndroid Build Coastguard Worker    visibility: [
189*0e209d39SAndroid Build Coastguard Worker        "//frameworks/base",
190*0e209d39SAndroid Build Coastguard Worker    ],
191*0e209d39SAndroid Build Coastguard Worker}
192*0e209d39SAndroid Build Coastguard Worker
193*0e209d39SAndroid Build Coastguard Workerjava_sdk_library {
194*0e209d39SAndroid Build Coastguard Worker    name: "i18n.module.public.api",
195*0e209d39SAndroid Build Coastguard Worker    visibility: [
196*0e209d39SAndroid Build Coastguard Worker        "//build/soong/java/core-libraries",
197*0e209d39SAndroid Build Coastguard Worker        "//frameworks/base",
198*0e209d39SAndroid Build Coastguard Worker        "//frameworks/base/api",
199*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
200*0e209d39SAndroid Build Coastguard Worker        // Visibility for prebuilt i18n-module-sdk from the prebuilt of
201*0e209d39SAndroid Build Coastguard Worker        // this module.
202*0e209d39SAndroid Build Coastguard Worker        // TODO(b/155921753): Restrict this when prebuilts are in their proper
203*0e209d39SAndroid Build Coastguard Worker        // locations.
204*0e209d39SAndroid Build Coastguard Worker        "//prebuilts:__subpackages__",
205*0e209d39SAndroid Build Coastguard Worker    ],
206*0e209d39SAndroid Build Coastguard Worker    // Added to make sure that no private classes leak out in stubs.
207*0e209d39SAndroid Build Coastguard Worker    defaults: ["libcore_icu_bridge_defaults"],
208*0e209d39SAndroid Build Coastguard Worker    srcs: [
209*0e209d39SAndroid Build Coastguard Worker        // Added to make sure that no private classes leak out in stubs.
210*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_repackaged_src_files",
211*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_public_api_files",
212*0e209d39SAndroid Build Coastguard Worker    ],
213*0e209d39SAndroid Build Coastguard Worker    libs: [
214*0e209d39SAndroid Build Coastguard Worker        "icu_aconfig_flags_lib",
215*0e209d39SAndroid Build Coastguard Worker    ],
216*0e209d39SAndroid Build Coastguard Worker    droiddoc_options: [
217*0e209d39SAndroid Build Coastguard Worker        "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* ",
218*0e209d39SAndroid Build Coastguard Worker    ],
219*0e209d39SAndroid Build Coastguard Worker    errorprone: {
220*0e209d39SAndroid Build Coastguard Worker        javacflags: [
221*0e209d39SAndroid Build Coastguard Worker            "-Xep:MissingOverride:OFF",
222*0e209d39SAndroid Build Coastguard Worker        ],
223*0e209d39SAndroid Build Coastguard Worker    },
224*0e209d39SAndroid Build Coastguard Worker    lint: {
225*0e209d39SAndroid Build Coastguard Worker        warning_checks: ["SuspiciousIndentation"],
226*0e209d39SAndroid Build Coastguard Worker    },
227*0e209d39SAndroid Build Coastguard Worker
228*0e209d39SAndroid Build Coastguard Worker    public: {
229*0e209d39SAndroid Build Coastguard Worker        enabled: true,
230*0e209d39SAndroid Build Coastguard Worker    },
231*0e209d39SAndroid Build Coastguard Worker    system: {
232*0e209d39SAndroid Build Coastguard Worker        enabled: true,
233*0e209d39SAndroid Build Coastguard Worker    },
234*0e209d39SAndroid Build Coastguard Worker    module_lib: {
235*0e209d39SAndroid Build Coastguard Worker        enabled: true,
236*0e209d39SAndroid Build Coastguard Worker    },
237*0e209d39SAndroid Build Coastguard Worker
238*0e209d39SAndroid Build Coastguard Worker    api_dir: "api/public",
239*0e209d39SAndroid Build Coastguard Worker    api_only: true,
240*0e209d39SAndroid Build Coastguard Worker
241*0e209d39SAndroid Build Coastguard Worker    // Emit nullability annotations from the source to the stub files.
242*0e209d39SAndroid Build Coastguard Worker    annotations_enabled: true,
243*0e209d39SAndroid Build Coastguard Worker
244*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
245*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-public-api-stubs-system-modules",
246*0e209d39SAndroid Build Coastguard Worker
247*0e209d39SAndroid Build Coastguard Worker    // The base name for the artifacts that are automatically published to the
248*0e209d39SAndroid Build Coastguard Worker    // dist and which end up in one of the sub-directories of prebuilts/sdk.
249*0e209d39SAndroid Build Coastguard Worker    // As long as this matches the name of the artifacts in prebuilts/sdk then
250*0e209d39SAndroid Build Coastguard Worker    // the API will be checked for compatibility against the latest released
251*0e209d39SAndroid Build Coastguard Worker    // version of the API.
252*0e209d39SAndroid Build Coastguard Worker    dist_stem: "runtime-i18n",
253*0e209d39SAndroid Build Coastguard Worker    dist_group: "android",
254*0e209d39SAndroid Build Coastguard Worker    aconfig_declarations: [
255*0e209d39SAndroid Build Coastguard Worker        "icu_aconfig_flags",
256*0e209d39SAndroid Build Coastguard Worker    ],
257*0e209d39SAndroid Build Coastguard Worker}
258*0e209d39SAndroid Build Coastguard Worker
259*0e209d39SAndroid Build Coastguard Worker// Generates stub source files for the intra-core API of the I18N module.
260*0e209d39SAndroid Build Coastguard Worker// i.e. every class/member that is either in the public API or annotated with
261*0e209d39SAndroid Build Coastguard Worker// @IntraCoreApi.
262*0e209d39SAndroid Build Coastguard Worker//
263*0e209d39SAndroid Build Coastguard Worker// The API specification .txt files managed by this only contain the additional
264*0e209d39SAndroid Build Coastguard Worker// classes/members that are in the intra-core API but which are not the public
265*0e209d39SAndroid Build Coastguard Worker// API.
266*0e209d39SAndroid Build Coastguard Workerjava_sdk_library {
267*0e209d39SAndroid Build Coastguard Worker    name: "i18n.module.intra.core.api",
268*0e209d39SAndroid Build Coastguard Worker    defaults: ["libcore_icu_bridge_defaults"],
269*0e209d39SAndroid Build Coastguard Worker    srcs: [
270*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_repackaged_src_files",
271*0e209d39SAndroid Build Coastguard Worker    ],
272*0e209d39SAndroid Build Coastguard Worker    visibility: [
273*0e209d39SAndroid Build Coastguard Worker        "//libcore:__subpackages__",
274*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
275*0e209d39SAndroid Build Coastguard Worker        // Visibility for prebuilt i18n-module-sdk from the prebuilt of
276*0e209d39SAndroid Build Coastguard Worker        // this module.
277*0e209d39SAndroid Build Coastguard Worker        // TODO(b/155921753): Restrict this when prebuilts are in their proper
278*0e209d39SAndroid Build Coastguard Worker        // locations.
279*0e209d39SAndroid Build Coastguard Worker        "//prebuilts:__subpackages__",
280*0e209d39SAndroid Build Coastguard Worker    ],
281*0e209d39SAndroid Build Coastguard Worker    api_dir: "api/intra",
282*0e209d39SAndroid Build Coastguard Worker    api_only: true,
283*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
284*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-intra-core-api-stubs-system-modules",
285*0e209d39SAndroid Build Coastguard Worker
286*0e209d39SAndroid Build Coastguard Worker    droiddoc_options: [
287*0e209d39SAndroid Build Coastguard Worker        "--hide-annotation libcore.api.Hide ",
288*0e209d39SAndroid Build Coastguard Worker        "--show-single-annotation libcore.api.IntraCoreApi ",
289*0e209d39SAndroid Build Coastguard Worker    ],
290*0e209d39SAndroid Build Coastguard Worker
291*0e209d39SAndroid Build Coastguard Worker    // Don't copy any output files to the dist.
292*0e209d39SAndroid Build Coastguard Worker    no_dist: true,
293*0e209d39SAndroid Build Coastguard Worker
294*0e209d39SAndroid Build Coastguard Worker    lint: {
295*0e209d39SAndroid Build Coastguard Worker        warning_checks: ["SuspiciousIndentation"],
296*0e209d39SAndroid Build Coastguard Worker    },
297*0e209d39SAndroid Build Coastguard Worker
298*0e209d39SAndroid Build Coastguard Worker    // This module's output stubs contain apis defined in "i18n.module.public.api.stubs",
299*0e209d39SAndroid Build Coastguard Worker    // but adding "i18n.module.public.api" as a dependency of this module leads to circular
300*0e209d39SAndroid Build Coastguard Worker    // dependency and requires further bootstrapping. Thus, disable stubs generation from the
301*0e209d39SAndroid Build Coastguard Worker    // api signature files and generate stubs from the source Java files instead.
302*0e209d39SAndroid Build Coastguard Worker    build_from_text_stub: false,
303*0e209d39SAndroid Build Coastguard Worker}
304*0e209d39SAndroid Build Coastguard Worker
305*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from i18n.module.intra.core.api.
306*0e209d39SAndroid Build Coastguard Workerfilegroup {
307*0e209d39SAndroid Build Coastguard Worker    name: "i18n.module.intra.core.api.api.combined.public.latest",
308*0e209d39SAndroid Build Coastguard Worker    srcs: [
309*0e209d39SAndroid Build Coastguard Worker        "api/intra/last-api.txt",
310*0e209d39SAndroid Build Coastguard Worker    ],
311*0e209d39SAndroid Build Coastguard Worker}
312*0e209d39SAndroid Build Coastguard Worker
313*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from i18n.module.intra.core.api.
314*0e209d39SAndroid Build Coastguard Workerfilegroup {
315*0e209d39SAndroid Build Coastguard Worker    name: "i18n.module.intra.core.api-removed.api.combined.public.latest",
316*0e209d39SAndroid Build Coastguard Worker    srcs: [
317*0e209d39SAndroid Build Coastguard Worker        "api/intra/last-removed.txt",
318*0e209d39SAndroid Build Coastguard Worker    ],
319*0e209d39SAndroid Build Coastguard Worker}
320*0e209d39SAndroid Build Coastguard Worker
321*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from i18n.module.intra.core.api.
322*0e209d39SAndroid Build Coastguard Workerfilegroup {
323*0e209d39SAndroid Build Coastguard Worker    name: "i18n.module.intra.core.api-incompatibilities.api.public.latest",
324*0e209d39SAndroid Build Coastguard Worker    srcs: [
325*0e209d39SAndroid Build Coastguard Worker        "api/intra/last-incompatibilities.txt",
326*0e209d39SAndroid Build Coastguard Worker    ],
327*0e209d39SAndroid Build Coastguard Worker}
328*0e209d39SAndroid Build Coastguard Worker
329*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from legacy.i18n.module.platform.api.
330*0e209d39SAndroid Build Coastguard Workerfilegroup {
331*0e209d39SAndroid Build Coastguard Worker    name: "legacy.i18n.module.platform.api.api.combined.public.latest",
332*0e209d39SAndroid Build Coastguard Worker    srcs: [
333*0e209d39SAndroid Build Coastguard Worker        "api/legacy_platform/last-api.txt",
334*0e209d39SAndroid Build Coastguard Worker    ],
335*0e209d39SAndroid Build Coastguard Worker}
336*0e209d39SAndroid Build Coastguard Worker
337*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from legacy.i18n.module.platform.api.
338*0e209d39SAndroid Build Coastguard Workerfilegroup {
339*0e209d39SAndroid Build Coastguard Worker    name: "legacy.i18n.module.platform.api-removed.api.combined.public.latest",
340*0e209d39SAndroid Build Coastguard Worker    srcs: [
341*0e209d39SAndroid Build Coastguard Worker        "api/legacy_platform/last-removed.txt",
342*0e209d39SAndroid Build Coastguard Worker    ],
343*0e209d39SAndroid Build Coastguard Worker}
344*0e209d39SAndroid Build Coastguard Worker
345*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from legacy.i18n.module.platform.api.
346*0e209d39SAndroid Build Coastguard Workerfilegroup {
347*0e209d39SAndroid Build Coastguard Worker    name: "legacy.i18n.module.platform.api-incompatibilities.api.public.latest",
348*0e209d39SAndroid Build Coastguard Worker    srcs: [
349*0e209d39SAndroid Build Coastguard Worker        "api/legacy_platform/last-incompatibilities.txt",
350*0e209d39SAndroid Build Coastguard Worker    ],
351*0e209d39SAndroid Build Coastguard Worker}
352*0e209d39SAndroid Build Coastguard Worker
353*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from stable.i18n.module.platform.api.
354*0e209d39SAndroid Build Coastguard Workerfilegroup {
355*0e209d39SAndroid Build Coastguard Worker    name: "stable.i18n.module.platform.api.api.combined.public.latest",
356*0e209d39SAndroid Build Coastguard Worker    srcs: [
357*0e209d39SAndroid Build Coastguard Worker        "api/stable_platform/last-api.txt",
358*0e209d39SAndroid Build Coastguard Worker    ],
359*0e209d39SAndroid Build Coastguard Worker}
360*0e209d39SAndroid Build Coastguard Worker
361*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from stable.i18n.module.platform.api.
362*0e209d39SAndroid Build Coastguard Workerfilegroup {
363*0e209d39SAndroid Build Coastguard Worker    name: "stable.i18n.module.platform.api-removed.api.combined.public.latest",
364*0e209d39SAndroid Build Coastguard Worker    srcs: [
365*0e209d39SAndroid Build Coastguard Worker        "api/stable_platform/last-removed.txt",
366*0e209d39SAndroid Build Coastguard Worker    ],
367*0e209d39SAndroid Build Coastguard Worker}
368*0e209d39SAndroid Build Coastguard Worker
369*0e209d39SAndroid Build Coastguard Worker// Referenced implicitly from stable.i18n.module.platform.api.
370*0e209d39SAndroid Build Coastguard Workerfilegroup {
371*0e209d39SAndroid Build Coastguard Worker    name: "stable.i18n.module.platform.api-incompatibilities.api.public.latest",
372*0e209d39SAndroid Build Coastguard Worker    srcs: [
373*0e209d39SAndroid Build Coastguard Worker        "api/stable_platform/last-incompatibilities.txt",
374*0e209d39SAndroid Build Coastguard Worker    ],
375*0e209d39SAndroid Build Coastguard Worker}
376*0e209d39SAndroid Build Coastguard Worker
377*0e209d39SAndroid Build Coastguard Worker// Used by ravenwood for processing
378*0e209d39SAndroid Build Coastguard Workerfilegroup {
379*0e209d39SAndroid Build Coastguard Worker    name: "icu-ravenwood-policies",
380*0e209d39SAndroid Build Coastguard Worker    visibility: ["//frameworks/base/ravenwood"],
381*0e209d39SAndroid Build Coastguard Worker    srcs: [
382*0e209d39SAndroid Build Coastguard Worker        "icu-ravenwood-policies.txt",
383*0e209d39SAndroid Build Coastguard Worker    ],
384*0e209d39SAndroid Build Coastguard Worker}
385*0e209d39SAndroid Build Coastguard Worker
386*0e209d39SAndroid Build Coastguard Worker// Generates stub source files for the core platform API of the I18N module.
387*0e209d39SAndroid Build Coastguard Worker// i.e. every class/member that is either in the public API or annotated with
388*0e209d39SAndroid Build Coastguard Worker// @CorePlatformApi.
389*0e209d39SAndroid Build Coastguard Worker//
390*0e209d39SAndroid Build Coastguard Worker// The API specification .txt files managed by this only contain the additional
391*0e209d39SAndroid Build Coastguard Worker// classes/members that are in the intra-core API but which are not in the public
392*0e209d39SAndroid Build Coastguard Worker// API.
393*0e209d39SAndroid Build Coastguard Worker//
394*0e209d39SAndroid Build Coastguard Worker// For notes on the legacy and stable versions see mmodules/core_platform_api/Android.bp.
395*0e209d39SAndroid Build Coastguard Worker
396*0e209d39SAndroid Build Coastguard Workerjava_sdk_library {
397*0e209d39SAndroid Build Coastguard Worker    name: "legacy.i18n.module.platform.api",
398*0e209d39SAndroid Build Coastguard Worker    defaults: ["libcore_icu_bridge_defaults"],
399*0e209d39SAndroid Build Coastguard Worker    srcs: [
400*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_repackaged_src_files",
401*0e209d39SAndroid Build Coastguard Worker    ],
402*0e209d39SAndroid Build Coastguard Worker    visibility: [
403*0e209d39SAndroid Build Coastguard Worker        "//build/soong/java/core-libraries",
404*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
405*0e209d39SAndroid Build Coastguard Worker        // Visibility for prebuilt i18n-module-sdk from the prebuilt of
406*0e209d39SAndroid Build Coastguard Worker        // this module.
407*0e209d39SAndroid Build Coastguard Worker        // TODO(b/155921753): Restrict this when prebuilts are in their proper
408*0e209d39SAndroid Build Coastguard Worker        // locations.
409*0e209d39SAndroid Build Coastguard Worker        "//prebuilts:__subpackages__",
410*0e209d39SAndroid Build Coastguard Worker    ],
411*0e209d39SAndroid Build Coastguard Worker    hostdex: true,
412*0e209d39SAndroid Build Coastguard Worker    api_dir: "api/legacy_platform",
413*0e209d39SAndroid Build Coastguard Worker    api_only: true,
414*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
415*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-lib-api-stubs-system-modules",
416*0e209d39SAndroid Build Coastguard Worker
417*0e209d39SAndroid Build Coastguard Worker    droiddoc_options: [
418*0e209d39SAndroid Build Coastguard Worker        "--hide-annotation libcore.api.Hide ",
419*0e209d39SAndroid Build Coastguard Worker        "--show-single-annotation libcore.api.CorePlatformApi ",
420*0e209d39SAndroid Build Coastguard Worker    ],
421*0e209d39SAndroid Build Coastguard Worker
422*0e209d39SAndroid Build Coastguard Worker    // Don't copy any output files to the dist.
423*0e209d39SAndroid Build Coastguard Worker    no_dist: true,
424*0e209d39SAndroid Build Coastguard Worker
425*0e209d39SAndroid Build Coastguard Worker    lint: {
426*0e209d39SAndroid Build Coastguard Worker        warning_checks: ["SuspiciousIndentation"],
427*0e209d39SAndroid Build Coastguard Worker    },
428*0e209d39SAndroid Build Coastguard Worker}
429*0e209d39SAndroid Build Coastguard Worker
430*0e209d39SAndroid Build Coastguard Workerjava_sdk_library {
431*0e209d39SAndroid Build Coastguard Worker    name: "stable.i18n.module.platform.api",
432*0e209d39SAndroid Build Coastguard Worker    defaults: ["libcore_icu_bridge_defaults"],
433*0e209d39SAndroid Build Coastguard Worker    srcs: [
434*0e209d39SAndroid Build Coastguard Worker        ":android_icu4j_repackaged_src_files",
435*0e209d39SAndroid Build Coastguard Worker    ],
436*0e209d39SAndroid Build Coastguard Worker    visibility: [
437*0e209d39SAndroid Build Coastguard Worker        "//build/soong/java/core-libraries",
438*0e209d39SAndroid Build Coastguard Worker        "//packages/modules/RuntimeI18n/apex",
439*0e209d39SAndroid Build Coastguard Worker        // Visibility for prebuilt i18n-module-sdk from the prebuilt of
440*0e209d39SAndroid Build Coastguard Worker        // this module.
441*0e209d39SAndroid Build Coastguard Worker        // TODO(b/155921753): Restrict this when prebuilts are in their proper
442*0e209d39SAndroid Build Coastguard Worker        // locations.
443*0e209d39SAndroid Build Coastguard Worker        "//prebuilts:__subpackages__",
444*0e209d39SAndroid Build Coastguard Worker    ],
445*0e209d39SAndroid Build Coastguard Worker    hostdex: true,
446*0e209d39SAndroid Build Coastguard Worker    api_dir: "api/stable_platform",
447*0e209d39SAndroid Build Coastguard Worker    api_only: true,
448*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
449*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-lib-api-stubs-system-modules",
450*0e209d39SAndroid Build Coastguard Worker
451*0e209d39SAndroid Build Coastguard Worker    droiddoc_options: [
452*0e209d39SAndroid Build Coastguard Worker        "--hide-annotation libcore.api.Hide ",
453*0e209d39SAndroid Build Coastguard Worker        "--show-single-annotation libcore.api.CorePlatformApi\\(status=libcore.api.CorePlatformApi.Status.STABLE\\)",
454*0e209d39SAndroid Build Coastguard Worker    ],
455*0e209d39SAndroid Build Coastguard Worker
456*0e209d39SAndroid Build Coastguard Worker    // Don't copy any output files to the dist.
457*0e209d39SAndroid Build Coastguard Worker    no_dist: true,
458*0e209d39SAndroid Build Coastguard Worker
459*0e209d39SAndroid Build Coastguard Worker    lint: {
460*0e209d39SAndroid Build Coastguard Worker        warning_checks: ["SuspiciousIndentation"],
461*0e209d39SAndroid Build Coastguard Worker    },
462*0e209d39SAndroid Build Coastguard Worker}
463*0e209d39SAndroid Build Coastguard Worker
464*0e209d39SAndroid Build Coastguard Worker//==========================================================
465*0e209d39SAndroid Build Coastguard Worker// build repackaged ICU tests
466*0e209d39SAndroid Build Coastguard Worker//
467*0e209d39SAndroid Build Coastguard Worker// Target builds against core-libart and core-oj so that it can access all the
468*0e209d39SAndroid Build Coastguard Worker// repackaged android.icu classes and methods and not just the ones available
469*0e209d39SAndroid Build Coastguard Worker// through the Android API.
470*0e209d39SAndroid Build Coastguard Worker//==========================================================
471*0e209d39SAndroid Build Coastguard Workerjava_defaults {
472*0e209d39SAndroid Build Coastguard Worker    name: "android-icu4j-tests-default",
473*0e209d39SAndroid Build Coastguard Worker    visibility: [
474*0e209d39SAndroid Build Coastguard Worker        "//cts/tests/tests/icu",
475*0e209d39SAndroid Build Coastguard Worker    ],
476*0e209d39SAndroid Build Coastguard Worker    java_resource_dirs: [
477*0e209d39SAndroid Build Coastguard Worker        "src/main/tests",
478*0e209d39SAndroid Build Coastguard Worker        "testing/src",
479*0e209d39SAndroid Build Coastguard Worker    ],
480*0e209d39SAndroid Build Coastguard Worker    libs: [
481*0e209d39SAndroid Build Coastguard Worker        "core-icu4j",
482*0e209d39SAndroid Build Coastguard Worker    ],
483*0e209d39SAndroid Build Coastguard Worker    static_libs: [
484*0e209d39SAndroid Build Coastguard Worker        "gson",
485*0e209d39SAndroid Build Coastguard Worker        "junit",
486*0e209d39SAndroid Build Coastguard Worker        "junit-params",
487*0e209d39SAndroid Build Coastguard Worker        "tzdata-testing",
488*0e209d39SAndroid Build Coastguard Worker    ],
489*0e209d39SAndroid Build Coastguard Worker
490*0e209d39SAndroid Build Coastguard Worker    patch_module: "java.base",
491*0e209d39SAndroid Build Coastguard Worker    sdk_version: "none",
492*0e209d39SAndroid Build Coastguard Worker    system_modules: "art-module-intra-core-api-stubs-system-modules",
493*0e209d39SAndroid Build Coastguard Worker
494*0e209d39SAndroid Build Coastguard Worker    errorprone: {
495*0e209d39SAndroid Build Coastguard Worker        javacflags: [
496*0e209d39SAndroid Build Coastguard Worker            "-Xep:EqualsNull:WARN",
497*0e209d39SAndroid Build Coastguard Worker            "-Xep:ArrayToString:WARN",
498*0e209d39SAndroid Build Coastguard Worker            "-Xep:SelfEquals:WARN",
499*0e209d39SAndroid Build Coastguard Worker            "-Xep:SelfComparison:WARN",
500*0e209d39SAndroid Build Coastguard Worker            "-Xep:ReturnValueIgnored:WARN",
501*0e209d39SAndroid Build Coastguard Worker            "-Xep:IdentityBinaryExpression:WARN",
502*0e209d39SAndroid Build Coastguard Worker            "-Xep:BoxedPrimitiveEquality:WARN",
503*0e209d39SAndroid Build Coastguard Worker            "-Xep:ComparableType:WARN",
504*0e209d39SAndroid Build Coastguard Worker        ],
505*0e209d39SAndroid Build Coastguard Worker    },
506*0e209d39SAndroid Build Coastguard Worker}
507*0e209d39SAndroid Build Coastguard Worker
508*0e209d39SAndroid Build Coastguard Workerjava_test {
509*0e209d39SAndroid Build Coastguard Worker    name: "android-icu4j-tests",
510*0e209d39SAndroid Build Coastguard Worker    defaults: ["android-icu4j-tests-default"],
511*0e209d39SAndroid Build Coastguard Worker    visibility: [
512*0e209d39SAndroid Build Coastguard Worker        "//cts/tests/tests/icu",
513*0e209d39SAndroid Build Coastguard Worker    ],
514*0e209d39SAndroid Build Coastguard Worker    srcs: [
515*0e209d39SAndroid Build Coastguard Worker        "src/main/tests/**/*.java",
516*0e209d39SAndroid Build Coastguard Worker        "testing/src/**/*.java",
517*0e209d39SAndroid Build Coastguard Worker    ],
518*0e209d39SAndroid Build Coastguard Worker}
519*0e209d39SAndroid Build Coastguard Worker
520*0e209d39SAndroid Build Coastguard Worker// Equivalent to android-icu4j-tests, excluding the tests under testing/.
521*0e209d39SAndroid Build Coastguard Worker// We run this as ICU CTS on Ravenwood, where the testing/ tests won't pass due to lack of
522*0e209d39SAndroid Build Coastguard Worker// libcore.
523*0e209d39SAndroid Build Coastguard Workerjava_test {
524*0e209d39SAndroid Build Coastguard Worker    name: "android-icu4j-tests-core-only",
525*0e209d39SAndroid Build Coastguard Worker    defaults: ["android-icu4j-tests-default"],
526*0e209d39SAndroid Build Coastguard Worker    visibility: [
527*0e209d39SAndroid Build Coastguard Worker        "//cts/tests/tests/icu",
528*0e209d39SAndroid Build Coastguard Worker    ],
529*0e209d39SAndroid Build Coastguard Worker    srcs: [
530*0e209d39SAndroid Build Coastguard Worker        "src/main/tests/**/*.java",
531*0e209d39SAndroid Build Coastguard Worker        "testing/src/android/icu/testsharding/**/*.java",
532*0e209d39SAndroid Build Coastguard Worker    ],
533*0e209d39SAndroid Build Coastguard Worker    // TODO(b/340889954) Un-excluide the excluded tests.
534*0e209d39SAndroid Build Coastguard Worker    exclude_srcs: [
535*0e209d39SAndroid Build Coastguard Worker        // This class has a "known-failure", which we can't exclude on Ravenwood without
536*0e209d39SAndroid Build Coastguard Worker        // modifying this file, so let's just exclude the whole class for now.
537*0e209d39SAndroid Build Coastguard Worker        "src/main/tests/android/icu/dev/test/format/NumberFormatRegressionTest.java",
538*0e209d39SAndroid Build Coastguard Worker
539*0e209d39SAndroid Build Coastguard Worker        // This test takes too much time and hits the timeout.
540*0e209d39SAndroid Build Coastguard Worker        "src/main/tests/android/icu/dev/test/rbbi/RBBIMonkeyTest.java",
541*0e209d39SAndroid Build Coastguard Worker    ],
542*0e209d39SAndroid Build Coastguard Worker}
543