# Copyright 2020 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/host.gni")
import("//build/sdk/sdk_host_tool.gni")
import("//build/test.gni")

if (is_host) {
  source_set("src") {
    sources = [
      "command_line_options.cc",
      "reader.cc",
      "symbol_index.cc",
    ]
    deps = [
      "//src/lib/fxl",
      "//zircon/system/ulib/cmdline",
    ]
  }

  executable("symbol-index") {
    sources = [ "main.cc" ]
    deps = [
      ":src",
      "//src/developer/debug/zxdb/common:version",
      "//src/lib/fxl",
    ]
  }

  sdk_host_tool("symbol_index_sdk") {
    category = "partner"
    deps = [ ":symbol-index" ]
    output_name = "symbol-index"
  }

  test("symbol_index_tests") {
    sources = [
      "command_line_options_test.cc",
      "reader_test.cc",
      "symbol_index_test.cc",
    ]
    deps = [
      ":src",
      "//src/lib/files",
      "//src/lib/fxl/test:gtest_main",
      "//third_party/googletest:gtest",
    ]
  }
}

group("tests") {
  testonly = true
  deps = [ ":symbol_index_tests($host_toolchain)" ]
}
