// 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",
    defaults: ["libcore_java_defaults"],

    srcs: [
        ":core_oj_java_files",
        ":core_libart_java_files",
        ":openjdk_lambda_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",
    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",
    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",
        ],
    },

    required: [
        // Device files put in /system.
        "tzdata",
        "tz_version",
    ],
    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.
java_library {
    name: "core-oj-hiddenapi",
    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",
    ],
}

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