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
17java_defaults {
18    name: "icu4j-defaults",
19    host_supported: true,
20    hostdex: true,
21
22    // Use the same Java language version in the Android build configuration as used
23    // in main/shared/build/common.properties for the ICU4J build configuration.
24    java_version: "1.7",
25}
26
27java_library {
28    name: "icu4j",
29    defaults: ["icu4j-defaults"],
30
31    srcs: ["main/classes/**/*.java"],
32    java_resource_dirs: ["main/classes/*/src"],
33
34    // User-supplied locale service providers (using the java.text.spi or
35    // java.util.spi mechanisms) are not supported in Android:
36    //
37    // http://developer.android.com/reference/java/util/Locale.html
38    exclude_srcs: ["main/classes/localespi/**/*.java"],
39    exclude_java_resource_dirs: ["main/classes/localespi/src"],
40
41    static_libs: [
42        "icu4j-icudata",
43        "icu4j-icutzdata",
44    ],
45}
46
47java_test {
48    name: "icu4j-tests",
49    defaults: ["icu4j-defaults"],
50
51    srcs: ["main/tests/**/*.java"],
52    java_resource_dirs: ["main/tests/*/src"],
53
54    exclude_srcs: ["main/tests/localespi/**/*.java"],
55    exclude_java_resource_dirs: ["main/tests/localespi/src"],
56
57    static_libs: [
58        "icu4j",
59        "icu4j-testdata",
60        "junit-params",
61    ],
62}
63
64java_import {
65    name: "icu4j-icudata",
66    host_supported: true,
67    jars: ["main/shared/data/icudata.jar"],
68}
69
70java_import {
71    name: "icu4j-icutzdata",
72    host_supported: true,
73    jars: ["main/shared/data/icutzdata.jar"],
74}
75
76java_import {
77    name: "icu4j-testdata",
78    host_supported: true,
79    jars: ["main/shared/data/testdata.jar"],
80}
81
82// LayoutLib (frameworks/layoutlib) needs JarJar'd versions of the
83// icudata and icutzdata, so add rules for it.
84java_library_static {
85    name: "icu4j-icudata-jarjar",
86    defaults: ["icu4j-defaults"],
87    static_libs: ["icu4j-icudata"],
88    jarjar_rules: "liblayout-jarjar-rules.txt",
89}
90
91java_library_static {
92    name: "icu4j-icutzdata-jarjar",
93    defaults: ["icu4j-defaults"],
94    static_libs: ["icu4j-icutzdata"],
95    jarjar_rules: "liblayout-jarjar-rules.txt",
96}
97
98// Compatibility alias until references to icu4j-host are removed
99java_library_host {
100    name: "icu4j-host",
101    static_libs: ["icu4j"],
102}
103
104// Rules to generate android_icu4j files during build time
105// The following rules are used in the downstream branches master-icu-dev only,
106// but NOT used in AOSP.
107generate_script_srcs = [
108    "main/**/*",
109    "samples/**/*",
110]
111generate_script_tools = [
112    "android_icu4j_srcgen_binary",
113    "soong_zip",
114]
115generate_script_tool_files = [
116    ":generate_android_icu4j_script",
117]
118// ANDROID_BUILD_TOP is needed to be set for generate_android_icu4j.sh
119generate_script_common_cmd = "export ANDROID_BUILD_TOP=$$(pwd) && " +
120    "$(location :generate_android_icu4j_script) " +
121    "--no-doc-patch " +
122    "--gen $(genDir) " +
123    "--srcgen-tool $(location android_icu4j_srcgen_binary)"
124
125genrule {
126    name: "generated_android_icu4j_src_files",
127    enabled: false, // http://b/117312606
128    srcs: generate_script_srcs,
129    tools: generate_script_tools,
130    tool_files: generate_script_tool_files,
131    out: ["generated_android_icu4j.srcjar"],
132    cmd: generate_script_common_cmd +
133        "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/java " +
134        "-D $(genDir)/android_icu4j/src/main/java",
135}
136
137java_genrule {
138    name: "generated_android_icu4j_resources",
139    enabled: false, // http://b/117312606
140    host_supported: true,
141    srcs: generate_script_srcs,
142    tools: generate_script_tools,
143    tool_files: generate_script_tool_files,
144    out: ["generated_android_icu4j_resources.jar"],
145    cmd: generate_script_common_cmd +
146        "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/resources " +
147        "-D $(genDir)/android_icu4j/resources",
148}
149
150genrule {
151    name: "generated_android_icu4j_test_files",
152    enabled: false, // http://b/117312606
153    srcs: generate_script_srcs,
154    tools: generate_script_tools,
155    tool_files: generate_script_tool_files,
156    out: ["generated_android_icu4j_test.srcjar"],
157    cmd: generate_script_common_cmd +
158        "&& find $(genDir)/android_icu4j/src/main/tests -type f -not -name \"*.java\" -exec rm {} \\; " +
159        "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " +
160        "-D $(genDir)/android_icu4j/src/main/tests",
161}
162
163java_genrule {
164    name: "generated_android_icu4j_test_resources",
165    enabled: false, // http://b/117312606
166    host_supported: true,
167    srcs: generate_script_srcs,
168    tools: generate_script_tools,
169    tool_files: generate_script_tool_files,
170    out: ["generated_android_icu4j_test_resources.jar"],
171    cmd: generate_script_common_cmd +
172        "&& find $(genDir)/android_icu4j/src/main/tests -type f -name \"*.java\" -exec rm {} \\; " +
173        "&& $(location soong_zip) -o $(out) -C $(genDir)/android_icu4j/src/main/tests " +
174        "-D $(genDir)/android_icu4j/src/main/tests",
175}
176