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

library("inspector") {
  # This should only ever be used as a shared library because it hides
  # the otherwise problematic ngunwind symbols.
  shared = true
  static = false

  sdk = "shared"
  sdk_headers = [ "inspector/inspector.h" ]
  sources = [
    "backtrace.cpp",
    "debug-info.cpp",
    "dso-list.cpp",
    "memory.cpp",
    "registers.cpp",
    "utils.cpp",
  ]
  configs += [ "$zx/public/gn/config:visibility_hidden" ]
  public_deps = [
    "$zx/system/ulib/zircon:headers",
  ]
  deps = [
    "$zx/system/ulib/backtrace-request:utils",
    "$zx/system/ulib/elf-search",
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/pretty",
    "$zx/system/ulib/zircon",
    "$zx/third_party/ulib/backtrace",
    "$zx/third_party/ulib/ngunwind",
  ]
  configs += [ "$zx/public/gn/config:static-libc++" ]

  # Compile this with frame pointers so that if we crash
  # the simplistic unwinder will work.
  if (configs + [ "$zx/public/gn/config:default_frame_pointers" ] -
      [ "$zx/public/gn/config:default_frame_pointers" ] != configs) {
    configs -= [ "$zx/public/gn/config:default_frame_pointers" ]
    configs += [ "$zx/public/gn/config:frame_pointers" ]
  }
}
