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

zx_library("debugdata") {
  sources = [
    "datasink.cc",
    "debugdata.cc",
  ]
  sdk = "source"
  sdk_headers = [
    "lib/debugdata/debugdata.h",
    "lib/debugdata/datasink.h",
  ]
  deps = [
    "//sdk/fidl/fuchsia.debugdata:fuchsia.debugdata_llcpp",
    "//src/lib/fxl",
    "//src/lib/storage/vfs/cpp",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fidl",
    "//zircon/system/ulib/fzl",
  ]
  public_deps = [
    # <debugdata/debugdata.h has #include <fidl/fuchsia.debugdata/cpp/wire.h>.
    "//sdk/fidl/fuchsia.debugdata:fuchsia.debugdata_llcpp",

    # <debugdata/debugdata.h> has #include <fbl/unique_fd.h>.
    "//zircon/system/ulib/fbl",

    # <debugdata/debugdata.h> has #include <lib/async/cpp/wait.h>.
    "//zircon/system/ulib/async:async-cpp",

    # <debugdata/debugdata.h> has #include <lib/zircon-internal/fnv1hash.h>.
    "//zircon/system/ulib/zircon-internal",

    # <debugdata/datasink.h> has #include <lib/zx/vmo.h>.
    "//zircon/system/ulib/zx",
  ]
}

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