//
// 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.
//
java_defaults {
    name: "wifi-service-common",
    min_sdk_version: "29",
    errorprone: {
        javacflags: ["-Xep:CheckReturnValue:ERROR"],
    },
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
}

filegroup {
    name: "wifi-service-srcs",
    srcs: [
        "java/**/*.java",
        "java/**/*.logtags",
        ":framework-wifi-service-shared-srcs",
        ":net-utils-wifi-service-common-srcs",
        ":statslog-wifi-java-gen",
    ],
}

filegroup {
    name: "wifi-service-BaseWifiService",
    srcs: ["java/com/android/server/wifi/BaseWifiService.java"],
    path: "java",
}

// pre-jarjar version of wifi-service that builds against pre-jarjar version of framework-wifi
java_library {
    name: "wifi-service-pre-jarjar",
    installable: false,
    defaults: ["wifi-service-common"],
    srcs: [ ":wifi-service-srcs" ],
    // java_api_finder must accompany `srcs`
    plugins: ["java_api_finder"],

    sdk_version: "system_server_current",
    libs: [
        "error_prone_annotations",
        "jsr305",
        "framework-annotations-lib",
        // load the resources from the resources APK.
        "ServiceWifiResources",
        // need pre-jarjar symbols so that wifi-service can reference the original class names at
        // compile time
        "framework-wifi-pre-jarjar",
        "framework-statsd-stubs-module_libs_api",
        "unsupportedappusage",
    ],

    static_libs: [
        "android.hardware.wifi-V1.0-java",
        "android.hardware.wifi-V1.1-java",
        "android.hardware.wifi-V1.2-java",
        "android.hardware.wifi-V1.3-java",
        "android.hardware.wifi-V1.4-java",
        "android.hardware.wifi.hostapd-V1.0-java",
        "android.hardware.wifi.hostapd-V1.1-java",
        "android.hardware.wifi.hostapd-V1.2-java",
        "android.hardware.wifi.supplicant-V1.0-java",
        "android.hardware.wifi.supplicant-V1.1-java",
        "android.hardware.wifi.supplicant-V1.2-java",
        "android.hardware.wifi.supplicant-V1.3-java",
        "android.hidl.manager-V1.2-java",
        "androidx.annotation_annotation",
        "bouncycastle-unbundled",
        "ksoap2",
        // Note: libprotobuf-java-lite uses a few core platform APIs which
        // does show up as @hide API usage. But, this can be safely ignored
        // since the library uses reflection to ensure that the OS does provide
        // the necessary core platform APIs.
        "libprotobuf-java-lite",
        "libnanohttpd",
        "services.net-module-wifi",
        "wifi-lite-protos",
        "wifi-nano-protos"
    ],
}

// wifi-service static library
// ============================================================
java_library {
    name: "service-wifi",
    defaults: ["wifi-service-common"],
    installable: true,
    static_libs: ["wifi-service-pre-jarjar"],

    // need to include `libs` so that Soong doesn't complain about missing classes after jarjaring
    libs: [
        "framework-wifi.impl",
    ],

    sdk_version: "system_server_current",

    jarjar_rules: ":wifi-jarjar-rules",
    optimize: {
        enabled: true,
        shrink: true,
        proguard_flags_files: ["proguard.flags"],
    },
    dex_preopt: {
        enabled: false,
        app_image: false,
    },

    visibility: [
        "//frameworks/opt/net/wifi/service/apex",
        "//frameworks/opt/net/wifi/tests/wifitests/apex",
    ],
    apex_available: [
        "com.android.wifi",
        "test_com.android.wifi",
    ],
}

// Statsd auto-generated code
// ============================================================
genrule {
    name: "statslog-wifi-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module wifi " +
         " --javaPackage com.android.server.wifi.proto --javaClass WifiStatsLog",
    out: ["com/android/server/wifi/proto/WifiStatsLog.java"],
}

// APK to hold all the wifi overlayable resources.
// ============================================================
android_app {
    name: "ServiceWifiResources",
    defaults: ["wifi-service-common"],
    resource_dirs: [
        "res",
    ],
    privileged: true,
    sdk_version: "system_current",
    export_package_resources: true,
    manifest: "AndroidManifest_Resources.xml",
    apex_available: [
        "com.android.wifi",
        "test_com.android.wifi",
    ],
    certificate: ":com.android.wifi.resources.certificate",
}

android_app_certificate {
    name: "com.android.wifi.resources.certificate",
    certificate: "resources-certs/com.android.wifi.resources"
}

// Prebuilt for the wifi.rc file.
prebuilt_etc {
    name: "wifi.rc",
    src: "wifi.rc",
    sub_dir: "init"
}
