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

declare_args() {
  # This is used to temporarily enable building with the C driver
  # and will be removed once cpp driver is stabilized
  ethernet_c = false
}

driver("ethernet") {
  # TODO(puneetha) This is used to temporarily enable building with the C driver
  # before cpp driver is stabilized
  if(ethernet_c) {
    sources = [
      "ethernet.c"
    ]
    deps = [
      "$zx/system/banjo/ddk-protocol-ethernet",
      "$zx/system/fidl/fuchsia-hardware-ethernet:c",
      "$zx/system/ulib/ddk",
      "$zx/system/ulib/fidl",
      "$zx/system/ulib/zircon",
    ]
  }
  # cpp driver is default unless specified during fx set with
  # --args="zircon_extra_args = { ethernet_c=true }"
  else {
    sources = [
      "ethernet.cpp"
    ]
    deps = [
      "$zx/system/banjo/ddk-protocol-ethernet",
      "$zx/system/fidl/fuchsia-hardware-ethernet:c",
      "$zx/system/ulib/ddk",
      "$zx/system/ulib/ddktl",
      "$zx/system/ulib/fbl",
      "$zx/system/ulib/fzl",
      "$zx/system/ulib/fidl",
      "$zx/system/ulib/fidl-utils",
      "$zx/system/ulib/zircon",
    ]
  }
}
