# Copyright 2018 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/test.gni")

# A collection of utilities useful to debuggers and similar programs.

static_library("elflib") {
  sources = [
    "elflib.cc",
  ]

  deps = [
    "//garnet/public/lib/fxl"
  ]
}

# An example stripped binary. Originally copied from out/x64/cowsay
copy("copy_stripped_example_elf") {
  sources = [
    "test_data/stripped_example.elf",
  ]

  outputs = [
    "$root_out_dir/test_data/elflib/{{source_file_part}}",
  ]
}

# TODO(IN-819): Delete once zxdb_tests is no longer being run out of
# $root_build_dir/host_tests/.
if (current_toolchain == default_toolchain) {
  copy("copy_stripped_example_elf_deprecated") {
    sources = [
      "test_data/stripped_example.elf",
    ]

    outputs = [
      "$root_build_dir/host_tests/test_data/elflib/{{source_file_part}}",
    ]
  }
}

test("elflib_tests") {
  sources = [
    "elflib_unittest.cc",
  ]

  deps = [
    ":elflib",
    "//third_party/googletest:gtest",
    "//third_party/googletest:gtest_main",
  ]

  data_deps = [
    ":copy_stripped_example_elf",
    ":copy_stripped_example_elf_deprecated($default_toolchain)",
  ]
}
