blob: 24792116b7520fc7ea2f1b6b2defac07bca5d648 [file] [log] [blame]
//
// Copyright (C) 2014 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package {
default_team: "trendy_team_java_core_libraries",
default_visibility: ["//visibility:private"],
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "external_icu_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
// SPDX-license-identifier-BSD
// SPDX-license-identifier-ICU
// SPDX-license-identifier-MIT
// SPDX-license-identifier-Unicode-DFS
// legacy_unencumbered
default_applicable_licenses: ["external_icu_license"],
}
java_defaults {
name: "icu4j-defaults",
host_supported: true,
hostdex: true,
// Use the same Java language version in the Android build configuration as used
// in main/shared/build/common.properties for the ICU4J build configuration.
java_version: "1.8",
lint: {
warning_checks: ["SuspiciousIndentation"],
},
errorprone: {
javacflags: [
"-Xep:EmptyTopLevelDeclaration:WARN",
"-Xep:BoxedPrimitiveEquality:WARN",
"-Xep:EqualsHashCode:WARN",
"-Xep:ComparableType:WARN",
"-Xep:SelfAssignment:WARN",
"-Xep:ReturnValueIgnored:WARN",
"-Xep:SelfComparison:WARN",
"-Xep:SelfEquals:WARN",
"-Xep:MisusedDayOfYear:WARN",
"-Xep:MisusedWeekYear:WARN",
"-Xep:IdentityBinaryExpression:WARN",
],
},
sdk_version: "core_current",
}
java_library {
name: "icu4j",
visibility: [
"//bootable/recovery/tools/image_generator",
"//external/icu/tools/srcgen",
"//external/jimfs/jimfs",
"//external/robolectric-shadows/robolectric",
"//external/robolectric-shadows/shadows/framework",
"//external/robolectric/robolectric",
"//external/robolectric/shadows/framework",
"//system/timezone/input_tools/android/telephonylookup_generator",
"//system/timezone/input_tools/android/tzlookup_generator",
],
defaults: ["icu4j-defaults"],
libs: [
// Need the following shared libraries for @FlaggedApi. These libraries are only needed
// compile-time, not runtime, and it shouldn't need to be statically linked.
// framework-api-annotations are not static libs to avoid exposing the definition of
// framework's annotations from ICU (wrong place) instead of framework (correct place).
"framework-annotations-lib",
"icu_aconfig_flags_lib",
],
srcs: ["main/classes/**/*.java"],
java_resource_dirs: ["main/classes/*/src"],
// User-supplied locale service providers (using the java.text.spi or
// java.util.spi mechanisms) are not supported in Android:
//
// http://developer.android.com/reference/java/util/Locale.html
exclude_srcs: ["main/classes/localespi/**/*.java"],
exclude_java_resource_dirs: ["main/classes/localespi/src"],
static_libs: [
"icu4j-icudata",
"icu4j-icutzdata",
],
}
// Small static library used by TwilightService in the system server and WallpaperPicker2 app. To
// avoid @CorePlaformApi, the system server doesn't use CalendarAstronomer in android.icu.
// Don't link this in boot classpath or Zygote to avoid class collision with the
// com.ibm.icu.impl.CalendarAstronomer in the app classloader.
java_library_static {
name: "icu4j_calendar_astronomer",
host_supported: false,
sdk_version: "core_current",
srcs: ["main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java"],
visibility: [
"//frameworks/base/services/core",
"//packages/apps/WallpaperPicker2",
],
}
java_test {
name: "icu4j-tests",
defaults: ["icu4j-defaults"],
srcs: [
"main/tests/**/*.java",
"tools/misc/src/com/ibm/icu/dev/tool/locale/*.java",
],
java_resource_dirs: ["main/tests/*/src"],
exclude_srcs: ["main/tests/localespi/**/*.java"],
exclude_java_resource_dirs: ["main/tests/localespi/src"],
static_libs: [
"icu4j",
"icu4j-testdata",
"junit-params",
],
errorprone: {
javacflags: [
"-Xep:EqualsNull:WARN",
"-Xep:ArrayToString:WARN",
],
},
test_options: {
unit_test: false,
},
}
java_import {
name: "icu4j-icudata",
host_supported: true,
jars: ["main/shared/data/icudata.jar"],
}
java_import {
name: "icu4j-icutzdata",
host_supported: true,
jars: ["main/shared/data/icutzdata.jar"],
}
java_import {
name: "icu4j-testdata",
host_supported: true,
jars: ["main/shared/data/testdata.jar"],
}
// LayoutLib (frameworks/layoutlib) and robolectric need JarJar'd versions of
// the icudata and icutzdata, so add rules for it.
java_library {
name: "icu4j-icudata-jarjar",
visibility: [
"//external/robolectric-shadows",
"//external/robolectric",
"//frameworks/layoutlib",
],
defaults: ["icu4j-defaults"],
static_libs: ["icu4j-icudata"],
jarjar_rules: "liblayout-jarjar-rules.txt",
}
java_library {
name: "icu4j-icutzdata-jarjar",
visibility: [
"//external/robolectric-shadows",
"//external/robolectric",
"//frameworks/layoutlib",
],
defaults: ["icu4j-defaults"],
static_libs: ["icu4j-icutzdata"],
jarjar_rules: "liblayout-jarjar-rules.txt",
}
// Compatibility alias until references to icu4j-host are removed
//
// When converting .mk files to .bp files do not change the visibility of this
// module, instead replace usages of this with icu4j
java_library_host {
name: "icu4j-host",
static_libs: ["icu4j"],
}
// Rules to generate android_icu4j files during build time
// The following rules are used in the downstream branches master-icu-dev only,
// but NOT used in AOSP.
generate_script_srcs = [
"main/**/*",
"samples/**/*",
]
generate_script_tools = [
"android_icu4j_srcgen_binary",
"soong_zip",
]
generate_script_tool_files = [
":generate_android_icu4j_script",
]
// ANDROID_BUILD_TOP is needed to be set for generate_android_icu4j.sh
generate_script_common_cmd = "export ANDROID_BUILD_TOP=$$(pwd) && " +
"$(location :generate_android_icu4j_script) " +
"--no-doc-patch " +
"--gen $(genDir) " +
"--srcgen-tool $(location android_icu4j_srcgen_binary)"
genrule {
name: "generated_android_icu4j_src_files",
enabled: false, // http://b/117312606
srcs: generate_script_srcs,
tools: generate_script_tools,
tool_files: generate_script_tool_files,
out: ["generated_android_icu4j.srcjar"],
cmd: generate_script_common_cmd +
"&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/java " +
"-D $(genDir)/android_icu4j/src/main/java",
}
java_genrule {
name: "generated_android_icu4j_resources",
enabled: false, // http://b/117312606
host_supported: true,
srcs: generate_script_srcs,
tools: generate_script_tools,
tool_files: generate_script_tool_files,
out: ["generated_android_icu4j_resources.jar"],
cmd: generate_script_common_cmd +
"&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/resources " +
"-D $(genDir)/android_icu4j/resources",
}
genrule {
name: "generated_android_icu4j_test_files",
enabled: false, // http://b/117312606
srcs: generate_script_srcs,
tools: generate_script_tools,
tool_files: generate_script_tool_files,
out: ["generated_android_icu4j_test.srcjar"],
cmd: generate_script_common_cmd +
"&& find $(genDir)/android_icu4j/src/main/tests -type f -not -name \"*.java\" -exec rm {} \\; " +
"&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " +
"-D $(genDir)/android_icu4j/src/main/tests",
}
java_genrule {
name: "generated_android_icu4j_test_resources",
enabled: false, // http://b/117312606
host_supported: true,
srcs: generate_script_srcs,
tools: generate_script_tools,
tool_files: generate_script_tool_files,
out: ["generated_android_icu4j_test_resources.jar"],
cmd: generate_script_common_cmd +
"&& find $(genDir)/android_icu4j/src/main/tests -type f -name \"*.java\" -exec rm {} \\; " +
"&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " +
"-D $(genDir)/android_icu4j/src/main/tests",
}