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

rustc_binary("banjo_bin") {
  edition = "2018"
  deps = [
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:heck",
    "//third_party/rust_crates:pest",
    "//third_party/rust_crates:pest_derive",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_derive",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:structopt",
  ]
  source_root = "src/main.rs"
}

rustc_library("banjo_lib") {
  edition = "2018"
  deps = [
    "//third_party/rust_crates:failure",
    "//third_party/rust_crates:heck",
    "//third_party/rust_crates:pest",
    "//third_party/rust_crates:pest_derive",
    "//third_party/rust_crates:serde",
    "//third_party/rust_crates:serde_derive",
    "//third_party/rust_crates:serde_json",
    "//third_party/rust_crates:structopt",
  ]
  source_root = "src/lib.rs"
}

if (host_toolchain == current_toolchain) {
  rustc_library("banjo_unittests") {
    edition = "2018"
    with_unit_tests = true
    testonly = true

    deps = [
      ":banjo_bin",
      ":banjo_lib($host_toolchain)",
      "//third_party/rust_crates:pest",
      "//third_party/rust_crates:pretty_assertions",
    ]
    source_root = "test/tests.rs"
  }

  copy("banjo_host_tests") {
    testonly = true

    sources = [
      "$root_out_dir/banjo_unittests_lib_test",
    ]

    outputs = [
      "$root_out_dir/banjo_host_tests",
    ]

    public_deps = [
      ":banjo_unittests($host_toolchain)",
    ]
  }
}

group("banjo") {
  public_deps = [
    ":banjo_bin($host_toolchain)",
  ]
}
