# Copyright 2018 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.

import("//build/config/fuchsia/rules.gni")
import("//build/package.gni")

driver_module("wlanphy_driver") {
  output_name = "wlanphy"
  sources = [
    "device.cpp",
    "device.h",
    "driver.cpp",
    "driver.h",
  ]

  deps = [
    "//garnet/lib/wlan/fidl",
    "//garnet/lib/wlan/protocol",
    "//src/connectivity/wlan/lib/common/cpp:common",
    "//src/lib/fxl",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/driver",
  ]

  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [
    "//build/config/fuchsia:enable_zircon_asserts",
    "//build/config/fuchsia:static_cpp_standard_library",
  ]
}

package("wlanphy") {
  deprecated_system_image = true

  deps = [
    ":wlanphy_driver",
  ]

  drivers = [
    {
      name = "wlanphy.so"
    },
  ]
}
