# 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("wlanif_driver") {
  output_name = "wlanif"
  sources = [
    "binding.c",
    "convert.cpp",
    "convert.h",
    "device.cpp",
    "device.h",
    "driver.cpp",
    "driver.h",
  ]

  deps = [
    "//garnet/drivers/wlan/lib",
    "//garnet/lib/wlan/common",
    "//garnet/lib/wlan/fidl",
    "//garnet/lib/wlan/protocol",
    "//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("wlanif") {
  deprecated_system_image = true

  deps = [
    ":wlanif_driver",
  ]

  drivers = [ {
        name = "wlanif.so"
      } ]
}
