// 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. See the "core-system-modules" definition for the parts.

// 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/libcore/net/android.mime.types",
        "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",
    ":debian.mime.types",
]

// 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",
        ":android_icu4j_src_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",
        ":android_icu4j_src_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.
filegroup {
    name: "core_public_api_files",
    visibility: [
        "//frameworks/base",
    ],
    srcs: [
        ":core_oj_api_files",
        ":core_libart_api_files",
        ":conscrypt_public_api_files",
    ],
}

// The set of files for the core library that have been marked up with @hide and
// API-related annotations. Note that this includes the intra-core and
// core-platform APIs as well as the public APIs.
//
// 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: "core_api_files",
    visibility: [
        "//libcore:__subpackages__",
    ],
    srcs: [
        ":apache-xml_api_files",
        ":bouncycastle_java_files",
        ":conscrypt_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).
//

// Visibility of core-all* build modules; we restrict visibility of core-all deliberately to
// a small set of build modules that the core library team control. See core-all-system-modules
// for more details.
core_all_visibility = [
    "//external/apache-harmony:__subpackages__",
    "//external/apache-xml",
    "//external/bouncycastle",
    "//external/conscrypt",
    "//external/icu/android_icu4j",
    "//external/okhttp",
    "//libcore:__subpackages__",
]

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

    srcs: [
        ":core_oj_java_files",
        ":core_libart_java_files",
        ":openjdk_lambda_stub_files",
        ":openjdk_generated_annotation_stub_files",
    ],

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

    java_resources: core_resources,
    static_libs: ["android_icu4j_resources_lib"],
    java_version: "1.9",

    installable: false,
}

// 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.
//
// If you want to compile against the entire core library implementation, for
// example to build core library tests, see "core-system-modules" instead.
java_system_modules {
    name: "core-all-system-modules",
    visibility: core_all_visibility,
    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",
    ],
    defaults: ["libcore_java_defaults"],
    installable: true,
    hostdex: true,

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

    sdk_version: "none",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    openjdk9: {
        javacflags: ["--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.icu.*, 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",
    ],
    defaults: ["libcore_java_defaults"],
    installable: true,
    hostdex: true,

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

    sdk_version: "none",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    openjdk9: {
        javacflags: ["--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",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    openjdk9: {
        javacflags: ["--patch-module=java.base=."],
    },
}

//
// Guaranteed unstripped versions of core-oj and core-libart.
//
// The build system may or may not strip the core-oj and core-libart jars,
// but these will not be stripped. See b/24535627.
//

java_library {
    name: "core-oj-testdex",
    installable: true,
    static_libs: ["core-oj"],
    sdk_version: "none",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    dxflags: ["--core-library"],
    dex_preopt: {
        enabled: false,
    },
    java_version: "1.9",
    notice: "ojluni/NOTICE",
}

java_library {
    name: "core-libart-testdex",
    installable: true,
    static_libs: ["core-libart"],
    sdk_version: "none",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    dxflags: ["--core-library"],
    dex_preopt: {
        enabled: false,
    },
    notice: "ojluni/NOTICE",
}

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

    sdk_version: "none",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    openjdk9: {
        javacflags: ["--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",
    libs: ["core-all"],
    system_modules: "core-all-system-modules",
    openjdk9: {
        javacflags: ["--patch-module=java.base=."],
    },
    notice: "ojluni/NOTICE",
    installable: false,
    include_srcs: true,
}

// A system modules definition containing the implementations for the various
// parts that make up the core library.
//
// This system module is intended for use by tests that may need access to
// core library internals. It should not be generally used; most of the
// platform build should build against API stubs instead. See
// "core-platform-api-stubs-system-modules", which is the default used by the
// Android build.
//
// This module also includes lambda stubs for compiling source containing
// Java lambdas.
java_system_modules {
    name: "core-system-modules",
    visibility: ["//visibility:public"],
    libs: [
        "core-oj",
        "core-libart",
        "bouncycastle",
        "conscrypt",
        "okhttp",
        "apache-xml",
        // This one is not on device but it's needed when javac compiles code
        // containing lambdas.
        "core-lambda-stubs-for-system-modules",
    ],
}

// Builds libcore test rules
java_library_static {
    name: "core-test-rules",
    visibility: [
        "//frameworks/base/location/tests/locationtests",
    ],
    hostdex: true,
    srcs: [
        "dalvik/test-rules/src/main/**/*.java",
        "test-rules/src/main/**/*.java",
    ],
    static_libs: ["junit"],

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

// Builds the core-tests-support library used by various tests.
java_library_static {
    name: "core-tests-support",
    visibility: [
        "//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",
    libs: [
        "core-all",
        "junit",
    ],
    system_modules: "core-all-system-modules",
}

// 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"],
}

// 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",
    ],

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

    static_libs: [
        "archive-patcher",
        "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",
    ],

    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",
    libs: [
        "core-all",
        "okhttp",
        "bouncycastle",
    ],
    system_modules: "core-all-system-modules",

    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",
    libs: [
        "core-all",
        "bouncycastle",
        "okhttp",
        "testng",
    ],
    system_modules: "core-all-system-modules",
}

// 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",
    visibility: [
        "//frameworks/base",
    ],
    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",
    ],
}

// Generates stubs for the parts of the public SDK API provided by the core
// library.
//
// Only for use by core.current.stubs target below.
droidstubs {
    name: "core-current-stubs-gen",
    srcs: [":core_api_files"],
    java_version: "1.9",
    installable: false,
    sdk_version: "none",
    args: " --exclude-annotations " +
        "--hide-annotation libcore.api.Hide",
    merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
}

// 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"],
    srcs: [":core-current-stubs-gen"],
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF",
        ],
    },
    openjdk9: {
        javacflags: ["--patch-module=java.base=."],
    },
    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:
//   make core-current-stubs-nullability-validation
// To check that there are only the expected nullability warnings:
//   make core-current-stubs-nullability-validation-check-nullability-warnings
// To update the the list of known expected nullability warnings:
//   make core-current-stubs-nullability-validation-update-nullability-warnings
droidstubs {
    name: "core-current-stubs-nullability-validation",
    srcs: [":core_api_files"],
    installable: false,
    sdk_version: "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: [
        "metalava-manual",
        // 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: [
        "//system/timezone/distro/core",
    ],
    srcs: [":timezone_host_files"],
}

// The source files that contain the UnsupportedAppUsage annotation and its dependencies.
filegroup {
    name: "unsupportedappusage_annotation_files",
    visibility: [
        "//frameworks/base",
    ],
    srcs: [
        "dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java",
        "dalvik/src/main/java/dalvik/system/VersionCodes.java",
        "luni/src/main/java/libcore/api/CorePlatformApi.java",
        "luni/src/main/java/libcore/api/IntraCoreApi.java",
    ],
}
