# Copyright 2016 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/package.gni")
import("//build/test/test_package.gni")
import("//build/testing/environments.gni")

# A collection of utilities useful to debuggers and similar programs.
#
static_library("debugger_utils") {
  sources = [
    "build_ids.cc",
    "build_ids.h",
    "byte_block.h",
    "byte_block_file.cc",
    "byte_block_file.h",
    "elf_reader.cc",
    "elf_reader.h",
    "elf_symtab.cc",
    "elf_symtab.h",
    "ktrace_reader.cc",
    "ktrace_reader.h",
    "load_maps.cc",
    "load_maps.h",
    "util.cc",
    "util.h",
  ]

  if (is_fuchsia) {
    sources += [ "util_zx.cc" ]
  }

  if (current_cpu == "x64") {
    sources += [
      "x86_cpuid.cc",
      "x86_cpuid.h",
      "x86_pt.cc",
      "x86_pt.h",
    ]
  }

  public_deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/zircon-internal",
  ]

  deps = [ "//zircon/public/lib/fit" ]

  if (is_fuchsia) {
    deps += [ "//zircon/system/ulib/inspector" ]
    public_deps += [
      "//garnet/lib/process",
      "//sdk/fidl/fuchsia.boot:fuchsia.boot_c",
      "//sdk/lib/fdio",
      "//zircon/public/lib/zx",
    ]
  } else {
    deps += [ "//zircon/system/public" ]
  }

  configs += [
    # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}
