# 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/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/test/test_package.gni")

group("debugger") {
  deps = [ ":bind_debugger" ]
}

rustc_binary("bin") {
  name = "bind_debugger"
  edition = "2018"

  with_unit_tests = true

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager-rustc",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:structopt",
  ]

  sources = [ "src/main.rs" ]
}

rustc_library("lib") {
  name = "bind_debugger"
  edition = "2018"

  with_unit_tests = true

  deps = [
    "//sdk/fidl/fuchsia.device.manager:fuchsia.device.manager-rustc",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:bitfield",
    "//third_party/rust_crates:lazy_static",
    "//third_party/rust_crates:nom",
    "//third_party/rust_crates:nom_locate",
    "//third_party/rust_crates:num-derive",
    "//third_party/rust_crates:num-traits",
    "//third_party/rust_crates:regex",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:thiserror",
    "//third_party/rust_crates:valico",
  ]

  sources = [
    "src/bind_library.rs",
    "src/bind_program.rs",
    "src/c_generation.rs",
    "src/compiler.rs",
    "src/debugger.rs",
    "src/dependency_graph.rs",
    "src/device_specification.rs",
    "src/errors.rs",
    "src/instruction.rs",
    "src/lib.rs",
    "src/offline_debugger.rs",
    "src/parser_common.rs",
    "src/test.rs",
  ]
  inputs = [ "tests_schema.json" ]
}

test_package("bind_debugger_tests") {
  deps = [ ":lib_test" ]

  tests = [
    {
      name = "bind_debugger_lib_test"
      dest = "bind_debugger_tests"
      environments = basic_envs
    },
  ]
}

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

package("bind_debugger") {
  deps = [ ":bin" ]

  binaries = [
    {
      name = "bind_debugger"
    },
  ]
  meta = [
    {
      path = rebase_path("meta/bind_debugger.cmx")
      dest = "bind_debugger.cmx"
    },
  ]
}
