# 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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")

go_library("main") {
  source_dir = "cmd"
  sources = [
    "batch_runner.go",
    "batch_runner_test.go",
    "main.go",
  ]
  deps = [
    "//tools/debug/elflib",
    "//tools/lib/color",
    "//tools/lib/logger",
    "//tools/lib/osmisc",
    "//tools/lib/subprocess",
  ]
}

go_binary("generate_breakpad") {
  gopackage = "go.fuchsia.dev/fuchsia/tools/debug/generate_breakpad/cmd"

  deps = [ ":main" ]
}

go_test("generate_breakpad_tests") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/debug/generate_breakpad/cmd" ]
  deps = [ ":main" ]
}

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