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

zx_library("pretty") {
  sdk = "static"
  sdk_headers = [
    "pretty/hexdump.h",
    "pretty/sizes.h",
  ]
  sdk_migrated = true
  kernel = true
  host = true
  static = true
  sources = [
    "hexdump.cc",
    "sizes.cc",
  ]
  public_deps = [ "//zircon/system/ulib/zircon-internal:headers" ]
  if (is_kernel && toolchain.environment != "kernel") {
    deps = [ "//zircon/kernel/lib/libc" ]
  }
}

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