# 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_cpp",
    "//sdk/lib/fidl",
    "//src/lib/fxl",
    "//src/storage/lib/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/fzl",
  ]
  public_deps = [
    # <debugdata/debugdata.h has #include <fidl/fuchsia.debugdata/cpp/wire.h>.
    "//sdk/fidl/fuchsia.debugdata:fuchsia.debugdata_cpp",

    # <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" ]
}
