
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

package(default_visibility = ["//visibility:public"])

load(
    "@rules_fuchsia//fuchsia:defs.bzl",
    "fuchsia_driver_header_bind_rules",
    "fuchsia_driver_bytecode_bind_rules",
    "fuchsia_component",
    "fuchsia_component_manifest",
    "fuchsia_package",
)

fuchsia_driver_header_bind_rules(
    name = "fuchsia_bind_header",
    rules = "iwlwifi.bind",
    output = "iwlwifi-bind.h",

    deps = ["@fuchsia_sdk//bind/fuchsia.pci"],
)

fuchsia_driver_bytecode_bind_rules(
    name = "fuchsia_bind_bytecode",
    rules = "iwlwifi.bind",
    output = "iwlwifi-bind.bc",

    deps = ["@fuchsia_sdk//bind/fuchsia.pci"],
)

cc_library(
    name = "driver_inspector",
    srcs = [
        "driver-inspector.cc",
        ],
    hdrs = [
        "driver-inspector.h",
        ],
    deps = [
        "@fuchsia_sdk//pkg/inspect",
        ],
)

cc_library(
    name = "platform",
    srcs = [
        "compiler.cc",
        "debug.cc",
        "device.cc",
        "ieee80211.cc",
        "irq.cc",
        "memory.cc",
        "module.cc",
        "rcu.cc",
        "task-internal.cc",
        "task.cc",
        "time.cc",

        # Must come from library
        "channel.cc",
        ],
    hdrs = [
        "compiler.h",
        "debug.h",
        "device.h",
        "ieee80211.h",
        "irq.h",
        "kernel.h",
        "memory.h",
        "module.h",
        "pci.h",
        "rcu.h",
        "task-internal.h",
        "task.h",
        "time.h",
        "align.h",

        # Must come from library
        "channel.h",
        "ieee80211_include.h",
        ],
    deps = [
        ":driver_inspector",
        ":rcu_manager",
        "@fuchsia_sdk//pkg/ddk",
        "@fuchsia_sdk//fidl/fuchsia.hardware.pci:fuchsia.hardware.pci_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.phyinfo:fuchsia.hardware.wlan.phyinfo_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.softmac:fuchsia.hardware.wlan.softmac_banjo_cc",

        # Needed only for library purposes (channel and ieee includes)
        "@fuchsia_sdk//fidl/fuchsia.wlan.common:fuchsia.wlan.common_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.associnfo:fuchsia.hardware.wlan.associnfo_banjo_cc",
        ],

    defines = [
        "CPTCFG_IWL_TIMEOUT_FACTOR=1",
        "CPTCFG_IWLMVM=1",
    ],
)

# Support for RCU synchronization.
cc_library(
    name = "rcu_manager",
    srcs = [ "rcu-manager.cc" ],
    hdrs = [ "rcu-manager.h" ],
    deps = [
        "@fuchsia_sdk//pkg/async",
        "@fuchsia_sdk//pkg/async-cpp",
    ],
)

cc_library(
    name = "fuchsia_device",
    srcs = [
        "mvm-mlme.cc",
        "mvm-sta.cc",
        "pcie-device.cc",
        "wlan-softmac-device.cc",
        "wlanphy-impl-device.cc",
        ],
    hdrs = [
        "mvm-mlme.h",
        "mvm-sta.h",
        "pcie-device.h",
        "scoped_utils.h",
        "wlan-softmac-device.h",
        "wlanphy-impl-device.h",
    ],
    deps = [
        ":driver_inspector",
        ":fuchsia_bind_header",
        ":platform",
        ":rcu_manager",
        "@fuchsia_sdk//pkg/ddktl-experimental-driver-only",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.phyinfo:fuchsia.hardware.wlan.phyinfo_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlan.softmac:fuchsia.hardware.wlan.softmac_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.hardware.wlanphyimpl:fuchsia.hardware.wlanphyimpl_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.wlan.common:fuchsia.wlan.common_banjo_cc",
        "@fuchsia_sdk//fidl/fuchsia.wlan.ieee80211:fuchsia.wlan.ieee80211_cc",
        "@fuchsia_sdk//fidl/fuchsia.wlan.internal:fuchsia.wlan.internal_banjo_cc",
        "//third_party/iwlwifi:core",
        "//third_party/iwlwifi/mvm:mvm",
        "//third_party/iwlwifi/pcie",
        "@fuchsia_sdk//pkg/ddk",
        "@fuchsia_sdk//pkg/async-loop-cpp",
        "@fuchsia_sdk//pkg/async-loop-default",
    ],

    copts = ["-Ithird_party/iwlwifi"],
)

cc_binary(
    name = "iwlwifi_driver",
    srcs = [ "bind.cc" ],
    deps = [
        ":fuchsia_bind_header",
        ":fuchsia_device",
    ],
    linkshared = True,
)

fuchsia_component_manifest(
    name = "iwlwifi_manifest",
    src = "meta/iwlwifi_driver.cml",
)

fuchsia_component(
    name = "iwlwifi_driver_component",
    content = {
        ":iwlwifi_driver": "lib/",
        ":fuchsia_bind_bytecode": "meta/bind/",
    },
    manifest = ":iwlwifi_manifest",
)

fuchsia_package(
    name = "iwlwifi_driver_pkg",
    package_name = "iwlwifi_driver",
    visibility = ["//visibility:public"],
    deps = [
        ":iwlwifi_driver_component",
     ],
)
