# 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",
    ]
    public_deps = [ "//src/lib/analytics/cpp/core_dev_tools" ]
  }

  executable("symbol-index") {
    sources = [ "main.cc" ]
    deps = [
      ":src",
      "//src/developer/debug/shared",
      "//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)" ]
}
