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

// How stubs are generated:
//
// raw source files --(metalava)--> stub source files --(javac)--> stub jar files
//
// - The metalava conversion is done by droidstub modules
// - The javac compilation is done by java_library modules
//
// The metalava conversion is also responsible for creating API signature files
// and comparing them against the checked in API signature, and also checking compatibility
// with the latest frozen API signature.

/////////////////////////////////////////////////////////////////////
// Common metalava configs
/////////////////////////////////////////////////////////////////////

stubs_defaults {
    name: "metalava-non-updatable-api-stubs-default",
    defaults: ["android-non-updatable-stubs-defaults"],
    api_levels_annotations_enabled: false,
    defaults_visibility: ["//visibility:private"],
}

/////////////////////////////////////////////////////////////////////
// These modules provide source files for the stub libraries
/////////////////////////////////////////////////////////////////////

droidstubs {
    name: "api-stubs-docs-non-updatable",
    defaults: ["metalava-non-updatable-api-stubs-default"],
    args: metalava_framework_docs_args,
    check_api: {
        current: {
            api_file: "core/api/current.txt",
            removed_api_file: "core/api/removed.txt",
        },
        last_released: {
            api_file: ":android-non-updatable.api.public.latest",
            removed_api_file: ":android-non-updatable-removed.api.public.latest",
            baseline_file: ":android-non-updatable-incompatibilities.api.public.latest",
        },
        api_lint: {
            enabled: true,
            new_since: ":android.api.public.latest",
        },
    },
    dists: [
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/public/api",
            dest: "android-non-updatable.txt",
            tag: ".api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/public/api",
            dest: "android-non-updatable-removed.txt",
            tag: ".removed-api.txt",
        },
    ],
}

priv_apps = " --show-annotation android.annotation.SystemApi\\(" +
    "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
    "\\)"

priv_apps_in_stubs = " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" +
    "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
    "\\)"

test = " --show-annotation android.annotation.TestApi"

module_libs = " --show-annotation android.annotation.SystemApi\\(" +
    "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" +
    "\\)"

droidstubs {
    name: "system-api-stubs-docs-non-updatable",
    defaults: ["metalava-non-updatable-api-stubs-default"],
    args: metalava_framework_docs_args + priv_apps,
    check_api: {
        current: {
            api_file: "core/api/system-current.txt",
            removed_api_file: "core/api/system-removed.txt",
        },
        last_released: {
            api_file: ":android-non-updatable.api.system.latest",
            removed_api_file: ":android-non-updatable-removed.api.system.latest",
            baseline_file: ":android-non-updatable-incompatibilities.api.system.latest",
        },
        api_lint: {
            enabled: true,
            new_since: ":android.api.system.latest",
            baseline_file: "core/api/system-lint-baseline.txt",
        },
    },
    dists: [
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/system/api",
            dest: "android-non-updatable.txt",
            tag: ".api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/system/api",
            dest: "android-non-updatable-removed.txt",
            tag: ".removed-api.txt",
        },
    ],
}

droidstubs {
    name: "test-api-stubs-docs-non-updatable",
    defaults: ["metalava-non-updatable-api-stubs-default"],
    args: metalava_framework_docs_args + test + priv_apps_in_stubs,
    check_api: {
        current: {
            api_file: "core/api/test-current.txt",
            removed_api_file: "core/api/test-removed.txt",
        },
        api_lint: {
            enabled: true,
            baseline_file: "core/api/test-lint-baseline.txt",
        },
    },
    dists: [
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/test/api",
            dest: "android.txt",
            tag: ".api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/test/api",
            dest: "removed.txt",
            tag: ".removed-api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/test/api",
            dest: "android-non-updatable.txt",
            tag: ".api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/test/api",
            dest: "android-non-updatable-removed.txt",
            tag: ".removed-api.txt",
        },
    ],
}

droidstubs {
    name: "module-lib-api-stubs-docs-non-updatable",
    defaults: ["metalava-non-updatable-api-stubs-default"],
    args: metalava_framework_docs_args + priv_apps_in_stubs + module_libs,
    check_api: {
        current: {
            api_file: "core/api/module-lib-current.txt",
            removed_api_file: "core/api/module-lib-removed.txt",
        },
        last_released: {
            api_file: ":android-non-updatable.api.module-lib.latest",
            removed_api_file: ":android-non-updatable-removed.api.module-lib.latest",
        },
        api_lint: {
            enabled: true,
            new_since: ":android.api.module-lib.latest",
            baseline_file: "core/api/module-lib-lint-baseline.txt",
        },
    },
    dists: [
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/module-lib/api",
            dest: "android-non-updatable.txt",
            tag: ".api.txt",
        },
        {
            targets: [
                "sdk",
                "win_sdk",
            ],
            dir: "apistubs/android/module-lib/api",
            dest: "android-non-updatable-removed.txt",
            tag: ".removed-api.txt",
        },
    ],
}

/////////////////////////////////////////////////////////////////////
// android_*_stubs_current modules are the stubs libraries compiled
// from stub sources
/////////////////////////////////////////////////////////////////////

modules_public_stubs = [
    "android.net.ipsec.ike.stubs",
    "art.module.public.api.stubs",
    "conscrypt.module.public.api.stubs",
    "framework-appsearch.stubs",
    "framework-connectivity.stubs",
    "framework-graphics.stubs",
    "framework-media.stubs",
    "framework-mediaprovider.stubs",
    "framework-nearby.stubs",
    "framework-permission.stubs",
    "framework-permission-s.stubs",
    "framework-scheduling.stubs",
    "framework-sdkextensions.stubs",
    "framework-statsd.stubs",
    "framework-tethering.stubs",
    "framework-uwb.stubs",
    "framework-wifi.stubs",
    "i18n.module.public.api.stubs",
]

modules_system_stubs = [
    "android.net.ipsec.ike.stubs.system",
    "art.module.public.api.stubs.system",
    "conscrypt.module.public.api.stubs", // Only has public stubs
    "framework-appsearch.stubs.system",
    "framework-connectivity.stubs.system",
    "framework-graphics.stubs.system",
    "framework-media.stubs.system",
    "framework-mediaprovider.stubs.system",
    "framework-nearby.stubs.system",
    "framework-permission.stubs.system",
    "framework-permission-s.stubs.system",
    "framework-scheduling.stubs.system",
    "framework-sdkextensions.stubs.system",
    "framework-statsd.stubs.system",
    "framework-tethering.stubs.system",
    "framework-uwb.stubs.system",
    "framework-wifi.stubs.system",
    "i18n.module.public.api.stubs", // Only has public stubs
]

java_defaults {
    name: "android-non-updatable_defaults_stubs_current",
    libs: ["stub-annotations"],
    static_libs: ["framework-res-package-jar"], // Export package of framework-res
    sdk_version: "none",
    system_modules: "none",
    java_version: "1.8",
    compile_dex: true,
    dist: {
        targets: [
            "sdk",
            "win_sdk",
        ],
        tag: ".jar",
        dest: "android-non-updatable.jar",
    },
    defaults_visibility: ["//visibility:private"],
    visibility: ["//visibility:private"],
}

java_library {
    name: "android-non-updatable.stubs",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":api-stubs-docs-non-updatable"],
    libs: modules_public_stubs,
    dist: {
        dir: "apistubs/android/public",
    },
}

java_library {
    name: "android-non-updatable.stubs.system",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":system-api-stubs-docs-non-updatable"],
    libs: modules_system_stubs,
    dist: {
        dir: "apistubs/android/system",
    },
}

java_library {
    name: "android-non-updatable.stubs.module_lib",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":module-lib-api-stubs-docs-non-updatable"],
    libs: [
        "sdk_module-lib_current_framework-tethering",
        "sdk_system_current_android",
        // NOTE: The below can be removed once the prebuilt stub contains IKE.
        "sdk_system_current_android.net.ipsec.ike",
    ],
    dist: {
        dir: "apistubs/android/module-lib",
    },
}

java_library {
    name: "android-non-updatable.stubs.test",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":test-api-stubs-docs-non-updatable"],
    libs: modules_system_stubs,
    dist: {
        dir: "apistubs/android/test",
    },
}

java_defaults {
    name: "android_stubs_dists_default",
    dist: {
        targets: [
            "sdk",
            "win_sdk",
        ],
        tag: ".jar",
        dest: "android.jar",
    },
    defaults_visibility: ["//frameworks/base/services"],
}

java_library {
    name: "android_stubs_current",
    static_libs: modules_public_stubs + [
        "android-non-updatable.stubs",
        "private-stub-annotations-jar",
    ],
    defaults: ["android.jar_defaults"],
}

java_library {
    name: "android_system_stubs_current",
    static_libs: modules_system_stubs + [
        "android-non-updatable.stubs.system",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    dist: {
        dir: "apistubs/android/system",
    },
    dists: [
        {
            // Legacy dist path
            targets: [
                "sdk",
                "win_sdk",
            ],
            tag: ".jar",
            dest: "android_system.jar",
        },
    ],
}

java_library {
    name: "android_test_stubs_current",
    // Modules do not have test APIs, but we want to include their SystemApis, like we include
    // the SystemApi of framework-non-updatable-sources.
    static_libs: modules_system_stubs + [
        "android-non-updatable.stubs.test",
        "private-stub-annotations-jar",
    ],
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    dist: {
        dir: "apistubs/android/test",
    },
}

java_library {
    name: "android_module_lib_stubs_current",
    defaults: [
        "android.jar_defaults",
        "android_stubs_dists_default",
    ],
    static_libs: [
        "android-non-updatable.stubs.module_lib",
        "art.module.public.api.stubs.module_lib",
    ],
    dist: {
        dir: "apistubs/android/module-lib",
    },
}

java_library {
    name: "android_system_server_stubs_current",
    defaults: ["android_stubs_dists_default"],
    srcs: [":services-non-updatable-stubs"],
    installable: false,
    static_libs: [
        "android_module_lib_stubs_current",
    ],
    sdk_version: "none",
    system_modules: "none",
    java_version: "1.8",
    dist: {
        dir: "apistubs/android/system-server",
    },
}

/////////////////////////////////////////////////////////////////////
// hwbinder.stubs provides APIs required for building HIDL Java
// libraries.
/////////////////////////////////////////////////////////////////////

droidstubs {
    name: "hwbinder-stubs-docs",
    srcs: [
        "core/java/android/os/HidlSupport.java",
        "core/java/android/os/HidlMemory.java",
        "core/java/android/os/HwBinder.java",
        "core/java/android/os/HwBlob.java",
        "core/java/android/os/HwParcel.java",
        "core/java/android/os/IHwBinder.java",
        "core/java/android/os/IHwInterface.java",
        "core/java/android/os/DeadObjectException.java",
        "core/java/android/os/DeadSystemException.java",
        "core/java/android/os/NativeHandle.java",
        "core/java/android/os/RemoteException.java",
        "core/java/android/util/AndroidException.java",
    ],
    libs: ["framework-annotations-lib"],
    installable: false,
    sdk_version: "core_platform",
    annotations_enabled: true,
    previous_api: ":android.api.public.latest",
    merge_annotations_dirs: [
        "metalava-manual",
    ],
    args: priv_apps,
    visibility: ["//visibility:private"],
}

java_library {
    name: "hwbinder.stubs",
    sdk_version: "core_current",
    libs: ["framework-annotations-lib"],
    srcs: [
        ":hwbinder-stubs-docs",
    ],
    visibility: ["//visibility:public"],
}
