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

package {
    default_visibility: ["//visibility:private"],
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "frameworks_base_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    //   SPDX-license-identifier-MIT
    //   SPDX-license-identifier-Unicode-DFS
    default_applicable_licenses: ["frameworks_base_license"],
}

bootstrap_go_package {
    name: "soong-api",
    pkgPath: "android/soong/api",
    deps: [
        "blueprint",
        "soong",
        "soong-android",
        "soong-genrule",
        "soong-java",
    ],
    srcs: ["api.go"],
    pluginFor: ["soong_build"],
}

python_binary_host {
    name: "merge_annotation_zips",
    srcs: ["merge_annotation_zips.py"],
}

python_test_host {
    name: "merge_annotation_zips_test",
    main: "merge_annotation_zips_test.py",
    srcs: [
        "merge_annotation_zips.py",
        "merge_annotation_zips_test.py",
    ],
    test_options: {
        unit_test: true,
    },
}

metalava_cmd = "$(location metalava)"
// Silence reflection warnings. See b/168689341
metalava_cmd += " -J--add-opens=java.base/java.util=ALL-UNNAMED "
metalava_cmd += " --quiet "

soong_config_module_type {
    name: "enable_crashrecovery_module",
    module_type: "combined_apis_defaults",
    config_namespace: "ANDROID",
    bool_variables: ["release_crashrecovery_module"],
    properties: [
        "bootclasspath",
        "system_server_classpath",
    ],
}

soong_config_bool_variable {
    name: "release_crashrecovery_module",
}

enable_crashrecovery_module {
    name: "crashrecovery_module_defaults",
    soong_config_variables: {
        release_crashrecovery_module: {
            bootclasspath: [
                "framework-crashrecovery",
            ],
            system_server_classpath: [
                "service-crashrecovery",
            ],
        },
    },
}

combined_apis {
    name: "frameworks-base-api",
    defaults: [
        "crashrecovery_module_defaults",
    ],
    bootclasspath: [
        "android.net.ipsec.ike",
        "art.module.public.api",
        "conscrypt.module.public.api",
        "framework-adservices",
        "framework-appsearch",
        "framework-bluetooth",
        "framework-configinfrastructure",
        "framework-connectivity",
        "framework-connectivity-t",
        "framework-devicelock",
        "framework-graphics",
        "framework-healthfitness",
        "framework-location",
        "framework-media",
        "framework-mediaprovider",
        "framework-nfc",
        "framework-ondevicepersonalization",
        "framework-pdf",
        "framework-pdf-v",
        "framework-permission",
        "framework-permission-s",
        "framework-scheduling",
        "framework-sdkextensions",
        "framework-statsd",
        "framework-sdksandbox",
        "framework-tethering",
        "framework-uwb",
        "framework-virtualization",
        "framework-wifi",
        "i18n.module.public.api",
    ],
    system_server_classpath: [
        "service-art",
        "service-configinfrastructure",
        "service-healthfitness",
        "service-media-s",
        "service-permission",
        "service-rkp",
        "service-sdksandbox",
    ],
}

genrule {
    name: "frameworks-base-api-current-compat",
    srcs: [
        ":android.api.public.latest",
        ":android-incompatibilities.api.public.latest",
        ":frameworks-base-api-current.txt",
    ],
    out: ["updated-baseline.txt"],
    tools: ["metalava"],
    cmd: metalava_cmd +
        "--check-compatibility:api:released $(location :android.api.public.latest) " +
        "--baseline:compatibility:released $(location :android-incompatibilities.api.public.latest) " +
        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
        "$(location :frameworks-base-api-current.txt)",
}

genrule {
    name: "frameworks-base-api-system-current-compat",
    srcs: [
        ":android.api.system.latest",
        ":android-incompatibilities.api.system.latest",
        ":frameworks-base-api-current.txt",
        ":frameworks-base-api-system-current.txt",
    ],
    out: ["updated-baseline.txt"],
    tools: ["metalava"],
    cmd: metalava_cmd +
        "--check-compatibility:api:released $(location :android.api.system.latest) " +
        "--check-compatibility:base $(location :frameworks-base-api-current.txt) " +
        "--baseline:compatibility:released $(location :android-incompatibilities.api.system.latest) " +
        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
        "$(location :frameworks-base-api-system-current.txt)",
}

genrule {
    name: "frameworks-base-api-module-lib-current-compat",
    srcs: [
        ":android.api.module-lib.latest",
        ":android-incompatibilities.api.module-lib.latest",
        ":frameworks-base-api-current.txt",
        ":frameworks-base-api-module-lib-current.txt",
    ],
    out: ["updated-baseline.txt"],
    tools: ["metalava"],
    cmd: metalava_cmd +
        "--check-compatibility:api:released $(location :android.api.module-lib.latest) " +
        // Note: having "public" be the base of module-lib is not perfect -- it should
        // ideally be a merged public+system (which metalava is not currently able to generate).
        // This "base" will help when migrating from MODULE_LIBS -> public, but not when
        // migrating from MODULE_LIBS -> system (where it needs to instead be listed as
        // an incompatibility).
        "--check-compatibility:base $(location :frameworks-base-api-current.txt) " +
        "--baseline:compatibility:released $(location :android-incompatibilities.api.module-lib.latest) " +
        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
        "$(location :frameworks-base-api-module-lib-current.txt)",
}

genrule {
    name: "frameworks-base-api-current.srcjar",
    tools: ["merge_zips"],
    out: ["current.srcjar"],
    cmd: "$(location merge_zips) $(out) $(in)",
    srcs: [
        ":api-stubs-docs-non-updatable{.exportable}",
        ":all-modules-public-stubs-source",
    ],
    visibility: ["//visibility:private"], // Used by make module in //development, mind
}

// This produces the same annotations.zip as framework-doc-stubs, but by using
// outputs from individual modules instead of all the source code.
genrule_defaults {
    name: "sdk-annotations-defaults",
    out: ["annotations.zip"],
    tools: [
        "merge_annotation_zips",
        "soong_zip",
    ],
    cmd: "$(location merge_annotation_zips) $(genDir)/out $(in) && " +
        "$(location soong_zip) -o $(out) -C $(genDir)/out -D $(genDir)/out",
}

genrule {
    name: "sdk-annotations.zip",
    defaults: ["sdk-annotations-defaults"],
    srcs: [
        ":android-non-updatable-doc-stubs{.exportable.annotations.zip}",
        ":all-modules-public-annotations",
    ],
}

genrule {
    name: "sdk-annotations-system.zip",
    defaults: ["sdk-annotations-defaults"],
    srcs: [
        ":android-non-updatable-doc-stubs-system{.exportable.annotations.zip}",
        ":all-modules-system-annotations",
    ],
}

genrule {
    name: "sdk-annotations-module-lib.zip",
    defaults: ["sdk-annotations-defaults"],
    srcs: [
        ":android-non-updatable-doc-stubs-module-lib{.exportable.annotations.zip}",
        ":all-modules-module-lib-annotations",
    ],
}

genrule {
    name: "sdk-annotations-system-server.zip",
    defaults: ["sdk-annotations-defaults"],
    srcs: [
        ":android-non-updatable-doc-stubs-system-server{.exportable.annotations.zip}",
        ":all-modules-system-server-annotations",
    ],
}

genrule {
    name: "combined-removed-dex",
    visibility: [
        "//frameworks/base/boot",
    ],
    srcs: [
        ":frameworks-base-api-removed.txt",
        ":frameworks-base-api-system-removed.txt",
        ":android.car-stubs-docs{.removed-api.txt}",
        ":android.car-system-stubs-docs{.removed-api.txt}",
    ],
    tool_files: ["gen_combined_removed_dex.sh"],
    tools: ["metalava"],
    out: ["combined-removed-dex.txt"],
    cmd: "$(location gen_combined_removed_dex.sh) $(location metalava) $(genDir) $(in) > $(out)",
}

java_genrule {
    name: "api_fingerprint",
    srcs: [
        ":frameworks-base-api-current.txt",
        ":frameworks-base-api-system-current.txt",
        ":frameworks-base-api-module-lib-current.txt",
        ":frameworks-base-api-system-server-current.txt",
    ],
    out: ["api_fingerprint.txt"],
    cmd: "cat $(in) | md5sum | cut -d' ' -f1 > $(out)",
}

packages_to_document = [
    "android",
    "dalvik",
    "java",
    "javax",
    "junit",
    "org.apache.http",
    "org.json",
    "org.w3c.dom",
    "org.xml.sax",
    "org.xmlpull",
]

// Defaults for all stubs that include the non-updatable framework. These defaults do not include
// module symbols, so will not compile correctly on their own. Users must add module APIs to the
// classpath (or sources) somehow.
stubs_defaults {
    name: "android-non-updatable-stubs-defaults",
    aconfig_declarations: ["framework-minus-apex-aconfig-declarations"],
    srcs: [":android-non-updatable-stub-sources"],
    sdk_version: "none",
    system_modules: "none",
    java_version: "1.8",
    arg_files: [":frameworks-base-core-AndroidManifest.xml"],
    aidl: {
        include_dirs: [
            "frameworks/av/aidl",
            "frameworks/base/media/aidl",
            "frameworks/base/telephony/java",
            "frameworks/native/libs/permission/aidl",
            "packages/modules/Bluetooth/framework/aidl-export",
            "packages/modules/Connectivity/framework/aidl-export",
            "packages/modules/Media/apex/aidl/stable",
            "hardware/interfaces/biometrics/common/aidl",
            "hardware/interfaces/biometrics/fingerprint/aidl",
            "hardware/interfaces/graphics/common/aidl",
            "hardware/interfaces/keymaster/aidl",
            "system/hardware/interfaces/media/aidl",
        ],
    },
    // These are libs from framework-internal-utils that are required (i.e. being referenced)
    // from framework-non-updatable-sources. Add more here when there's a need.
    // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
    // dependencies gets bigger.
    libs: [
        "android.hardware.cas-V1.2-java",
        "android.hardware.health-V1.0-java-constants",
        "android.hardware.thermal-V1.0-java-constants",
        "android.hardware.thermal-V2.0-java",
        "android.hardware.tv.input-V1.0-java-constants",
        "android.hardware.usb-V1.0-java-constants",
        "android.hardware.usb-V1.1-java-constants",
        "android.hardware.usb.gadget-V1.0-java",
        "android.hardware.vibrator-V1.3-java",
        "framework-protos",
    ],
    flags: [
        "--error NoSettingsProvider",
        "--error UnhiddenSystemApi",
        "--error UnflaggedApi",
        "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.*",
        // Disable CallbackInterface, as Java 8 default interface methods avoid the extensibility
        // issue interfaces had previously.
        "--hide CallbackInterface",
        // Disable HiddenSuperclass, as Metalava handles this fine (it should be hidden by default)
        "--hide HiddenSuperclass",
        "--hide-package android.audio.policy.configuration.V7_0",
        "--hide-package com.android.server",
        "--manifest $(location :frameworks-base-core-AndroidManifest.xml)",
    ],
    filter_packages: packages_to_document,
    high_mem: true, // Lots of sources => high memory use, see b/170701554
    installable: false,
    annotations_enabled: true,
    previous_api: ":android.api.public.latest",
    merge_annotations_dirs: ["metalava-manual"],
    defaults_visibility: ["//frameworks/base/api"],
    visibility: [
        "//frameworks/base/api",
        "//frameworks/base/core/api",
    ],
}

// We resolve dependencies on APIs in modules by depending on a prebuilt of the whole
// platform (sdk_system_current_android). That prebuilt does not include module-lib APIs,
// so use the prebuilt module-lib stubs for modules that export module-lib stubs that the
// non-updatable part depends on.
non_updatable_api_deps_on_modules = [
    "sdk_module-lib_current_framework-tethering",
    "sdk_module-lib_current_framework-connectivity-t",
    "sdk_system_current_android",
]

// Defaults with module APIs in the classpath (mostly from prebuilts).
// Suitable for compiling android-non-updatable.
stubs_defaults {
    name: "module-classpath-stubs-defaults",
    aidl: {
        include_dirs: [
            "packages/modules/Bluetooth/framework/aidl-export",
            "packages/modules/Connectivity/framework/aidl-export",
            "packages/modules/Media/apex/aidl/stable",
        ],
    },
    libs: non_updatable_api_deps_on_modules,
}

// Defaults for the java_sdk_libraries of unbundled jars from framework.
// java_sdk_libraries using these defaults should also add themselves to the
// non_updatable_modules list in frameworks/base/api/api.go
java_defaults {
    name: "framework-non-updatable-unbundled-defaults",
    defaults: [
        "framework-non-updatable-lint-defaults",
        "non-updatable-framework-module-defaults",
    ],
    public: {
        libs: ["android_module_lib_stubs_current"],
    },
    system: {
        libs: ["android_module_lib_stubs_current"],
    },
    module_lib: {
        libs: ["android_module_lib_stubs_current"],
    },
    test: {
        libs: ["android_test_frameworks_core_stubs_current"],
    },
    sdk_version: "core_platform",
    stub_only_libs: ["framework-protos"],
    impl_only_libs: ["framework-minus-apex-headers"], // the framework, including hidden API
    impl_library_visibility: ["//frameworks/base"],
    defaults_visibility: [
        "//frameworks/base/location",
        "//frameworks/base/nfc",
    ],
    plugins: ["error_prone_android_framework"],
    errorprone: {
        javacflags: [
            "-Xep:AndroidFrameworkCompatChange:ERROR",
            "-Xep:AndroidFrameworkUid:ERROR",
        ],
    },
    // Include manual annotations in API txt files
    merge_annotations_dirs: ["metalava-manual"],
}

build = [
    "ApiDocs.bp",
    "StubLibraries.bp",
]

genrule_defaults {
    name: "flag-api-mapping-generation-defaults",
    cmd: "$(location extract-flagged-apis) $(in) $(out)",
    tools: ["extract-flagged-apis"],
}

genrule {
    name: "flag-api-mapping-PublicApi",
    defaults: ["flag-api-mapping-generation-defaults"],
    srcs: [":frameworks-base-api-current.txt"],
    out: ["flag_api_map.textproto"],
    dist: {
        targets: ["droid"],
    },
}

genrule {
    name: "flag-api-mapping-SystemApi",
    defaults: ["flag-api-mapping-generation-defaults"],
    srcs: [":frameworks-base-api-system-current.txt"],
    out: ["system_flag_api_map.textproto"],
    dist: {
        targets: ["droid"],
    },
}

genrule {
    name: "flag-api-mapping-ModuleLibApi",
    defaults: ["flag-api-mapping-generation-defaults"],
    srcs: [":frameworks-base-api-module-lib-current.txt"],
    out: ["module_lib_flag_api_map.textproto"],
    dist: {
        targets: ["droid"],
    },
}

genrule {
    name: "flag-api-mapping-SystemServerApi",
    defaults: ["flag-api-mapping-generation-defaults"],
    srcs: [":frameworks-base-api-system-server-current.txt"],
    out: ["system_server_flag_api_map.textproto"],
    dist: {
        targets: ["droid"],
    },
}

phony_rule {
    name: "checkapi",
    phony_deps: [
        "frameworks-base-api-current-compat",
        "frameworks-base-api-system-current-compat",
        "frameworks-base-api-module-lib-current-compat",
    ],
}
