1// 2// Copyright (C) 2014 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17package { 18 default_visibility: ["//visibility:private"], 19 // See: http://go/android-license-faq 20 // A large-scale-change added 'default_applicable_licenses' to import 21 // all of the 'license_kinds' from "external_icu_license" 22 // to get the below license kinds: 23 // SPDX-license-identifier-Apache-2.0 24 // SPDX-license-identifier-BSD 25 // SPDX-license-identifier-ICU 26 // SPDX-license-identifier-MIT 27 // SPDX-license-identifier-Unicode-DFS 28 // legacy_unencumbered 29 default_applicable_licenses: ["external_icu_license"], 30} 31 32java_defaults { 33 name: "icu4j-defaults", 34 host_supported: true, 35 hostdex: true, 36 37 // Use the same Java language version in the Android build configuration as used 38 // in main/shared/build/common.properties for the ICU4J build configuration. 39 java_version: "1.7", 40} 41 42java_library { 43 name: "icu4j", 44 visibility: [ 45 "//bootable/recovery/tools/image_generator", 46 "//external/icu/tools/srcgen", 47 "//external/jimfs/jimfs", 48 "//external/robolectric-shadows/robolectric", 49 "//external/robolectric-shadows/shadows/framework", 50 "//system/timezone/input_tools/android/telephonylookup_generator", 51 "//system/timezone/input_tools/android/tzlookup_generator", 52 ], 53 defaults: ["icu4j-defaults"], 54 55 srcs: ["main/classes/**/*.java"], 56 java_resource_dirs: ["main/classes/*/src"], 57 58 // User-supplied locale service providers (using the java.text.spi or 59 // java.util.spi mechanisms) are not supported in Android: 60 // 61 // http://developer.android.com/reference/java/util/Locale.html 62 exclude_srcs: ["main/classes/localespi/**/*.java"], 63 exclude_java_resource_dirs: ["main/classes/localespi/src"], 64 65 static_libs: [ 66 "icu4j-icudata", 67 "icu4j-icutzdata", 68 ], 69} 70 71// Small static library used by TwilightService in the system server. To avoid @CorePlaformApi, 72// the system server doesn't use CalendarAstronomer in android.icu. 73// Don't link this in boot classpath or Zygote to avoid class collision with the 74// com.ibm.icu.impl.CalendarAstronomer in the app classloader. 75java_library_static { 76 name: "icu4j_calendar_astronomer", 77 host_supported: false, 78 srcs: ["main/classes/core/src/com/ibm/icu/impl/CalendarAstronomer.java"], 79 visibility: ["//frameworks/base/services/core"], 80} 81 82java_test { 83 name: "icu4j-tests", 84 defaults: ["icu4j-defaults"], 85 86 srcs: [ 87 "main/tests/**/*.java", 88 "tools/misc/src/com/ibm/icu/dev/tool/locale/*.java", 89 ], 90 java_resource_dirs: ["main/tests/*/src"], 91 92 exclude_srcs: ["main/tests/localespi/**/*.java"], 93 exclude_java_resource_dirs: ["main/tests/localespi/src"], 94 95 static_libs: [ 96 "icu4j", 97 "icu4j-testdata", 98 "junit-params", 99 ], 100} 101 102java_import { 103 name: "icu4j-icudata", 104 host_supported: true, 105 jars: ["main/shared/data/icudata.jar"], 106} 107 108java_import { 109 name: "icu4j-icutzdata", 110 host_supported: true, 111 jars: ["main/shared/data/icutzdata.jar"], 112} 113 114java_import { 115 name: "icu4j-testdata", 116 host_supported: true, 117 jars: ["main/shared/data/testdata.jar"], 118} 119 120// LayoutLib (frameworks/layoutlib) and robolectric need JarJar'd versions of 121// the icudata and icutzdata, so add rules for it. 122java_library { 123 name: "icu4j-icudata-jarjar", 124 visibility: [ 125 "//external/robolectric-shadows", 126 "//frameworks/layoutlib", 127 ], 128 defaults: ["icu4j-defaults"], 129 static_libs: ["icu4j-icudata"], 130 jarjar_rules: "liblayout-jarjar-rules.txt", 131} 132 133java_library { 134 name: "icu4j-icutzdata-jarjar", 135 visibility: [ 136 "//external/robolectric-shadows", 137 "//frameworks/layoutlib", 138 ], 139 defaults: ["icu4j-defaults"], 140 static_libs: ["icu4j-icutzdata"], 141 jarjar_rules: "liblayout-jarjar-rules.txt", 142} 143 144// Compatibility alias until references to icu4j-host are removed 145// 146// When converting .mk files to .bp files do not change the visibility of this 147// module, instead replace usages of this with icu4j 148java_library_host { 149 name: "icu4j-host", 150 static_libs: ["icu4j"], 151} 152 153// Rules to generate android_icu4j files during build time 154// The following rules are used in the downstream branches master-icu-dev only, 155// but NOT used in AOSP. 156generate_script_srcs = [ 157 "main/**/*", 158 "samples/**/*", 159] 160generate_script_tools = [ 161 "android_icu4j_srcgen_binary", 162 "soong_zip", 163] 164generate_script_tool_files = [ 165 ":generate_android_icu4j_script", 166] 167// ANDROID_BUILD_TOP is needed to be set for generate_android_icu4j.sh 168generate_script_common_cmd = "export ANDROID_BUILD_TOP=$$(pwd) && " + 169 "$(location :generate_android_icu4j_script) " + 170 "--no-doc-patch " + 171 "--gen $(genDir) " + 172 "--srcgen-tool $(location android_icu4j_srcgen_binary)" 173 174genrule { 175 name: "generated_android_icu4j_src_files", 176 enabled: false, // http://b/117312606 177 srcs: generate_script_srcs, 178 tools: generate_script_tools, 179 tool_files: generate_script_tool_files, 180 out: ["generated_android_icu4j.srcjar"], 181 cmd: generate_script_common_cmd + 182 "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/java " + 183 "-D $(genDir)/android_icu4j/src/main/java", 184} 185 186java_genrule { 187 name: "generated_android_icu4j_resources", 188 enabled: false, // http://b/117312606 189 host_supported: true, 190 srcs: generate_script_srcs, 191 tools: generate_script_tools, 192 tool_files: generate_script_tool_files, 193 out: ["generated_android_icu4j_resources.jar"], 194 cmd: generate_script_common_cmd + 195 "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/resources " + 196 "-D $(genDir)/android_icu4j/resources", 197} 198 199genrule { 200 name: "generated_android_icu4j_test_files", 201 enabled: false, // http://b/117312606 202 srcs: generate_script_srcs, 203 tools: generate_script_tools, 204 tool_files: generate_script_tool_files, 205 out: ["generated_android_icu4j_test.srcjar"], 206 cmd: generate_script_common_cmd + 207 "&& find $(genDir)/android_icu4j/src/main/tests -type f -not -name \"*.java\" -exec rm {} \\; " + 208 "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " + 209 "-D $(genDir)/android_icu4j/src/main/tests", 210} 211 212java_genrule { 213 name: "generated_android_icu4j_test_resources", 214 enabled: false, // http://b/117312606 215 host_supported: true, 216 srcs: generate_script_srcs, 217 tools: generate_script_tools, 218 tool_files: generate_script_tool_files, 219 out: ["generated_android_icu4j_test_resources.jar"], 220 cmd: generate_script_common_cmd + 221 "&& find $(genDir)/android_icu4j/src/main/tests -type f -name \"*.java\" -exec rm {} \\; " + 222 "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " + 223 "-D $(genDir)/android_icu4j/src/main/tests", 224} 225