# 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/bind/bind.gni")
import("//build/components.gni")
import("//build/drivers.gni")

driver_bind_rules("at_fake_bind") {
  rules = "at_fake.bind"
  tests = "bind_tests.json"
  deps = [ "//src/devices/bind/fuchsia.test.platform" ]
}

group("tests") {
  testonly = true
  deps = [ ":at_fake_bind_test" ]
}

fuchsia_driver("fake_at_driver-driver") {
  output_name = "at-fake-transport"
  testonly = true

  sources = [
    "driver.cc",
    "fake-device.cc",
    "fake-device.h",
  ]

  deps = [
    ":at_fake_bind",
    "//sdk/banjo/fuchsia.hardware.test:fuchsia.hardware.test_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.telephony.transport:fuchsia.hardware.telephony.transport_cpp",
    "//sdk/fidl/fuchsia.telephony.snoop:fuchsia.telephony.snoop_cpp",
    "//src/connectivity/telephony/tests/fake-drivers/fake-transport-base",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zx",
  ]
}

fuchsia_driver_component("fake_at_driver") {
  testonly = true
  component_name = "at-fake-transport"
  deps = [ ":fake_at_driver-driver" ]
  info = "fake_at_driver-info.json"
  manifest = "meta/fake_at_driver.cml"
}

group("at-fake-transport") {
  testonly = true
  deps = [
    ":fake_at_driver",
    ":tests",
  ]
}
