# Copyright 2019 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/unification/zx_library.gni")

zx_library("driver-integration-test") {
  sdk = "shared"
  sdk_headers = [ "lib/driver-integration-test/fixture.h" ]

  shared = true
  sources = [ "launcher.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/devmgr-integration-test",
    "//zircon/system/ulib/devmgr-launcher",
    "//zircon/system/ulib/inspector",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/lib/fit",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/devmgr-integration-test",
  ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

zx_library("driver-integration-test-static") {
  sdk = "static"
  sdk_headers = [ "lib/driver-integration-test/fixture.h" ]

  static = true
  sources = [ "launcher.cc" ]
  deps = [
    "//sdk/lib/fdio",
    "//src/lib/ddk",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/devmgr-integration-test",
    "//zircon/system/ulib/devmgr-launcher",
    "//zircon/system/ulib/inspector",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/lib/fit",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/devmgr-integration-test",
  ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

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