blob: 10038832347841153b635969a9152dd8d611edc4 [file] [log] [blame]
Colin Crossaf0b54c2017-09-27 17:22:32 -07001// Copyright (C) 2007 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
15//
Neil Fuller77e3f3b2018-10-19 10:22:32 +010016// Definitions for building the Android core library and associated tests.
Colin Crossaf0b54c2017-09-27 17:22:32 -070017//
18
Neil Fuller77e3f3b2018-10-19 10:22:32 +010019// The Android core library provides low-level APIs for use by the rest of the
20// Android software stack. It is made up of various parts, some of which can be
21// found in libcore/ and other parts that can be found in various external/
22// directories. See the "core-system-modules" definition for the parts.
23
Neil Fullercf756882018-08-28 18:42:22 +010024// libcore has some sub-directories that follow a common structure:
25// e.g. dalvik, dom, harmony-tests, json, jsr166-tests, luni, libart, ojluni,
26// support, xml, xmlpull.
Colin Crossaf0b54c2017-09-27 17:22:32 -070027//
Neil Fullercf756882018-08-28 18:42:22 +010028// The structure of these is generally:
Colin Crossaf0b54c2017-09-27 17:22:32 -070029//
30// src/
31// main/ # To be shipped on every device.
32// java/ # Java source for library code.
Neil Fullercf756882018-08-28 18:42:22 +010033// native/ # C/C++ source for library code.
Colin Crossaf0b54c2017-09-27 17:22:32 -070034// resources/ # Support files.
35// test/ # Built only on demand, for testing.
36// java/ # Java source for tests.
Neil Fullercf756882018-08-28 18:42:22 +010037// native/ # C/C++ source for tests (rare).
Colin Crossaf0b54c2017-09-27 17:22:32 -070038// resources/ # Support files.
39//
Neil Fullercf756882018-08-28 18:42:22 +010040// All subdirectories are optional.
Colin Crossaf0b54c2017-09-27 17:22:32 -070041
42build = [
43 "openjdk_java_files.bp",
44 "non_openjdk_java_files.bp",
45]
46
47// The Java files and their associated resources.
48core_resource_dirs = [
49 "luni/src/main/java",
50 "ojluni/src/main/resources/",
51]
52
Neil Fuller866ed4a2018-09-06 12:05:46 +010053// The source files that go into core-oj.
54filegroup {
55 name: "core_oj_java_files",
56 srcs: [":openjdk_java_files"],
57}
58
59// OpenJDK source is not annotated with @hide so we need a separate
60// filegroup for just the parts that contribute to the API.
61filegroup {
62 name: "core_oj_api_files",
63 srcs: [":openjdk_javadoc_files"],
64}
65
66// The source files that go into core-libart.
67filegroup {
68 name: "core_libart_java_files",
69 srcs: [
70 ":non_openjdk_java_files",
71 ":android_icu4j_src_files",
72 ],
73}
74
75// Some parts of libart are not annotated with @hide so we need a separate
76// filegroup for just the parts that contribute to the API.
77filegroup {
78 name: "core_libart_api_files",
79 srcs: [
80 ":non_openjdk_javadoc_files",
81 ":android_icu4j_src_files",
82 ],
83}
84
Neil Fuller77e3f3b2018-10-19 10:22:32 +010085// The set of files for the core library that have been marked up with @hide and
86// API-related annotations. Note that this includes the intra-core and
87// core-platform APIs as well as the public APIs.
88//
89// Some source files in :openjdk_mmodule_extra_files are annotated by applying
90// annotations to the .annotated.java stubs files in ojluni/annotated/mmodules
91// and rather than in the original source. See the comments in
92// openjdk_java_files.bp for more details.
Neil Fuller866ed4a2018-09-06 12:05:46 +010093filegroup {
94 name: "core_api_files",
95 srcs: [
Neil Fullerd129bc92018-09-26 11:12:58 +010096 ":apache-xml_api_files",
Neil Fullera77f7102018-09-21 19:04:41 +010097 ":bouncycastle_java_files",
Neil Fuller603e1a72018-09-25 11:55:41 +010098 ":conscrypt_java_files",
Neil Fuller866ed4a2018-09-06 12:05:46 +010099 ":core_oj_api_files",
100 ":core_libart_api_files",
101 ":core_simple_java_files",
Neil Fuller641d5f92018-09-24 15:40:39 +0100102 ":okhttp_api_files",
Pete Gillinc9935b62018-09-25 14:42:40 +0100103 ":openjdk_mmodule_extra_files",
Neil Fuller866ed4a2018-09-06 12:05:46 +0100104 ],
105}
106
Colin Crossaf0b54c2017-09-27 17:22:32 -0700107java_defaults {
108 name: "libcore_java_defaults",
109 javacflags: [
110 //"-Xlint:all",
111 //"-Xlint:-serial,-deprecation,-unchecked",
112 ],
113 dxflags: ["--core-library"],
Andreas Gampe66b31732018-02-20 09:22:16 -0800114 errorprone: {
115 javacflags: [
116 "-Xep:MissingOverride:OFF", // Ignore missing @Override.
Andreas Gampe24a20172018-06-13 11:28:45 -0700117 "-Xep:ConstantOverflow:WARN", // Known constant overflow in SplittableRandom
Andreas Gampe66b31732018-02-20 09:22:16 -0800118 ],
119 },
Colin Crossaf0b54c2017-09-27 17:22:32 -0700120}
121
122//
123// Build for the target (device).
124//
125
Victor Chang7fef4052018-09-25 14:12:03 +0100126// Rule generating resource lib for android_icu4j.
127// In the downstream branch master-icu-dev, the resource files are generated.
128// This rule can't be moved external/icu because soong enforces that no_standard_libs:true can only
129// be used in libcore/ or development/
130java_library {
131 name: "android_icu4j_resources_lib",
132 java_resources: [":android_icu4j_resources"],
133 no_standard_libs: true,
134 system_modules: "none",
135}
136
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100137// A target used to bootstrap compilation for the core library.
138// See core-all-system-modules for more details.
Colin Crossaf0b54c2017-09-27 17:22:32 -0700139java_library {
140 name: "core-all",
141 defaults: ["libcore_java_defaults"],
142
143 srcs: [
Neil Fuller866ed4a2018-09-06 12:05:46 +0100144 ":core_oj_java_files",
145 ":core_libart_java_files",
146 ":core_simple_java_files",
Colin Crossaf0b54c2017-09-27 17:22:32 -0700147 ":openjdk_lambda_stub_files",
148 ],
Colin Crossec80f4f2018-08-15 21:17:11 -0700149
150 no_standard_libs: true,
151 system_modules: "none",
Colin Crossa4d9fc42017-09-29 18:04:37 -0700152 openjdk9: {
153 srcs: ["luni/src/module/java/module-info.java"],
154 javacflags: ["--patch-module=java.base=."],
155 },
Colin Crossec80f4f2018-08-15 21:17:11 -0700156
Colin Crossaf0b54c2017-09-27 17:22:32 -0700157 java_resource_dirs: core_resource_dirs,
Victor Chang7fef4052018-09-25 14:12:03 +0100158 static_libs: ["android_icu4j_resources_lib"],
Tobias Thiererde991232018-03-07 15:10:46 +0000159 java_version: "1.9",
Colin Crossaf0b54c2017-09-27 17:22:32 -0700160
161 required: [
162 "tzdata",
163 "tzlookup.xml",
164 ],
165
166 installable: false,
167}
168
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100169// A system modules definition for use by core library targets only. It only
170// contains the core-all jar, which contains the classes that end up in core-oj,
171// core-libart as well as the lambda stubs needed to compile Java lambda code.
172// It does not contain other parts of core library like conscrypt, bouncycastle,
173// etc. This system_modules definition is used to bootstrap compilation for
174// other parts of the core library like core-oj, core-libart, conscrypt,
175// bouncycastle, etc.
176//
177// If you want to compile against the entire core library implementation, for
178// example to build core library tests, see "core-system-modules" instead.
Colin Crossa4d9fc42017-09-29 18:04:37 -0700179java_system_modules {
180 name: "core-all-system-modules",
181 libs: ["core-all"],
182}
183
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100184// Contains the parts of core library associated with OpenJDK.
Colin Crossaf0b54c2017-09-27 17:22:32 -0700185java_library {
186 name: "core-oj",
187 defaults: ["libcore_java_defaults"],
Colin Cross5b75cdd2018-06-27 11:00:13 -0700188 installable: true,
Colin Crossbb180be2017-10-09 14:54:53 -0700189 hostdex: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700190
Neil Fuller866ed4a2018-09-06 12:05:46 +0100191 srcs: [":core_oj_java_files"],
Colin Crossaf0b54c2017-09-27 17:22:32 -0700192 java_resource_dirs: core_resource_dirs,
Colin Crossec80f4f2018-08-15 21:17:11 -0700193
194 no_standard_libs: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700195 libs: ["core-all"],
Colin Crossa4d9fc42017-09-29 18:04:37 -0700196 system_modules: "core-all-system-modules",
197 openjdk9: {
198 javacflags: ["--patch-module=java.base=."],
199 },
Colin Crossec80f4f2018-08-15 21:17:11 -0700200
Pete Gillin7a7a6d22017-12-19 14:56:03 +0000201 jacoco: {
Pete Gillin27ca0582018-01-10 17:04:17 +0000202 exclude_filter: [
Pete Gillin3f59bad2018-01-30 11:20:29 +0000203 "java.lang.Class",
204 "java.lang.Long",
205 "java.lang.Number",
206 "java.lang.Object",
207 "java.lang.String",
208 "java.lang.invoke.MethodHandle",
209 "java.lang.ref.Reference",
210 "java.lang.reflect.Proxy",
Pete Gillinb1868ada2018-01-17 11:03:10 +0000211 "java.util.AbstractMap",
Pete Gillin3f59bad2018-01-30 11:20:29 +0000212 "java.util.HashMap",
213 "java.util.HashMap$Node",
Pete Gillinb1868ada2018-01-17 11:03:10 +0000214 "java.util.Map",
Pete Gillin7a7a6d22017-12-19 14:56:03 +0000215 ],
216 },
Colin Crossaf0b54c2017-09-27 17:22:32 -0700217
218 notice: "ojluni/NOTICE",
219
220 required: [
221 "tzdata",
222 "tzlookup.xml",
223 ],
Colin Crossbb180be2017-10-09 14:54:53 -0700224
Colin Crossaf0b54c2017-09-27 17:22:32 -0700225}
226
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100227// Contains parts of core library not associated with OpenJDK. Contains not
228// just java.*, javax.* code but also android.icu.*, android.system.* and
229// various internal libcore.* packages.
Colin Crossaf0b54c2017-09-27 17:22:32 -0700230java_library {
231 name: "core-libart",
232 defaults: ["libcore_java_defaults"],
Colin Cross5b75cdd2018-06-27 11:00:13 -0700233 installable: true,
Colin Crossbb180be2017-10-09 14:54:53 -0700234 hostdex: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700235
Neil Fuller866ed4a2018-09-06 12:05:46 +0100236 srcs: [":core_libart_java_files"],
Victor Chang7fef4052018-09-25 14:12:03 +0100237 static_libs: ["android_icu4j_resources_lib"],
Tobias Thiererde991232018-03-07 15:10:46 +0000238 java_version: "1.9",
Colin Crossaf0b54c2017-09-27 17:22:32 -0700239
Colin Crossec80f4f2018-08-15 21:17:11 -0700240 no_standard_libs: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700241 libs: ["core-all"],
Colin Crossa4d9fc42017-09-29 18:04:37 -0700242 system_modules: "core-all-system-modules",
243 openjdk9: {
244 javacflags: ["--patch-module=java.base=."],
245 },
Colin Crossec80f4f2018-08-15 21:17:11 -0700246
Pete Gillin80ebe872018-02-13 15:21:20 +0000247 jacoco: {
248 exclude_filter: [
249 "java.lang.DexCache",
250 "dalvik.system.ClassExt",
251 ],
252 },
Colin Crossaf0b54c2017-09-27 17:22:32 -0700253
254 required: [
255 "tzdata",
256 "tzlookup.xml",
257 ],
258}
259
Paul Duffin7bb8d232018-10-23 11:48:38 +0100260// Provided solely to contribute information about which hidden parts of the
261// core-oj API are used by apps.
262java_library {
263 name: "core-oj-hiddenapi",
264 defaults: ["libcore_java_defaults"],
265 compile_dex: true,
266
267 srcs: [":openjdk_hiddenapi_javadoc_files"],
268
269 no_standard_libs: true,
270 libs: ["core-all"],
271 system_modules: "core-all-system-modules",
272 openjdk9: {
273 javacflags: ["--patch-module=java.base=."],
274 },
275}
276
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100277//
278// Guaranteed unstripped versions of core-oj and core-libart.
279//
Colin Cross3c6c2e22017-10-18 13:24:52 -0700280// The build system may or may not strip the core-oj and core-libart jars,
281// but these will not be stripped. See b/24535627.
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100282//
283
Colin Cross3c6c2e22017-10-18 13:24:52 -0700284java_library {
285 name: "core-oj-testdex",
Colin Cross5b75cdd2018-06-27 11:00:13 -0700286 installable: true,
Colin Cross3c6c2e22017-10-18 13:24:52 -0700287 static_libs: ["core-oj"],
288 no_standard_libs: true,
289 libs: ["core-all"],
290 system_modules: "core-all-system-modules",
291 dxflags: ["--core-library"],
Colin Cross485ed362017-12-05 17:24:22 -0800292 dex_preopt: {
293 enabled: false,
294 },
Tobias Thiererde991232018-03-07 15:10:46 +0000295 java_version: "1.9",
Colin Cross3c6c2e22017-10-18 13:24:52 -0700296 notice: "ojluni/NOTICE",
297 required: [
298 "tzdata",
299 "tzlookup.xml",
300 ],
301}
302
303java_library {
304 name: "core-libart-testdex",
Colin Cross5b75cdd2018-06-27 11:00:13 -0700305 installable: true,
Colin Cross3c6c2e22017-10-18 13:24:52 -0700306 static_libs: ["core-libart"],
307 no_standard_libs: true,
308 libs: ["core-all"],
309 system_modules: "core-all-system-modules",
310 dxflags: ["--core-library"],
Colin Cross485ed362017-12-05 17:24:22 -0800311 dex_preopt: {
312 enabled: false,
313 },
Colin Cross3c6c2e22017-10-18 13:24:52 -0700314 notice: "ojluni/NOTICE",
315 required: [
316 "tzdata",
317 "tzlookup.xml",
318 ],
319}
320
Tobias Thierere0f8b312018-10-23 23:12:30 +0100321
322java_defaults {
323 name: "core_lambda_stubs_defaults",
Colin Crossaf0b54c2017-09-27 17:22:32 -0700324 defaults: ["libcore_java_defaults"],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100325 hostdex: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700326
Colin Crossec80f4f2018-08-15 21:17:11 -0700327 no_standard_libs: true,
Colin Crossaf0b54c2017-09-27 17:22:32 -0700328 libs: ["core-all"],
Colin Crossa4d9fc42017-09-29 18:04:37 -0700329 system_modules: "core-all-system-modules",
330 openjdk9: {
331 javacflags: ["--patch-module=java.base=."],
332 },
Colin Crossaf0b54c2017-09-27 17:22:32 -0700333
334 notice: "ojluni/NOTICE",
335
336 installable: false,
337 include_srcs: true,
338}
Colin Crossa4d9fc42017-09-29 18:04:37 -0700339
Tobias Thierere0f8b312018-10-23 23:12:30 +0100340// Creates a jar that exists to satisfy javac when compiling source code that
341// contains lambdas. This contains all classes / methods required by javac
342// when generating invoke-dynamic lambda implementation code, even those that
343// are also in the public SDK API from API level 26 onwards.
344java_library {
345 name: "core-lambda-stubs",
346 defaults: ["core_lambda_stubs_defaults"],
347 srcs: [
348 ":openjdk_lambda_stub_files",
349 ":openjdk_lambda_duplicate_stub_files",
350 ],
351}
352
353// An alternative to core-lambda-stubs that omits openjdk_lambda_duplicate_stub_files
354// because those classes are also part of the core library public SDK API
355// (since API level 26).
356java_library {
357 name: "core-lambda-stubs-for-system-modules",
358 defaults: ["core_lambda_stubs_defaults"],
359 srcs: [
360 ":openjdk_lambda_stub_files",
361 ],
362}
363
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100364// A system modules definition containing the implementations for the various
365// parts that make up the core library.
366//
367// This system module is intended for use by tests that may need access to
368// core library internals. It should not be generally used; most of the
369// platform build should build against API stubs instead. See
370// "core-platform-api-stubs-system-modules", which is the default used by the
371// Android build.
372//
373// This module also includes lambda stubs for compiling source containing
374// Java lambdas.
Colin Crossa4d9fc42017-09-29 18:04:37 -0700375java_system_modules {
376 name: "core-system-modules",
377 libs: [
378 "core-oj",
379 "core-libart",
Neil Fuller866ed4a2018-09-06 12:05:46 +0100380 "core-simple",
Neil Fullerb669ccb2018-10-04 23:10:27 +0100381 "bouncycastle",
382 "conscrypt",
383 "okhttp",
Neil Fuller05723a52018-10-19 10:55:05 +0100384 "apache-xml",
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100385 // This one is not on device but it's needed when javac compiles code
386 // containing lambdas.
Tobias Thierere0f8b312018-10-23 23:12:30 +0100387 "core-lambda-stubs-for-system-modules",
Colin Crossa4d9fc42017-09-29 18:04:37 -0700388 ],
389}
Colin Cross3c6c2e22017-10-18 13:24:52 -0700390
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100391// Builds libcore test rules
Colin Cross3c6c2e22017-10-18 13:24:52 -0700392java_library_static {
393 name: "core-test-rules",
394 hostdex: true,
Colin Cross3c6c2e22017-10-18 13:24:52 -0700395 srcs: [
396 "dalvik/test-rules/src/main/**/*.java",
397 "test-rules/src/main/**/*.java",
398 ],
399 static_libs: ["junit"],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100400
401 no_standard_libs: true,
402 libs: ["core-all"],
403 system_modules: "core-all-system-modules",
Colin Cross3c6c2e22017-10-18 13:24:52 -0700404}
405
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100406// Builds the core-tests-support library used by various tests.
Colin Cross3c6c2e22017-10-18 13:24:52 -0700407java_library_static {
408 name: "core-tests-support",
409 hostdex: true,
Colin Cross3c6c2e22017-10-18 13:24:52 -0700410 srcs: ["support/src/test/java/**/*.java"],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100411
Neil Fuller4380ab22018-10-18 19:38:53 +0100412 no_framework_libs: true,
413 libs: ["junit"],
Colin Cross3c6c2e22017-10-18 13:24:52 -0700414 static_libs: [
Neil Fullerde8b0862018-10-12 21:53:31 +0100415 "bouncycastle-unbundled",
416 "bouncycastle-bcpkix-unbundled",
417 "bouncycastle-ocsp-unbundled",
Colin Cross3c6c2e22017-10-18 13:24:52 -0700418 ],
419}
420
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100421// Builds the jsr166-tests library.
Colin Crossec80f4f2018-08-15 21:17:11 -0700422java_test {
Colin Cross3c6c2e22017-10-18 13:24:52 -0700423 name: "jsr166-tests",
424 srcs: ["jsr166-tests/src/test/java/**/*.java"],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100425 no_standard_libs: true,
Colin Cross3c6c2e22017-10-18 13:24:52 -0700426 libs: [
Neil Fuller4207c7f2018-10-10 14:01:40 +0100427 "core-all",
Colin Cross3c6c2e22017-10-18 13:24:52 -0700428 "junit",
429 ],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100430 system_modules: "core-all-system-modules",
Colin Cross3c6c2e22017-10-18 13:24:52 -0700431}
Nan Zhang65f27a32018-01-05 10:41:46 -0800432
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100433// Builds a library just containing files from luni/src/test/filesystems
434// for use in tests.
Colin Crossec80f4f2018-08-15 21:17:11 -0700435java_library {
436 name: "filesystemstest",
437 compile_dex: true,
438 srcs: ["luni/src/test/filesystems/src/**/*.java"],
439 java_resource_dirs: ["luni/src/test/filesystems/resources"],
440 no_framework_libs: true,
441 errorprone: {
442 javacflags: ["-Xep:MissingOverride:OFF"],
443 },
444}
445
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100446// Builds a library just containing files from luni/src/test/parameter_metadata
447// for use in tests.
Colin Crossec80f4f2018-08-15 21:17:11 -0700448java_library {
449 name: "parameter-metadata-test",
450 compile_dex: true,
451 srcs: ["luni/src/test/parameter_metadata/src/**/*.java"],
452 no_framework_libs: true,
453 javacflags: ["-parameters"],
454 errorprone: {
455 javacflags: ["-Xep:MissingOverride:OFF"],
456 },
457}
458
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100459// Builds the core-tests library.
Colin Crossec80f4f2018-08-15 21:17:11 -0700460java_test {
461 name: "core-tests",
462 defaults: ["libcore_java_defaults"],
463 hostdex: true,
464 srcs: [
465 "dalvik/src/test/java/**/*.java",
466 "dalvik/test-rules/src/test/java/**/*.java",
467 "dom/src/test/java/**/*.java",
468 "harmony-tests/src/test/java/**/*.java",
469 "json/src/test/java/**/*.java",
470 "luni/src/test/java/**/*.java",
471 "xml/src/test/java/**/*.java",
472 ],
473 exclude_srcs: [
474 "luni/src/test/java/libcore/java/util/zip/Zip64Test.java",
475 "luni/src/test/java/libcore/java/util/zip/Zip64FileTest.java",
476 ],
477
478 java_resource_dirs: [
479 "*/src/test/java",
480 "*/src/test/resources",
481 ],
482 exclude_java_resource_dirs: [
483 "ojluni/src/test/java",
484 "ojluni/src/test/resources",
485 ],
486
487 java_resources: [
488 ":filesystemstest",
489 ":parameter-metadata-test",
490 ],
491
Neil Fuller4207c7f2018-10-10 14:01:40 +0100492 no_standard_libs: true,
493 libs: [
494 "core-all",
495 "okhttp",
496 "bouncycastle",
497 ],
498 system_modules: "core-all-system-modules",
499
Colin Crossec80f4f2018-08-15 21:17:11 -0700500 static_libs: [
501 "archive-patcher",
502 "core-test-rules",
503 "core-tests-support",
504 "junit-params",
505 "mockftpserver",
506 "mockito-target",
507 "mockwebserver",
508 "nist-pkix-tests",
509 "slf4j-jdk14",
510 "sqlite-jdbc",
511 "tzdata-testing",
512 ],
513
514 errorprone: {
515 javacflags: [
516 "-Xep:TryFailThrowable:ERROR",
517 "-Xep:ComparisonOutOfRange:ERROR",
518 ],
519 },
Simran Basi3be01e02018-08-21 17:53:49 -0700520
521 test_config: "AndroidTest-core-tests.xml",
Colin Crossec80f4f2018-08-15 21:17:11 -0700522}
523
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100524// Builds the core-ojtests library that contains test code from OpenJDK.
Colin Crossec80f4f2018-08-15 21:17:11 -0700525java_test {
526 name: "core-ojtests",
527 defaults: ["libcore_java_defaults"],
528 hostdex: true,
529
530 srcs: [
531 "ojluni/src/test/java/**/*.java",
532 ],
533 java_resource_dirs: [
534 "ojluni/src/test/java",
535 "ojluni/src/test/resources",
536 ],
Neil Fullerb669ccb2018-10-04 23:10:27 +0100537
Neil Fuller4207c7f2018-10-10 14:01:40 +0100538 no_standard_libs: true,
539 libs: [
540 "core-all",
541 "okhttp",
542 "bouncycastle",
543 ],
544 system_modules: "core-all-system-modules",
545
Colin Crossec80f4f2018-08-15 21:17:11 -0700546 static_libs: ["testng"],
547
548 // ojluni/src/test/java/util/stream/{bootlib,boottest}
549 // contains tests that are in packages from java.base;
550 // By default, OpenJDK 9's javac will only compile such
551 // code if it's declared to also be in java.base at
552 // compile time.
553 //
554 // For now, we use --patch-module to put all sources
555 // and dependencies from this make target into java.base;
556 // other source directories in this make target are in
557 // packages not from java.base; if this becomes a problem
558 // in future, this could be addressed eg. by splitting
559 // boot{lib,test} out into a separate make target,
560 // deleting those tests or moving them to a different
561 // package.
562 patch_module: "java.base",
563}
564
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100565// Builds the core-ojtests-public library. Excludes any private API tests.
566// Like core-ojtests but smaller.
Colin Crossec80f4f2018-08-15 21:17:11 -0700567java_test {
568 name: "core-ojtests-public",
569 defaults: ["libcore_java_defaults"],
570 srcs: [
571 "ojluni/src/test/java/**/*.java",
572 ],
573 // Filter out the following:
574 // 1.) DeserializeMethodTest and SerializedLambdaTest, because they depends on stub classes
575 // and won't actually run, and
576 // 2.) util/stream/boot*. Those directories contain classes in the package java.util.stream;
577 // excluding them means we don't need patch_module: "java.base"
578 exclude_srcs: [
579 "**/DeserializeMethodTest.java",
580 "**/SerializedLambdaTest.java",
581 "ojluni/src/test/java/util/stream/boot*/**/*",
582 ],
583 java_resource_dirs: [
584 "ojluni/src/test/java",
585 "ojluni/src/test/resources",
586 // Include source code as part of JAR
587 "ojluni/src/test/dist",
588 ],
Neil Fuller4207c7f2018-10-10 14:01:40 +0100589
590 no_standard_libs: true,
591 libs: [
592 "core-all",
593 "bouncycastle",
594 "okhttp",
595 "testng",
596 ],
597 system_modules: "core-all-system-modules",
Colin Crossec80f4f2018-08-15 21:17:11 -0700598}
599
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100600// Exports annotated stubs source files in ojluni/annotations/sdk to make them
601// available to metalava. Used for nullability annotations in OpenJDK source.
Pete Gillin7db7faa2018-07-31 13:29:35 +0100602droiddoc_exported_dir {
Pete Gillin0728b742018-09-17 15:41:45 +0100603 name: "ojluni-annotated-sdk-stubs",
604 path: "ojluni/annotations/sdk",
Pete Gillin7db7faa2018-07-31 13:29:35 +0100605}
Pete Gillin600c7cf2018-08-16 19:28:38 +0100606droiddoc_exported_dir {
607 name: "ojluni-annotated-nullability-stubs",
608 path: "ojluni/annotations/sdk/nullability",
609}
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100610
611// Exports annotated stubs source files in ojluni/annotations/mmodules to make
612// them available to metalava. Used for core platform API and intra-code API
613// annotations in OpenJDK source.
Pete Gillinc9935b62018-09-25 14:42:40 +0100614droiddoc_exported_dir {
615 name: "ojluni-annotated-mmodule-stubs",
616 path: "ojluni/annotations/mmodule",
617}
Pete Gillin7db7faa2018-07-31 13:29:35 +0100618
Neil Fuller6f16b462018-09-04 15:40:39 +0100619// A file containing the list of tags that are "known" to us from the OpenJdk
620// source code and so should not cause an error or warning.
Nan Zhangd55722b2018-02-27 15:08:20 -0800621filegroup {
622 name: "known-oj-tags",
623 srcs: [
624 "known_oj_tags.txt",
625 ],
626}
Nan Zhang602fc0e2018-03-22 16:14:22 -0700627
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100628// Generates stubs for the parts of the public SDK API provided by the core
629// library.
Nan Zhangf0207602018-09-10 18:57:38 -0700630droidstubs {
631 name: "core-current-stubs-gen",
Neil Fuller866ed4a2018-09-06 12:05:46 +0100632 srcs: [":core_api_files"],
Tobias Thiererde991232018-03-07 15:10:46 +0000633 java_version: "1.9",
Nan Zhang602fc0e2018-03-22 16:14:22 -0700634 installable: false,
635 no_framework_libs: true,
Neil Fullerbe9258e2018-09-24 17:11:27 +0100636 args: " --exclude-annotations "
637 + "--hide-annotation libcore.api.Hide",
638 merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
Nan Zhang602fc0e2018-03-22 16:14:22 -0700639}
640
Pete Gillin600c7cf2018-08-16 19:28:38 +0100641// Target for validating nullability annotations for correctness and
642// completeness. To check that there are no nullability errors:
643// make core-current-stubs-nullability-validation
644// To check that there are only the expected nullability warnings:
645// make core-current-stubs-nullability-validation-check-nullability-warnings
646// To update the the list of known expected nullability warnings:
647// make core-current-stubs-nullability-validation-update-nullability-warnings
648droidstubs {
649 name: "core-current-stubs-nullability-validation",
650 srcs: [":core_api_files"],
651 installable: false,
652 no_framework_libs: true,
653 annotations_enabled: true,
654 args: "--hide-annotation libcore.api.Hide " +
655 "--validate-nullability-from-merged-stubs ",
656 merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
657 merge_annotations_dirs: [
658 "metalava-manual",
659 // N.B. Stubs in this filegroup will be validated:
660 "ojluni-annotated-nullability-stubs",
661 ],
662 // The expected set of warnings about missing annotations:
663 check_nullability_warnings: "nullability_warnings.txt",
664}
665
Neil Fuller77e3f3b2018-10-19 10:22:32 +0100666// A stubs target containing the parts of the public SDK API provided by the
667// core library.
668//
Neil Fullera6ba3592018-09-21 13:19:37 +0100669// Don't use this directly, use "sdk_version: core_current".
670java_library {
Nan Zhang602fc0e2018-03-22 16:14:22 -0700671 name: "core.current.stubs",
Nan Zhangf0207602018-09-10 18:57:38 -0700672 srcs: [":core-current-stubs-gen"],
Nan Zhang602fc0e2018-03-22 16:14:22 -0700673 errorprone: {
674 javacflags: [
675 "-Xep:MissingOverride:OFF",
676 ],
677 },
Tobias Thierer496a9382018-06-12 14:09:11 +0100678 openjdk9: {
679 javacflags: ["--patch-module=java.base=."],
680 },
Nan Zhang602fc0e2018-03-22 16:14:22 -0700681 no_standard_libs: true,
682 system_modules: "none",
683}
Neil Fullere784ef22018-11-16 15:54:30 +0000684
685// A host library containing time zone related classes. Used for
686// host-side tools and tests that have to deal with Android
687// time zone data.
688java_library_host {
689 name: "timezone-host",
690 srcs: [":timezone_host_files"],
691}