# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxb/36548.                         #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/unification/zx_library.gni")

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

  # TODO: testonly = true
  shared = true
  sources = [
    "dir-watcher.cc",
    "file-wait.cc",
    "launcher.cc",
  ]
  public_deps = [
    # <lib/devmgr-integration-test/fixture.h> has #include <lib/devmgr-launcher/launch.h>.
    "//zircon/system/ulib/devmgr-launcher",

    # <lib/devmgr-integration-test/fixture.h> has #include <fbl/unique_fd.h>.
    "//zircon/public/lib/fbl",

    # <lib/devmgr-integration-test/fixture.h> has #include <lib/fit/function.h>.
    "//zircon/public/lib/fit",

    # <lib/devmgr-integration-test/fixture.h> has #include <lib/zx/channel.h>.
    "//zircon/public/lib/zx",
  ]
  deps = [
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-default",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fidl-async",
    "//zircon/public/lib/fidl-async-cpp",
    "//zircon/public/lib/fs",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/syslog",
    "//zircon/public/lib/zx",
    "//zircon/system/fidl/fuchsia-boot:c",
    "//zircon/system/fidl/fuchsia-boot:llcpp",
    "//zircon/system/fidl/fuchsia-process:c",
    "//zircon/system/fidl/fuchsia-scheduler:c",
    "//zircon/system/ulib/devmgr-launcher",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/mock-boot-arguments",
  ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}
