package {
    // 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
    default_applicable_licenses: ["frameworks_base_license"],
}

// Defaults for platform code that runs inside system_server
java_defaults {
    name: "platform_service_defaults",
    plugins: ["error_prone_android_framework"],
    errorprone: {
        javacflags: [
            // "-Xep:AndroidFrameworkBinderIdentity:ERROR",
            "-Xep:AndroidFrameworkCompatChange:ERROR",
            // "-Xep:AndroidFrameworkUid:ERROR",
            // NOTE: only enable to generate local patchfiles
            // "-XepPatchChecks:refaster:frameworks/base/errorprone/refaster/EfficientXml.java.refaster",
            // "-XepPatchLocation:/tmp/refaster/",
        ],
    },
    lint: {
        extra_check_modules: ["AndroidFrameworkLintChecker"],
    },
}

// Opt-in config for optimizing and shrinking the services target using R8.
// Enabled via `export SYSTEM_OPTIMIZE_JAVA=true`, or explicitly in Make via the
// `SOONG_CONFIG_ANDROID_SYSTEM_OPTIMIZE_JAVA` variable.
// TODO(b/196084106): Enable optimizations by default after stabilizing and
// building out retrace infrastructure.
soong_config_module_type {
    name: "system_optimized_java_defaults",
    module_type: "java_defaults",
    config_namespace: "ANDROID",
    bool_variables: ["SYSTEM_OPTIMIZE_JAVA"],
    properties: ["optimize"],
}

system_optimized_java_defaults {
    name: "services_java_defaults",
    soong_config_variables: {
        SYSTEM_OPTIMIZE_JAVA: {
            optimize: {
                enabled: true,
                optimize: true,
                shrink: true,
                proguard_flags_files: ["proguard.flags"],
            },
            // Note: Optimizations are disabled by default if unspecified in
            // the java_library rule.
            conditions_default: {},
        },
    },
}

filegroup {
    name: "services-main-sources",
    srcs: [
        "java/**/*.java",
        "java/**/package.html",
    ],
    path: "java",
    visibility: ["//visibility:private"],
}

filegroup {
    name: "services-non-updatable-sources",
    srcs: [
        ":services.core-sources",
        ":services.core-sources-am-wm",
        "core/java/com/android/server/am/package.html",
        ":services.accessibility-sources",
        ":services.appprediction-sources",
        ":services.appwidget-sources",
        ":services.autofill-sources",
        ":services.backup-sources",
        ":services.bluetooth-sources", // TODO(b/214988855) : Remove once apex/service-bluetooth jar is ready
        ":backuplib-sources",
        ":services.cloudsearch-sources",
        ":services.companion-sources",
        ":services.contentcapture-sources",
        ":services.contentsuggestions-sources",
        ":services.coverage-sources",
        ":services.devicepolicy-sources",
        ":services.midi-sources",
        ":services.musicsearch-sources",
        ":services.net-sources",
        ":services.print-sources",
        ":services.profcollect-sources",
        ":services.restrictions-sources",
        ":services.searchui-sources",
        ":services.selectiontoolbar-sources",
        ":services.smartspace-sources",
        ":services.speech-sources",
        ":services.startop.iorap-sources",
        ":services.systemcaptions-sources",
        ":services.translation-sources",
        ":services.texttospeech-sources",
        ":services.usage-sources",
        ":services.usb-sources",
        ":services.voiceinteraction-sources",
        ":services.wifi-sources",
    ],
    visibility: ["//visibility:private"],
}

java_library {
    name: "Slogf",
    srcs: ["core/java/com/android/server/utils/Slogf.java"],
}

// merge all required services into one jar
// ============================================================
java_library {
    name: "services",
    defaults: ["services_java_defaults"],
    installable: true,

    dex_preopt: {
        app_image: true,
        profile: "art-profile",
    },

    srcs: [":services-main-sources"],

    // The convention is to name each service module 'services.$(module_name)'
    static_libs: [
        "services.core",
        "services.accessibility",
        "services.appprediction",
        "services.appwidget",
        "services.autofill",
        "services.backup",
        "services.cloudsearch",
        "services.companion",
        "services.contentcapture",
        "services.contentsuggestions",
        "services.coverage",
        "services.devicepolicy",
        "services.midi",
        "services.musicsearch",
        "services.net",
        "services.people",
        "services.print",
        "services.profcollect",
        "services.restrictions",
        "services.searchui",
        "services.selectiontoolbar",
        "services.smartspace",
        "services.speech",
        "services.startop",
        "services.systemcaptions",
        "services.translation",
        "services.texttospeech",
        "services.usage",
        "services.usb",
        "services.voiceinteraction",
        "services.wifi",
        "service-blobstore",
        "service-jobscheduler",
        "android.hidl.base-V1.0-java",
    ],

    libs: [
        "android.hidl.manager-V1.0-java",
        "framework-tethering.stubs.module_lib",
        "service-art.stubs.system_server",
    ],

    // Uncomment to enable output of certain warnings (deprecated, unchecked)
    //javacflags: ["-Xlint"],
}

// native library
// =============================================================

cc_library_shared {
    name: "libandroid_servers",
    defaults: ["libservices.core-libs"],
    whole_static_libs: ["libservices.core"],
    required: [
        // TODO: remove after NetworkStatsService is moved to the mainline module.
        "libcom_android_net_module_util_jni",
    ],
}

platform_compat_config {
    name: "services-platform-compat-config",
    src: ":services",
}

filegroup {
    name: "art-profile",
    srcs: ["art-profile"],
}

// API stub
// =============================================================

stubs_defaults {
    name: "services-stubs-default",
    installable: false,
    args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.SYSTEM_SERVER\\)" +
        " --hide-annotation android.annotation.Hide" +
        " --hide InternalClasses" + // com.android.* classes are okay in this interface
        // TODO: remove the --hide options below
        " --hide-package com.google.android.startop.iorap" +
        " --hide DeprecationMismatch" +
        " --hide HiddenTypedefConstant",
    visibility: ["//frameworks/base:__subpackages__"],
    filter_packages: ["com.android."],
}

droidstubs {
    name: "services-non-updatable-stubs",
    srcs: [":services-non-updatable-sources"],
    defaults: ["services-stubs-default"],
    check_api: {
        current: {
            api_file: "api/current.txt",
            removed_api_file: "api/removed.txt",
        },
        api_lint: {
            enabled: true,
            new_since: ":android-non-updatable.api.system-server.latest",
            baseline_file: "api/lint-baseline.txt",
        },
    },
    dists: [
        {
            targets: ["sdk"],
            dir: "apistubs/android/system-server/api",
            dest: "android-non-updatable.txt",
            tag: ".api.txt",
        },
        {
            targets: ["sdk"],
            dir: "apistubs/android/system-server/api",
            dest: "android-non-updatable-removed.txt",
            tag: ".removed-api.txt",
        },
    ],
}
