# Copyright 2021 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/components.gni")
import("//build/cpp/library_headers.gni")
import("//build/cpp/sdk_shared_library.gni")
import("//build/test.gni")

group("tests") {
  testonly = true
  deps = [
    ":driver_runtime_death_tests",
    ":driver_runtime_tests",
  ]
}

config("include") {
  include_dirs = [ "include" ]
}

source_set("driver_runtime_impl") {
  sources = [
    "api.cc",
    "arena.cc",
    "channel.cc",
    "dispatcher.cc",
    "driver_context.cc",
    "handle.cc",
    "message_packet.cc",
  ]
  public_configs = [ ":include" ]
  public_deps = [
    "//sdk/lib/driver_runtime",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
  deps = [
    "//sdk/lib/driver_runtime:driver_runtime_internal",
    "//sdk/lib/fidl/cpp/wire",
    "//src/devices/lib/log",
    "//src/lib/ddk",
    "//zircon/system/ulib/fbl",
  ]
}

sdk_shared_library("driver_runtime") {
  category = "partner"
  libcxx_linkage = "static"
  no_headers = true
  sdk_name = "driver_runtime_shared_lib"
  symbols_api = "driver_runtime.ifs"
  sources = []

  deps = [ ":driver_runtime_impl" ]
  runtime_deps = [
    "//sdk/lib/fdio:fdio_sdk",
    "//zircon/system/ulib/async-default:async-default_sdk",
    "//zircon/system/ulib/syslog:syslog_sdk",
    "//zircon/system/ulib/trace-engine:trace-engine_sdk",
  ]
}

test("driver_runtime_test") {
  sources = [
    "arena_test.cc",
    "channel_test.cc",
    "dispatcher_test.cc",
    "driver_context_test.cc",
    "handle_test.cc",
    "runtime_test_case.cc",
  ]
  deps = [
    ":driver_runtime_impl",
    "//sdk/lib/driver_runtime",
    "//sdk/lib/driver_runtime:driver_runtime_cpp",
    "//sdk/lib/driver_runtime:driver_runtime_internal_cpp",
    "//sdk/lib/fidl/cpp/wire",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/sync:sync-cpp",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

test("driver_runtime_death_test") {
  sources = [ "channel_death_test.cc" ]
  deps = [
    ":driver_runtime_impl",
    "//sdk/lib/driver_runtime",
    "//sdk/lib/driver_runtime:driver_runtime_cpp",
    "//sdk/lib/fidl/cpp/wire",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/sync:sync-cpp",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("driver_runtime_tests") {
  deps = [ ":driver_runtime_test" ]
}

fuchsia_unittest_package("driver_runtime_death_tests") {
  deps = [ ":driver_runtime_death_test" ]
}
