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

source_set("compat") {
  sources = [
    "compat.cc",
    "compat.h",
    "connect.cc",
    "connect.h",
    "symbols.h",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.driver.compat:fuchsia.driver.compat_llcpp",
    "//sdk/lib/driver2:devfs_exporter",
    "//sdk/lib/driver2:llcpp",
    "//sdk/lib/sys/component/cpp",
    "//zircon/system/ulib/service:service-llcpp",
  ]
}

test("test") {
  output_name = "compat-lib-test"
  sources = [ "test.cc" ]
  deps = [
    ":compat",
    "//src/lib/storage/vfs/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/zxtest",
  ]
}

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

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