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

// This file contains java_system_modules provided by the SDK.
// These system modules transitively depend on core stub libraries generated from .txt files.

// Same as core-public-stubs-system-modules, but the stubs are generated from .txt files
java_system_modules {
    name: "core-public-stubs-system-modules.from-text",
    visibility: ["//visibility:public"],
    libs: [
        "core-current-stubs-for-system-modules-no-annotations.from-text",
    ],
}

java_library {
    name: "core-current-stubs-for-system-modules-no-annotations.from-text",
    visibility: ["//visibility:private"],
    defaults: [
        "system-modules-no-annotations",
    ],
    static_libs: [
        "core.current.stubs.from-text",
        "core-lambda-stubs.from-text",
    ],
}

// Same as core-module-lib-stubs-system-modules, but the stubs are generated from .txt files
java_system_modules {
    name: "core-module-lib-stubs-system-modules.from-text",
    visibility: ["//visibility:public"],
    libs: [
        "core-module-lib-stubs-for-system-modules-no-annotations.from-text",
    ],
}

java_library {
    name: "core-module-lib-stubs-for-system-modules-no-annotations.from-text",
    visibility: ["//visibility:private"],
    defaults: [
        "system-modules-no-annotations",
    ],
    static_libs: [
        "core.module_lib.stubs.from-text",
        "core-lambda-stubs.from-text",
    ],
}

java_library {
    name: "core.module_lib.stubs.from-text",
    static_libs: [
        "art.module.public.api.stubs.module_lib.from-text",

        // Replace the following with the module-lib correspondence when Conscrypt or i18N module
        // provides @SystemApi(MODULE_LIBRARIES). Currently, assume that only ART module provides
        // @SystemApi(MODULE_LIBRARIES).
        "conscrypt.module.public.api.stubs.from-text",
        "i18n.module.public.api.stubs.from-text",
    ],
    sdk_version: "none",
    system_modules: "none",
    visibility: ["//visibility:private"],
}

// Same as legacy-core-platform-api-stubs-system-modules, but the stubs are generated from .txt files
java_system_modules {
    name: "legacy-core-platform-api-stubs-system-modules.from-text",
    visibility: core_platform_visibility,
    libs: [
        "legacy.core.platform.api.no.annotations.stubs.from-text",
        "core-lambda-stubs.from-text",
    ],
}

java_library {
    name: "legacy.core.platform.api.no.annotations.stubs.from-text",
    visibility: core_platform_visibility,
    defaults: [
        "system-modules-no-annotations",
    ],
    hostdex: true,
    compile_dex: true,

    static_libs: [
        "legacy.core.platform.api.stubs.from-text",
    ],
    patch_module: "java.base",
}

// Same as stable-core-platform-api-stubs-system-modules, but the stubs are generated from .txt files
java_system_modules {
    name: "stable-core-platform-api-stubs-system-modules.from-text",
    visibility: core_platform_visibility,
    libs: [
        "stable.core.platform.api.no.annotations.stubs.from-text",
        "core-lambda-stubs.from-text",
    ],
}

java_library {
    name: "stable.core.platform.api.no.annotations.stubs.from-text",
    visibility: core_platform_visibility,
    defaults: [
        "system-modules-no-annotations",
    ],
    hostdex: true,
    compile_dex: true,

    static_libs: [
        "stable.core.platform.api.stubs.from-text",
    ],
    patch_module: "java.base",
}

java_api_library {
    name: "core-lambda-stubs.from-text",
    api_surface: "toolchain",
    api_contributions: [
        "art.module.toolchain.api.api.contribution",
    ],
    libs: [
        // LambdaMetaFactory depends on CallSite etc. which is part of the Core API surface
        "core.current.stubs.from-text",
    ],
}
