// Copyright (C) 2021 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_applicable_licenses: ["hardware_interfaces_license"],
}

filegroup {
    name: "android.hardware.wifi@1.0-service_srcs",
    srcs: ["service.cpp"],
}

cc_defaults {
    name: "android.hardware.wifi@1.0-service_default",
    srcs: [":android.hardware.wifi@1.0-service_srcs"],
    relative_install_path: "hw",
    soc_specific: true,
    shared_libs: [
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "android.hardware.wifi@1.5",
        "android.hardware.wifi@1.6",
        "libbase",
        "libcutils",
        "libhidlbase",
        "liblog",
        "libnl",
        "libutils",
        "libwifi-system-iface",
        "libxml2",
    ],
    cppflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
    ],
}

filegroup {
    name: "android.hardware.wifi@1.0-service-lib_srcs",
    srcs: [
        "hidl_struct_util.cpp",
        "hidl_sync_util.cpp",
        "ringbuffer.cpp",
        "wifi.cpp",
        "wifi_ap_iface.cpp",
        "wifi_chip.cpp",
        "wifi_feature_flags.cpp",
        "wifi_iface_util.cpp",
        "wifi_legacy_hal.cpp",
        "wifi_legacy_hal_factory.cpp",
        "wifi_legacy_hal_stubs.cpp",
        "wifi_mode_controller.cpp",
        "wifi_nan_iface.cpp",
        "wifi_p2p_iface.cpp",
        "wifi_rtt_controller.cpp",
        "wifi_sta_iface.cpp",
        "wifi_status_util.cpp",
    ],
}

cc_defaults {
    name: "android.hardware.wifi@1.0-service-lib_defaults",
    srcs: [":android.hardware.wifi@1.0-service-lib_srcs"],
    relative_install_path: "hw",
    soc_specific: true,
    shared_libs: [
        "android.hardware.wifi@1.0",
        "android.hardware.wifi@1.1",
        "android.hardware.wifi@1.2",
        "android.hardware.wifi@1.3",
        "android.hardware.wifi@1.4",
        "android.hardware.wifi@1.5",
        "android.hardware.wifi@1.6",
        "libbase",
        "libcutils",
        "libhidlbase",
        "liblog",
        "libnl",
        "libutils",
        "libwifi-system-iface",
        "libxml2",
    ],
    // Generated by building android.hardware.wifi@1.0-service-lib and printing LOCAL_CPPFLAGS.
    cppflags: [
        "-Wall",
        "-Werror",
        "-Wextra",
        "-DWIFI_HIDL_FEATURE_DUAL_INTERFACE",
    ],
    export_include_dirs: ["."],
    include_dirs: ["external/libxml2/include"],
}
