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

// Generates stub source files for the intra-core API of the ART module.
// i.e. every class/member that is either in the public API or annotated with
// @IntraCoreApi.
//
// The API specification .txt files managed by this only contain the additional
// classes/members that are in the intra-core API but which are not in the public
// API.
droidstubs {
    name: "art-module-intra-core-api-stubs-source",
    srcs: [
        ":art_module_api_files",
    ],
    sdk_version: "none",
    system_modules: "none",

    installable: false,
    args: "--hide-annotation libcore.api.Hide " +
        "--show-single-annotation libcore.api.IntraCoreApi " +
        "--skip-annotation-instance-methods=false ",
    merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],

    api_filename: "api.txt",
    removed_api_filename: "removed.txt",
    previous_api: "previous.txt",
    check_api: {
        current: {
            api_file: "api/intra/current-api.txt",
            removed_api_file: "api/intra/current-removed.txt",
        },
        last_released: {
            api_file: "api/intra/last-api.txt",
            removed_api_file: "api/intra/last-removed.txt",
        },
    },
}

// A library containing the intra-core API stubs of the ART module.
//
// Intra-core APIs are only intended for the use of other core library modules.
java_library {
    name: "art.module.intra.core.api.stubs",
    visibility: [
        "//libcore/mmodules/core_platform_api",
    ],
    srcs: [
        ":art-module-intra-core-api-stubs-source",
        ":openjdk_lambda_stub_files",
        ":openjdk_generated_annotation_stub_files",
    ],

    sdk_version: "none",
    system_modules: "none",
    patch_module: "java.base",
}

// Used when compiling against art.module.intra.core.api.stubs.
java_system_modules {
    name: "art-module-intra-core-api-stubs-system-modules",
    visibility: [
        "//art/build/sdk",
        "//external/bouncycastle",
        "//external/conscrypt",
        "//external/icu/android_icu4j",
    ],
    libs: ["art.module.intra.core.api.stubs"],
}
