# 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/test.gni")

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

source_set("cpp") {
  sources = [
    "banjo_client.cc",
    "connect.cc",
    "device_server.cc",
    "service_offers.cc",
  ]
  public = [
    "include/lib/driver/compat/cpp/banjo_client.h",
    "include/lib/driver/compat/cpp/banjo_server.h",
    "include/lib/driver/compat/cpp/compat.h",
    "include/lib/driver/compat/cpp/connect.h",
    "include/lib/driver/compat/cpp/device_server.h",
    "include/lib/driver/compat/cpp/metadata.h",
    "include/lib/driver/compat/cpp/service_offers.h",
  ]

  public_deps = [
    ":symbols",
    "//sdk/fidl/fuchsia.driver.compat:fuchsia.driver.compat_cpp",
    "//sdk/fidl/fuchsia.driver.framework:fuchsia.driver.framework_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//sdk/lib/component/outgoing/cpp",
    "//sdk/lib/driver/async-helpers/cpp",
    "//sdk/lib/driver/component/cpp",
    "//src/devices/bind/fuchsia:fuchsia_cpp",
  ]
  public_configs = [ ":includes" ]
}

source_set("logging") {
  sources = [ "logging.cc" ]
  public = [ "include/lib/driver/compat/cpp/logging.h" ]
  public_deps = [ "//sdk/lib/driver/logging/cpp" ]
  public_configs = [ ":includes" ]
}

source_set("symbols") {
  sources = [ "include/lib/driver/compat/cpp/symbols.h" ]
  public_configs = [ ":includes" ]
}

test("test") {
  output_name = "compat-lib-test"
  sources = [ "test.cc" ]
  deps = [
    ":cpp",
    ":logging",
    "//sdk/lib/driver/testing/cpp",
    "//sdk/lib/driver/testing/cpp:scoped_global_logger",
    "//src/storage/lib/vfs/cpp",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("test-package") {
  package_name = "compat-lib-test"
  deps = [ ":test" ]
  test_specs = {
    log_settings = {
      max_severity = "ERROR"
    }
  }
}

group("tests") {
  testonly = true
  deps = [ ":test-package" ]
}
