# 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")

package("qmi-fake-transport") {
  deprecated_system_image = true
  testonly = true

  deps = [
    ":fake_driver",
  ]

  drivers = [
    {
      name = "qmi-fake.so"
    },
  ]
}

driver_module("fake_driver") {
  output_name = "qmi-fake"
  testonly = true

  sources = [
    "binding.c",
    "driver.cpp",
    "fake-device.cpp",
    "fake-device.h",
  ]

  deps = [
    "//zircon/public/banjo/ddk-protocol-test",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/driver",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
  ]

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