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"],
}

filegroup {
    name: "services.core-sources-am-wm",
    srcs: [
        "java/com/android/server/am/**/*.java",
        "java/com/android/server/wm/**/*.java",
    ],
    path: "java",
    visibility: ["//frameworks/base/services"],
}

filegroup {
    name: "services.core-sources",
    srcs: ["java/**/*.java"],
    exclude_srcs: [
        ":services.core-sources-am-wm",
    ],
    path: "java",
    visibility: [
        "//frameworks/base/services",
        "//frameworks/base/core/java/com/android/internal/protolog",
    ],
}

filegroup {
    name: "services.core-aidl-sources",
    srcs: [
        ":dumpstate_aidl",
        ":framework_native_aidl",
        ":gsiservice_aidl",
        ":installd_aidl",
        ":mmd_aidl",
        ":storaged_aidl",
        ":vold_aidl",
    ],
}

filegroup {
    name: "LocationFudger-sources",
    srcs: ["java/com/android/server/location/fudger/LocationFudger.java"],
    path: "java",
    visibility: [
        "//packages/apps/GmsCompat",
    ],
}

java_library_static {
    name: "services-config-update",
    srcs: [
        "java/**/ConfigUpdateInstallReceiver.java",
        "java/**/*.logtags",
    ],
}

java_genrule {
    name: "services.core.protologsrc",
    srcs: [
        ":protolog-impl",
        ":protolog-groups",
        ":services.core-sources-am-wm",
    ],
    tools: ["protologtool"],
    cmd: "$(location protologtool) transform-protolog-calls " +
        "--protolog-class com.android.internal.protolog.ProtoLog " +
        "--loggroups-class com.android.internal.protolog.WmProtoLogGroups " +
        "--loggroups-jar $(location :protolog-groups) " +
        "--viewer-config-file-path /etc/core.protolog.pb " +
        "--output-srcjar $(out) " +
        "$(locations :services.core-sources-am-wm)",
    out: ["services.core.protolog.srcjar"],
}

java_genrule {
    name: "gen-core.protolog.pb",
    srcs: [
        ":protolog-groups",
        ":services.core-sources-am-wm",
    ],
    tools: ["protologtool"],
    cmd: "$(location protologtool) generate-viewer-config " +
        "--protolog-class com.android.internal.protolog.ProtoLog " +
        "--loggroups-class com.android.internal.protolog.WmProtoLogGroups " +
        "--loggroups-jar $(location :protolog-groups) " +
        "--viewer-config $(out) " +
        "$(locations :services.core-sources-am-wm)",
    out: ["core.protolog.pb"],
}

genrule {
    name: "statslog-art-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module art" +
        " --javaPackage com.android.internal.art --javaClass ArtStatsLog --worksource",
    out: ["com/android/internal/art/ArtStatsLog.java"],
}

genrule {
    name: "statslog-contexthub-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module contexthub" +
        " --javaPackage com.android.server.location.contexthub --javaClass ContextHubStatsLog",
    out: ["com/android/server/location/contexthub/ContextHubStatsLog.java"],
}

genrule {
    name: "statslog-mediarouter-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module mediarouter --javaPackage com.android.server.media --javaClass MediaRouterStatsLog",
    out: ["com/android/server/media/MediaRouterStatsLog.java"],
}

java_library_static {
    name: "services.core.unboosted",
    defaults: [
        "platform_service_defaults",
        "android.hardware.power-java_shared",
        "latest_android_hardware_broadcastradio_java_static",
        "services_crashrecovery_stubs_conditionally",
        "ondeviceintelligence_conditionally",
    ],
    srcs: [
        ":android.hardware.audio.effect-V1-java-source",
        ":android.hardware.tv.hdmi.connection-V1-java-source",
        ":android.hardware.tv.hdmi.earc-V1-java-source",
        ":android.hardware.tv.mediaquality-V1-java-source",
        ":statslog-art-java-gen",
        ":statslog-contexthub-java-gen",
        ":statslog-mediarouter-java-gen",
        ":services.core-aidl-sources",
        ":services.core-sources",
        ":services.core.protologsrc",
        ":platform-compat-config",
        ":platform-compat-overrides",
        ":display-device-config",
        ":display-layout-config",
        ":display-topology",
        ":device-state-config",
        "java/com/android/server/EventLogTags.logtags",
        "java/com/android/server/am/EventLogTags.logtags",
        "java/com/android/server/wm/EventLogTags.logtags",
        "java/com/android/server/policy/EventLogTags.logtags",

        // Java/AIDL sources to be moved out to CrashRecovery module
        ":services-crashrecovery-sources",

        // Telecom sources to move out to Telecom module
        ":service-telecom-sources",

        // Indicate whether VCN is in platform or mainline
        ":vcn-location-sources",
    ],

    libs: [
        "android.frameworks.location.altitude-V2-java",
        "android.hardware.common-V2-java",
        "android.hardware.gnss-V2-java",
        "android.hardware.light-V2.0-java",
        "android.hardware.vibrator-V3-java",
        "androidx.annotation_annotation",
        "app-compat-annotations",
        "device_policy_aconfig_flags_lib",
        "error_prone_annotations",
        "framework-tethering.stubs.module_lib",
        "keepanno-annotations",
        "monet",
        "power_hint_flags_lib",
        "service-art.stubs.system_server",
        "service-permission.stubs.system_server",
        "service-rkp.stubs.system_server",
        "service-sdksandbox.stubs.system_server",
        "services.net",
    ],
    plugins: ["ImmutabilityAnnotationProcessor"],

    required: [
        "default_television.xml",
        "gps_debug.conf",
        "core.protolog.pb",
    ],

    static_libs: [
        "android.frameworks.vibrator-V1-java", // AIDL
        "android.frameworks.devicestate-V1-java", // AIDL
        "android.hardware.authsecret-V1.0-java",
        "android.hardware.authsecret-V1-java",
        "android.hardware.boot-V1.0-java", // HIDL
        "android.hardware.boot-V1.1-java", // HIDL
        "android.hardware.boot-V1.2-java", // HIDL
        "android.hardware.boot-V1-java", // AIDL
        "android.hardware.broadcastradio-V2.0-java", // HIDL
        "android.hardware.health-V1.0-java", // HIDL
        "android.hardware.health-V2.0-java", // HIDL
        "android.hardware.health-V2.1-java", // HIDL
        "android.hardware.health-V4-java", // AIDL
        "android.hardware.health-translate-java",
        "android.hardware.light-V1-java",
        "android.hardware.security.authgraph-V1-java",
        "android.hardware.security.rkp-V3-java",
        "android.hardware.security.secretkeeper-V1-java",
        "android.hardware.tv.cec-V1.1-java",
        "android.hardware.tv.hdmi.cec-V1-java",
        "android.hardware.tv.hdmi.connection-V1-java",
        "android.hardware.tv.hdmi.earc-V1-java",
        "android.hardware.weaver-V1.0-java",
        "android.hardware.weaver-V2-java",
        "android.hardware.biometrics.face-V1.0-java",
        "android.hardware.biometrics.fingerprint-V2.3-java",
        "android.hardware.oemlock-V1.0-java",
        "android.hardware.oemlock-V1-java",
        "android.hardware.configstore-V1.1-java",
        "android.hardware.ir-V1-java",
        "android.hardware.rebootescrow-V1-java",
        "android.hardware.power.stats-V2-java",
        "android.hidl.manager-V1.2-java",
        "cbor-java",
        "com.android.media.audio-aconfig-java",
        "icu4j_calendar_astronomer",
        "android.security.aaid_aidl-java",
        "netd-client",
        "overlayable_policy_aidl-java",
        "SettingsLibDeviceStateRotationLock",
        "SurfaceFlingerProperties",
        "com.android.sysprop.watchdog",
        "securebox",
        "apache-commons-math",
        "apache-commons-compress",
        "adb_flags_lib",
        "battery_saver_flag_lib",
        "notification_flags_lib",
        "power_hint_flags_lib",
        "thermal_flags_lib",
        "biometrics_flags_lib",
        "aconfig_settings_flags_lib",
        "am_flags_lib",
        "com_android_server_accessibility_flags_lib",
        "//frameworks/libs/systemui:com_android_systemui_shared_flags_lib",
        "com_android_launcher3_flags_lib",
        "com_android_wm_shell_flags_lib",
        "com.android.server.utils_aconfig-java",
        "service-jobscheduler-deviceidle.flags-aconfig-java",
        "policy_flags_lib",
        "net_flags_lib",
        "stats_flags_lib",
        "core_os_flags_lib",
        "connectivity_flags_lib",
        "device_config_service_flags_java",
        "aconfig_new_storage_flags_lib",
        "MmdProperties",
        "mmd_flags_lib",
        "profiling_flags_lib",
        "android.adpf.sessionmanager_aidl-java",
        "uprobestats_flags_java_lib",
        "clipboard_flags_lib",
        "aconfig_adbdauth_flags_java_lib",
        "AvfBuildFlags",
    ],
    javac_shard_size: 50,
    javacflags: [
        "-J--add-modules=jdk.compiler",
        "-J--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED",
        "-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED",
        "-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED",
        "-J--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED",
    ],
    lint: {
        baseline_filename: "lint-baseline.xml",
        warning_checks: [
            "FlaggedApi",
        ],
    },
    jarjar_rules: ":services-jarjar-rules",
    apex_available: ["//apex_available:platform"],
}

filegroup {
    name: "services-jarjar-rules",
    srcs: ["services-jarjar-rules.txt"],
}

java_genrule {
    name: "services.core.priorityboosted",
    srcs: [":services.core.unboosted"],
    tools: ["lockedregioncodeinjection"],
    cmd: "$(location lockedregioncodeinjection) " +
        "  --targets \"Lcom/android/server/am/ActivityManagerService;,Lcom/android/server/am/ActivityManagerGlobalLock;,Lcom/android/server/wm/WindowManagerGlobalLock;,Lcom/android/server/pm/PackageManagerTracedLock;\" " +
        "  --pre \"com/android/server/am/ActivityManagerService.boostPriorityForLockedSection,com/android/server/am/ActivityManagerService.boostPriorityForProcLockedSection,com/android/server/wm/WindowManagerService.boostPriorityForLockedSection,com/android/server/pm/PackageManagerService.boostPriorityForPackageManagerTracedLockedSection\" " +
        "  --post \"com/android/server/am/ActivityManagerService.resetPriorityAfterLockedSection,com/android/server/am/ActivityManagerService.resetPriorityAfterProcLockedSection,com/android/server/wm/WindowManagerService.resetPriorityAfterLockedSection,com/android/server/pm/PackageManagerService.resetPriorityAfterPackageManagerTracedLockedSection\" " +
        "  -o $(out) " +
        "  -i $(in)",
    out: ["services.core.priorityboosted.jar"],
}

java_genrule_combiner {
    name: "services.core.combined",
    static_libs: ["services.core.priorityboosted"],
    headers: ["services.core.unboosted"],
}

java_library {
    name: "services.core",
    static_libs: [
        "services.core.combined",
        "monet",
    ],
}

java_library_host {
    name: "core_cts_test_resources",
    srcs: ["java/com/android/server/notification/SmallHash.java"],
}

prebuilt_etc {
    name: "gps_debug.conf",
    src: "java/com/android/server/location/gnss/gps_debug.conf",
}

prebuilt_etc {
    name: "core.protolog.pb",
    src: ":gen-core.protolog.pb",
}
