# 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/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/system/ulib/zircon-internal",
  ]

  deps = [ "//sdk/lib/fit" ]

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

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