// 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.
core_resource_dirs = [
    "luni/src/main/java",
    "ojluni/src/main/resources/",
]

// The source files that go into core-oj.
filegroup {
    name: "core_oj_java_files",
    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",
    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",
    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",
    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).
//

// Rule generating resource lib for android_icu4j.
// In the downstream branch master-icu-dev, the resource files are generated.
// This rule can't be moved external/icu because soong enforces that no_standard_libs:true can only
// be used in libcore/ or development/
java_library {
    name: "android_icu4j_resources_lib",
    java_resources: [":android_icu4j_resources"],
    no_standard_libs: true,
    system_modules: "none",
}

// A target used to bootstrap compilation for the core library.
// See core-all-system-modules for more details.
java_library {
    name: "core-all",
    visibility: [
        "//external/apache-harmony:__subpackages__",
        "//external/apache-xml",
        "//external/bouncycastle",
        "//external/conscrypt",
        "//external/icu/android_icu4j",
        "//external/okhttp",
        "//libcore/mmodules/intracoreapi",
    ],
    defaults: ["libcore_java_defaults"],

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

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

    java_resource_dirs: core_resource_dirs,
    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",
    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_resource_dirs: core_resource_dirs,

    no_standard_libs: true,
    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",
    ],
    defaults: ["libcore_java_defaults"],
    installable: true,
    hostdex: true,

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

    no_standard_libs: true,
    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 and runtime APEX dir
                // structure on host.
                "tzdata_host",
                "tzdata_host_runtime_apex",
                "tzlookup.xml_host_runtime_apex",
                "tz_version_host",
                "tz_version_host_runtime_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"],

    no_standard_libs: true,
    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"],
    no_standard_libs: true,
    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"],
    no_standard_libs: true,
    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,

    no_standard_libs: true,
    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",
    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",
    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",
    defaults: ["libcore_java_defaults"],
    srcs: [
        ":openjdk_generated_annotation_stub_files",
    ],
    hostdex: true,
    no_standard_libs: true,
    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",
    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",
    hostdex: true,
    srcs: [
        "dalvik/test-rules/src/main/**/*.java",
        "test-rules/src/main/**/*.java",
    ],
    static_libs: ["junit"],

    no_standard_libs: true,
    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",
    hostdex: true,
    srcs: ["support/src/test/java/**/*.java"],

    no_framework_libs: true,
    libs: ["junit"],
    static_libs: [
        "bouncycastle-unbundled",
        "bouncycastle-bcpkix-unbundled",
        "bouncycastle-ocsp-unbundled",
    ],
}

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

// Builds a library just containing files from luni/src/test/filesystems
// for use in tests.
java_library {
    name: "filesystemstest",
    compile_dex: true,
    srcs: ["luni/src/test/filesystems/src/**/*.java"],
    java_resource_dirs: ["luni/src/test/filesystems/resources"],
    no_framework_libs: true,
    errorprone: {
        javacflags: ["-Xep:MissingOverride:OFF"],
    },
}

// Builds a library just containing files from luni/src/test/parameter_metadata
// for use in tests.
java_library {
    name: "parameter-metadata-test",
    compile_dex: true,
    srcs: ["luni/src/test/parameter_metadata/src/**/*.java"],
    no_framework_libs: true,
    javacflags: ["-parameters"],
    errorprone: {
        javacflags: ["-Xep:MissingOverride:OFF"],
    },
}

// Builds the core-tests library.
java_test {
    name: "core-tests",
    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",
    ],

    no_standard_libs: true,
    libs: [
        "core-all",
        "okhttp",
        "bouncycastle",
    ],
    system_modules: "core-all-system-modules",

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

    no_standard_libs: true,
    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",
    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",
    ],

    no_standard_libs: true,
    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",
    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-code API
// annotations in OpenJDK source.
droiddoc_exported_dir {
    name: "ojluni-annotated-mmodule-stubs",
    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",
    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,
    no_framework_libs: true,
    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",
    srcs: [":core-current-stubs-gen"],
    errorprone: {
        javacflags: [
            "-Xep:MissingOverride:OFF",
        ],
    },
    openjdk9: {
        javacflags: ["--patch-module=java.base=."],
    },
    no_standard_libs: true,
    system_modules: "none",

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

// 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,
    no_framework_libs: true,
    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",
    srcs: [":timezone_host_files"],
}

// The source files that contain the UnsupportedAppUsage annotation and its dependencies.
filegroup {
    name: "unsupportedappusage_annotation_files",
    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",
    ],
}
