// Copyright (C) 2007 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.

//
// Definitions for building the Android core library and associated tests.
//

// The Android core library provides low-level APIs for use by the rest of the
// Android software stack. It is made up of various parts, some of which can be
// found in libcore/ and other parts that can be found in various external/
// directories.
//
// libcore has some sub-directories that follow a common structure:
// e.g. dalvik, dom, harmony-tests, json, jsr166-tests, luni, libart, ojluni,
// support, xml, xmlpull.
//
// The structure of these is generally:
//
//   src/
//       main/               # To be shipped on every device.
//            java/          # Java source for library code.
//            native/        # C/C++ source for library code.
//            resources/     # Support files.
//       test/               # Built only on demand, for testing.
//            java/          # Java source for tests.
//            native/        # C/C++ source for tests (rare).
//            resources/     # Support files.
//
// All subdirectories are optional.

build = [
    "openjdk_java_files.bp",
    "non_openjdk_java_files.bp",
]

// The Java files and their associated resources.
filegroup {
    name: "core-luni-resources",
    visibility: [
        "//libcore:__subpackages__",
    ],
    path: "luni/src/main/java/",
    srcs: [
        "luni/src/main/java/java/util/logging/logging.properties",
        "luni/src/main/java/java/security/security.properties",
    ],
}

filegroup {
    name: "core-ojluni-resources",
    visibility: [
        "//libcore:__subpackages__",
    ],
    path: "ojluni/src/main/resources/",
    srcs: [
        "ojluni/src/main/resources/**/*",
    ],
}

core_resources = [
    ":core-luni-resources",
    ":core-ojluni-resources",
]

// The source files that go into core-oj.
filegroup {
    name: "core_oj_java_files",
    visibility: [
        "//libcore:__subpackages__",
    ],
    srcs: [":openjdk_java_files"],
}

// OpenJDK source is not annotated with @hide so we need this separate
// filegroup for just the parts that contribute to the API.
filegroup {
    name: "core_oj_api_files",
    srcs: [":openjdk_javadoc_files"],
}

// The source files that go into core-libart.
filegroup {
    name: "core_libart_java_files",
    visibility: [
        "//libcore:__subpackages__",
    ],
    srcs: [
        ":non_openjdk_java_files",
    ],
}

// Some parts of libart are not annotated with @hide so we need this separate
// filegroup for just the parts that contribute to the API.
filegroup {
    name: "core_libart_api_files",
    srcs: [
        ":non_openjdk_javadoc_files",
    ],
}

// The set of files for the core library that have been marked up with @hide
// for the public SDK APIs. Used from frameworks/base/ to indicate the source
// files for inclusion in the public SDK docs.
//
// Deprecated: Will be replaced by core-current-stubs-source.
filegroup {
    name: "core_public_api_files",
    visibility: [
        "//frameworks/base",
    ],
    srcs: [
        ":android_icu4j_public_api_files",
    ],
}

// Contains the stubs source for the part of the Android SDK public API which
// is provided by the core libraries.
//
// Currently is only a placeholder that creates an empty srcjar due to issues
// caused by http://b/142113901.
//
// TODO(http://b/142113521) - Add stubs source for the core library modules.
genrule {
    name: "core-current-stubs-source",
    visibility: [
        "//frameworks/base",
    ],
    tools: [
        "merge_zips",
    ],
    srcs: [
        ":art-module-public-api-stubs-source",
        ":conscrypt-module-public-api-stubs-source",
    ],
    out: ["core-current-stubs-source.srcjar"],
    cmd: "$(location merge_zips) $(out)" +
        " $(location :art-module-public-api-stubs-source)" +
        " $(location :conscrypt-module-public-api-stubs-source)",
}

// The set of files for the ART module that contribute to one or more API
// surfaces. This includes files that are in the public API as well as those
// that are not but which have been marked up with @hide plus one or more of
// the API defining annotations.
//
// Some source files in :core_oj_api_files and :openjdk_mmodule_extra_files are
// annotated by applying annotations to the .annotated.java stubs files in
// ojluni/annotated/mmodules and rather than in the original source. See the comments
// in openjdk_java_files.bp for more details.
filegroup {
    name: "art_module_api_files",
    visibility: [
        "//libcore:__subpackages__",
    ],
    srcs: [
        ":apache-xml_api_files",
        ":bouncycastle_java_files",
        ":core_oj_api_files",
        ":core_libart_api_files",
        ":okhttp_api_files",
        ":openjdk_mmodule_extra_files",
    ],
}

java_defaults {
    name: "libcore_java_defaults",
    javacflags: [
        //"-Xlint:all",
        //"-Xlint:-serial,-deprecation,-unchecked",
    ],
    dxflags: ["--core-library"],
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF", // Ignore missing @Override.
            "-Xep:ConstantOverflow:WARN", // Known constant overflow in SplittableRandom
        ],
    },
}

//
// Build for the target (device).
//

// A target used to bootstrap compilation for the core library.
//
// See core-all-system-modules for more details.
java_library {
    name: "core-all",
    defaults: ["libcore_java_defaults"],

    srcs: [
        // Use the source code for the I18N module intra core API as using the
        // compiled version does not work due to limitations in either soong or the javac
        // toolchain. See http://b/142056316 for more details.
        ":i18n-module-intra-core-api-stubs-source",
        ":core_oj_java_files",
        ":core_libart_java_files",
        ":openjdk_lambda_stub_files",
        ":openjdk_generated_annotation_stub_files",
        ":app-compat-annotations-source",
    ],

    sdk_version: "none",
    system_modules: "none",
    patch_module: "java.base",
    openjdk9: {
        srcs: ["luni/src/module/java/module-info.java"],
    },

    java_resources: core_resources,
    java_version: "1.9",

    installable: false,

    plugins: [
        "compat-changeid-annotation-processor",
        "unsupportedappusage-annotation-processor",
    ],
}

platform_compat_config {
    name: "libcore-platform-compat-config",
    src: ":core-all",
}

// A system modules definition for use by core library targets only. It only
// contains the core-all jar, which contains the classes that end up in core-oj,
// core-libart as well as the lambda stubs needed to compile Java lambda code.
// It does not contain other parts of core library like conscrypt, bouncycastle,
// etc. This system_modules definition is used to bootstrap compilation for
// other parts of the core library like core-oj, core-libart, conscrypt,
// bouncycastle, etc.
java_system_modules {
    name: "core-all-system-modules",

    // Visibility is deliberately restricted to a small set of build modules that
    // the core library team control.
    visibility: [
        "//external/apache-harmony:__subpackages__",
        "//external/apache-xml",
        "//external/okhttp",
        "//libcore:__subpackages__",
    ],

    libs: ["core-all"],
}

// Contains the parts of core library associated with OpenJDK.
java_library {
    name: "core-oj",
    visibility: [
        "//art/build/apex",
        "//external/wycheproof",
        "//libcore/benchmarks",
    ],
    apex_available: [
        "com.android.art.release",
        "com.android.art.debug",
    ],
    defaults: ["libcore_java_defaults"],
    installable: true,
    hostdex: true,

    srcs: [":core_oj_java_files"],
    java_resources: core_resources,

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    patch_module: "java.base",

    jacoco: {
        exclude_filter: [
            "java.lang.Class",
            "java.lang.Long",
            "java.lang.Number",
            "java.lang.Object",
            "java.lang.String",
            "java.lang.invoke.MethodHandle",
            "java.lang.ref.Reference",
            "java.lang.reflect.Proxy",
            "java.util.AbstractMap",
            "java.util.HashMap",
            "java.util.HashMap$Node",
            "java.util.Map",
        ],
    },

    notice: "ojluni/NOTICE",

}

// Contains parts of core library not associated with OpenJDK. Contains not
// just java.*, javax.* code but also android.system.* and various internal
// libcore.* packages.
java_library {
    name: "core-libart",
    visibility: [
        "//art/build/apex",
        "//external/robolectric-shadows",
        "//external/wycheproof",
        "//libcore/benchmarks",
        "//frameworks/layoutlib",
    ],
    apex_available: [
        "com.android.art.release",
        "com.android.art.debug",
    ],
    defaults: ["libcore_java_defaults"],
    installable: true,
    hostdex: true,

    srcs: [":core_libart_java_files"],
    java_version: "1.9",

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    patch_module: "java.base",

    jacoco: {
        exclude_filter: [
            "java.lang.DexCache",
            "dalvik.system.ClassExt",
        ],
    },

    target: {
        hostdex: {
            required: [
                // Files used to simulate the /system, runtime APEX and tzdata
                // APEX dir structure on host.
                "icu_tzdata.dat_host_tzdata_apex",
                "tzdata_host",
                "tzdata_host_tzdata_apex",
                "tzlookup.xml_host_tzdata_apex",
                "tz_version_host",
                "tz_version_host_tzdata_apex",
            ],
        },
    },
}

// Provided solely to contribute information about which hidden parts of the
// core-oj API are used by apps.
//
// The build system determines that this library provides hiddenapi information
// for the core-oj bootjar because its name is of the form <x>-hiddenapi, where
// <x> is the name of a boot jar. That triggers the generation of a flags.csv
// file which encapsulates information extracted from the UnsupportedAppUsage
// annotations in the dex. The information from that file is then encoded into
// the core-oj file.
//
// Usually, e.g. for core-libart, the UnsupportedAppUsage annotations are
// added to the source that is compiled directly into the bootjar and the build
// system extracts the information about UnsupportedAppUsage directly from
// there.
//
// This approach of having separate annotated source and a separate build
// target was taken for ojluni to avoid having to maintain local patches in the
// ojluni source for UnsupportedAppUsage annotations as that would make it more
// difficult to pull down changes from upstream.
//
java_library {
    name: "core-oj-hiddenapi",
    // Do not allow this to be accessed from outside this directory.
    visibility: ["//visibility:private"],
    defaults: ["libcore_java_defaults"],
    compile_dex: true,

    srcs: [":openjdk_hiddenapi_javadoc_files"],

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    patch_module: "java.base",
    plugins: ["unsupportedappusage-annotation-processor"],
}

java_defaults {
    name: "core_lambda_stubs_defaults",
    defaults: ["libcore_java_defaults"],
    hostdex: true,

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    patch_module: "java.base",

    notice: "ojluni/NOTICE",

    installable: false,
    include_srcs: true,
}

// Creates a jar that exists to satisfy javac when compiling source code that
// contains lambdas. This contains all classes / methods required by javac
// when generating invoke-dynamic lambda implementation code, even those that
// are also in the public SDK API from API level 26 onwards.
java_library {
    name: "core-lambda-stubs",
    visibility: ["//visibility:public"],
    defaults: ["core_lambda_stubs_defaults"],
    srcs: [
        ":openjdk_lambda_stub_files",
        ":openjdk_lambda_duplicate_stub_files",
    ],
}

// An alternative to core-lambda-stubs that omits openjdk_lambda_duplicate_stub_files
// because those classes are also part of the core library public SDK API
// (since API level 26).
java_library {
    name: "core-lambda-stubs-for-system-modules",
    visibility: [
        "//libcore/mmodules/core_platform_api",
    ],
    defaults: ["core_lambda_stubs_defaults"],
    srcs: [
        ":openjdk_lambda_stub_files",
    ],
}

// Creates a jar that exists to satisfy javac when compiling source code that
// contains @Generated annotations, which are produced by some code generation
// tools (notably dagger) but aren't part of the Android API.
// See http://b/123891440.
java_library {
    name: "core-generated-annotation-stubs",
    visibility: [
        "//libcore/mmodules/core_platform_api",
    ],
    defaults: ["libcore_java_defaults"],
    srcs: [
        ":openjdk_generated_annotation_stub_files",
    ],
    hostdex: true,
    sdk_version: "none",
    system_modules: "core-all-system-modules",
    patch_module: "java.base",
    notice: "ojluni/NOTICE",
    installable: false,
    include_srcs: true,
}

// Builds libcore test rules
java_library_static {
    name: "core-test-rules",
    visibility: [
        "//art/build/sdk",
        "//external/conscrypt",
        "//external/conscrypt/apex/tests",
        "//frameworks/base/location/tests/locationtests",
        "//frameworks/base/core/tests/coretests",
        "//frameworks/base/wifi/tests",
        "//cts/tests/tests/util",
    ],
    hostdex: true,
    srcs: [
        "dalvik/test-rules/src/main/**/*.java",
        "test-rules/src/main/**/*.java",
    ],
    static_libs: ["junit"],

    sdk_version: "none",
    system_modules: "core-all-system-modules",
}

// Builds platform_compat test rules
java_library_static {
    name: "core-compat-test-rules",
    visibility: [
        "//art/build/sdk",
        "//frameworks/base/tests/PlatformCompatGating/test-rules",
    ],
    srcs: [
        "luni/src/main/java/android/compat/**/*.java",
        "test-rules/src/platform_compat/**/*.java",
        "luni/src/main/java/libcore/api/CorePlatformApi.java",
        "luni/src/main/java/libcore/api/IntraCoreApi.java",
    ],
    static_libs: [
        "junit",
        "guava",
    ],
    sdk_version: "none",
    system_modules: "core-all-system-modules",
    // This builds classes that are in the java.base Java module:
    patch_module: "java.base",
    hostdex: true,
}

// Builds the core-tests-support library used by various tests.
java_library_static {
    name: "core-tests-support",
    visibility: [
        "//art/build/sdk",
        "//cts/apps/CtsVerifier",
        "//cts/tests/tests/keystore",
        "//cts/tests/tests/net",
        "//cts/tests/tests/net/api23Test",
        "//external/apache-harmony",
        "//frameworks/base/core/tests/coretests",
        "//libcore/benchmarks",
        "//packages/apps/KeyChain/tests",
        "//system/timezone/distro/core",
    ],
    hostdex: true,
    srcs: ["support/src/test/java/**/*.java"],

    sdk_version: "core_platform",
    libs: ["junit"],
    static_libs: [
        "bouncycastle-unbundled",
        "bouncycastle-bcpkix-unbundled",
        "bouncycastle-ocsp-unbundled",
    ],
}

// Builds the jsr166-tests library.
java_test {
    name: "jsr166-tests",
    visibility: [
        "//cts/tests/libcore/jsr166",
    ],
    srcs: ["jsr166-tests/src/test/java/**/*.java"],
    sdk_version: "none",
    system_modules: "core-all-system-modules",
    libs: [
        "junit",
    ],
}

// A filegroup that provides access to a source file for a toolchain test that
// checks Java 9 language features are handled properly by JarJar.
filegroup {
    name: "core-java-9-language-features-source",
    srcs: ["luni/src/main/java/libcore/internal/Java9LanguageFeatures.java"],
    visibility: ["//libcore/luni/src/test/java9language"],
}

genrule {
    name: "core-tests-smali-dex",
    srcs: ["luni/src/test/java/**/*.smali"],
    cmd: "$(location smali) ass --api 28 -o $(out) $(in)",
    out: ["core-tests-smali.dex"],
    tools: ["smali"],
}

// Builds the core-tests library.
java_test {
    name: "core-tests",
    visibility: [
        "//cts/tests/libcore/luni",
    ],
    defaults: ["libcore_java_defaults"],
    hostdex: true,
    srcs: [
        "dalvik/src/test/java/**/*.java",
        "dalvik/test-rules/src/test/java/**/*.java",
        "dom/src/test/java/**/*.java",
        "harmony-tests/src/test/java/**/*.java",
        "json/src/test/java/**/*.java",
        "luni/src/test/java/**/*.java",
        "test-rules/src/test/java/**/*.java",
        "xml/src/test/java/**/*.java",
    ],
    exclude_srcs: [
        "luni/src/test/java/libcore/java/util/zip/Zip64Test.java",
        "luni/src/test/java/libcore/java/util/zip/Zip64FileTest.java",
    ],

    java_resource_dirs: [
        "*/src/test/java",
        "*/src/test/resources",
    ],
    exclude_java_resource_dirs: [
        "ojluni/src/test/java",
        "ojluni/src/test/resources",
    ],

    java_resources: [
        ":annotations-test",
        ":filesystemstest",
        ":parameter-metadata-test",
        ":core-tests-smali-dex",
    ],

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    libs: [
        "okhttp",
        "bouncycastle",
    ],

    static_libs: [
        "core-compat-test-rules",
        "core-java-9-language-tests",
        "core-test-rules",
        "core-tests-support",
        "junit-params",
        "mockftpserver",
        "mockito-target",
        "mockwebserver",
        "nist-pkix-tests",
        "slf4j-jdk14",
        "sqlite-jdbc",
        "tzdata-testing",
        "truth-prebuilt-jar",
    ],

    errorprone: {
        javacflags: [
            "-Xep:TryFailThrowable:ERROR",
            "-Xep:ComparisonOutOfRange:ERROR",
        ],
    },

    test_config: "AndroidTest-core-tests.xml",
}

// Builds the core-ojtests library that contains test code from OpenJDK.
java_test {
    name: "core-ojtests",
    defaults: ["libcore_java_defaults"],
    hostdex: true,

    srcs: [
        "ojluni/src/test/java/**/*.java",
    ],
    java_resource_dirs: [
        "ojluni/src/test/java",
        "ojluni/src/test/resources",
    ],

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    libs: [
        "okhttp",
        "bouncycastle",
    ],

    static_libs: ["testng"],

    // ojluni/src/test/java/util/stream/{bootlib,boottest}
    // contains tests that are in packages from java.base;
    // By default, OpenJDK 9's javac will only compile such
    // code if it's declared to also be in java.base at
    // compile time.
    //
    // For now, we use patch_module to put all sources
    // and dependencies from this make target into java.base;
    // other source directories in this make target are in
    // packages not from java.base; if this becomes a problem
    // in future, this could be addressed eg. by splitting
    // boot{lib,test} out into a separate make target,
    // deleting those tests or moving them to a different
    // package.
    patch_module: "java.base",
}

// Builds the core-ojtests-public library. Excludes any private API tests.
// Like core-ojtests but smaller.
java_test {
    name: "core-ojtests-public",
    visibility: [
        "//cts/tests/libcore/ojluni",
    ],
    defaults: ["libcore_java_defaults"],
    srcs: [
        "ojluni/src/test/java/**/*.java",
    ],
    // Filter out the following:
    // 1.) DeserializeMethodTest and SerializedLambdaTest, because they depends on stub classes
    //     and won't actually run, and
    // 2.) util/stream/boot*. Those directories contain classes in the package java.util.stream;
    //     excluding them means we don't need patch_module: "java.base"
    exclude_srcs: [
        "**/DeserializeMethodTest.java",
        "**/SerializedLambdaTest.java",
        "ojluni/src/test/java/util/stream/boot*/**/*",
    ],
    java_resource_dirs: [
        "ojluni/src/test/java",
        "ojluni/src/test/resources",
        // Include source code as part of JAR
        "ojluni/src/test/dist",
    ],

    sdk_version: "none",
    system_modules: "core-all-system-modules",
    libs: [
        "bouncycastle",
        "okhttp",
        "testng",
    ],
}

// Exports annotated stubs source files in ojluni/annotations/sdk to make them
// available to metalava. Used for nullability annotations in OpenJDK source.
droiddoc_exported_dir {
    name: "ojluni-annotated-sdk-stubs",
    path: "ojluni/annotations/sdk",
}

droiddoc_exported_dir {
    name: "ojluni-annotated-nullability-stubs",
    path: "ojluni/annotations/sdk/nullability",
}

// Exports annotated stubs source files in ojluni/annotations/mmodules to make
// them available to metalava. Used for core platform API and intra-core API
// annotations in OpenJDK source.
droiddoc_exported_dir {
    name: "ojluni-annotated-mmodule-stubs",
    visibility: [
        "//libcore/mmodules/core_platform_api",
        "//libcore/mmodules/intracoreapi",
    ],
    path: "ojluni/annotations/mmodule",
}

// A file containing the list of tags that are "known" to us from the OpenJdk
// source code and so should not cause an error or warning.
filegroup {
    name: "known-oj-tags",
    visibility: [
        "//frameworks/base",
    ],
    srcs: [
        "known_oj_tags.txt",
    ],
}

// A special set of stubs containing the minimal set of self consistent
// classes for which a system module can be created. Every system module must
// contain the java.lang classes so the set was constructed by starting with
// the java.lang classes and then adding their transitive dependencies without
// splitting packages. So, if one class from a package is used then all classes
// in that package were added to the set.
//
// Needed for java-current-stubs-system-modules.
droidstubs {
    name: "java-current-stubs-source",
    srcs: [
        ":core_oj_api_files",
        ":core_libart_api_files",
    ],
    java_version: "1.9",
    installable: false,
    sdk_version: "none",
    system_modules: "none",

    args: "--stub-packages java.*:javax.*:org.w3c.dom.*:org.xml.sax.*",
}

java_library {
    name: "java.current.stubs",
    srcs: [":java-current-stubs-source"],
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF",
        ],
    },
    patch_module: "java.base",
    sdk_version: "none",
    system_modules: "none",
}

// A special set of system modules needed to build art.module.public.api.stubs
// that contain nullability annotations when targeting java language level 1.9
// and above.
java_system_modules {
    name: "java-current-stubs-system-modules",
    libs: [
        // Minimal set of classes required for a system module.
        "java.current.stubs",

        // The nullability annotations used by the generated stubs.
        "stub-annotations",
    ],
}

// http://b/129765390 Rewrite links to "platform" or "technotes" folders
// which are siblings (and thus outside of) {@docRoot}.
//
// We have to escape \ as \\ and $ as $$ here because they get resolved by
// different layers of the build tooling. The arguments are wrapped in '' so
// that the shell doesn't add yet another level of escaping.
rewrite_openjdk_doc_args = "--replace-documentation " +
    // packages whose descendants to apply replacement to (all packages from
    // libcore/ojluni/src/main/java that contribute to documentation).
    "com.sun:java:javax:jdk.net:sun " +
    // regex of the string to replace
    "'(<a\\s+href\\s?=[\\*\\s]*\")(?:(?:\\{@docRoot\\}/\\.\\./)|(?:(?:\\.\\./)+))((?:platform|technotes).+)\">' " +
    // replacement (with $1, $2 backreferences to the regex groups)
    "'$$1https://docs.oracle.com/javase/8/docs/$$2\">' "

// Generates stubs for the parts of the public SDK API provided by the ART module.
//
// Only for use by art.module.public.api.stubs target below.
droidstubs {
    name: "art-module-public-api-stubs-source",
    srcs: [
        ":core_oj_api_files",
        ":core_libart_api_files",
    ],
    java_version: "1.9",
    installable: false,
    sdk_version: "none",
    system_modules: "java-current-stubs-system-modules",
    libs: [
        // Provide access to I18N constants that are used to initialize
        // constants in the public API. i.e. to allow the value of the
        // java.text.CollectionElementIterator.NULLORDER to be initialized from
        // android.icu.text.CollationElementIterator.NULLORDER.
        "i18n.module.intra.core.api.stubs",
    ],

    args: rewrite_openjdk_doc_args,

    create_doc_stubs: true,

    // Emit nullability annotations from the source to the stub files.
    annotations_enabled: true,

    merge_annotations_dirs: [
        "ojluni-annotated-sdk-stubs",
    ],
}

// A stubs target containing the parts of the public SDK API provided by the ART module.
java_library {
    name: "art.module.public.api.stubs",
    srcs: [":art-module-public-api-stubs-source"],
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF",
        ],
    },
    patch_module: "java.base",
    sdk_version: "none",
    system_modules: "java-current-stubs-system-modules",
}

// Used when compiling higher-level code against art.module.public.api.stubs.
//
// This is only intended for use within core libraries and must not be used
// from outside.
java_system_modules {
    name: "art-module-public-api-stubs-system-modules",
    visibility: [
        "//art/build/sdk",
        "//external/conscrypt",
        "//external/icu/android_icu4j",
        "//external/wycheproof",
    ],
    libs: [
        "art.module.public.api.stubs",
        // This one is not on device but it's needed when javac compiles code
        // containing lambdas.
        "core-lambda-stubs-for-system-modules",
        // This one is not on device but it's needed when javac compiles code
        // containing @Generated annotations produced by some code generation
        // tools.
        // See http://b/123891440.
        "core-generated-annotation-stubs",

        // Ensure that core libraries that depend on the public API can access
        // the UnsupportedAppUsage, CorePlatformApi and IntraCoreApi
        // annotations.
        "art.module.api.annotations.for.system.modules",

        // Make nullability annotations available when compiling public stubs.
        // They are provided as a separate library because while the
        // annotations are not themselves part of the public API provided by
        // this module they are used in the stubs.
        "stub-annotations",
    ],
}

// A stubs target containing the parts of the public SDK API provided by the
// core library.
//
// Don't use this directly, use "sdk_version: core_current".
java_library {
    name: "core.current.stubs",
    visibility: ["//visibility:public"],
    static_libs: [
        "art.module.public.api.stubs",
        "conscrypt.module.public.api.stubs",
        "i18n.module.public.api.stubs",
    ],
    sdk_version: "none",
    system_modules: "none",

    dist: {
        targets: [
            "sdk",
            "win_sdk",
        ],
    },
}

// Used when compiling higher-level code against core.current.stubs.
java_system_modules {
    name: "core-current-stubs-system-modules",
    visibility: ["//visibility:public"],
    libs: [
        "core.current.stubs",
        // This one is not on device but it's needed when javac compiles code
        // containing lambdas.
        "core-lambda-stubs-for-system-modules",
        // This one is not on device but it's needed when javac compiles code
        // containing @Generated annotations produced by some code generation
        // tools.
        // See http://b/123891440.
        "core-generated-annotation-stubs",
    ],
}

// Target for validating nullability annotations for correctness and
// completeness. To check that there are no nullability errors:
//   m art-module-public-api-stubs-nullability-validation
// To check that there are only the expected nullability warnings:
//   m art-module-public-api-stubs-nullability-validation-check-nullability-warnings
// (If that check fails, it will provide instructions on how to proceed,
// including the command to run to update the expected warnings file.)
droidstubs {
    name: "art-module-public-api-stubs-nullability-validation",
    srcs: [":art_module_api_files"],
    installable: false,
    sdk_version: "none",
    system_modules: "none",
    annotations_enabled: true,
    args: "--hide-annotation libcore.api.Hide " +
        "--validate-nullability-from-merged-stubs ",
    merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
    merge_annotations_dirs: [
        // N.B. Stubs in this filegroup will be validated:
        "ojluni-annotated-nullability-stubs",
    ],
    // The list of classes which have nullability annotations included in the source.
    // (This is in addition to those which have annotations in the merged stubs.)
    validate_nullability_from_list: "nullability_annotated_classes.txt",
    // The expected set of warnings about missing annotations:
    check_nullability_warnings: "nullability_warnings.txt",
}

// A host library containing time zone related classes. Used for
// host-side tools and tests that have to deal with Android
// time zone data.
java_library_host {
    name: "timezone-host",
    visibility: [
        "//art/build/sdk",
        "//system/timezone/distro/core",
    ],
    srcs: [":timezone_host_files"],
}

// A special set of system modules for building the following library for use
// in the art-module-public-api-system-modules.
java_system_modules {
    name: "api-annotations-system-modules",
    libs: [
        "art.module.public.api.stubs",
    ],
}

// A library that contains annotations that define API surfaces (core
// platform, intra core and the hidden API) along with some supporting
// constants. The annotations are source only and do not introduce any runtime
// dependencies. Specially built for use in system modules definitions to
// avoid introducing compile time cycles.
java_library {
    name: "art.module.api.annotations.for.system.modules",
    srcs: [
        ":api_surface_annotation_files",
    ],

    installable: false,
    sdk_version: "none",
    system_modules: "api-annotations-system-modules",
    patch_module: "java.base",
}

// Create a library containing the api surface annotations, built against
// core_current for use by the annotation processor in frameworks/base.
java_library {
    name: "art.module.api.annotations",
    visibility: [
        "//frameworks/base",
    ],
    host_supported: true,
    srcs: [
        ":api_surface_annotation_files",
    ],
    java_version: "1.9",
    sdk_version: "core_current",
}
