//
// 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",
    defaults: ["wifi-module-sdk-version-defaults"],
    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_lib",
        "framework-tethering.stubs.module_lib",
        "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",
        "//packages/modules/Wifi/apex",
        "//packages/modules/Wifi/service/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"],
}

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