# 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/rust/rustc_binary.gni")
import("//src/sys/build/components.gni")

rustc_binary("bin") {
  name = "battery-manager"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//garnet/lib/rust/io_util",
    "//sdk/fidl/fuchsia.hardware.power:fuchsia.hardware.power-rustc",
    "//sdk/fidl/fuchsia.power:fuchsia.power-rustc",
    "//sdk/fidl/fuchsia.power:fuchsia.power.test-rustc",
    "//src/lib/fdio/rust:fdio",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/fuchsia-vfs-watcher",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
    "//third_party/rust_crates:libc",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:parking_lot",
    "//third_party/rust_crates:thiserror",
  ]

  sources = [
    "src/battery_manager.rs",
    "src/battery_simulator.rs",
    "src/main.rs",
    "src/power.rs",
  ]
}

fuchsia_component("battery_manager") {
  component_name = "battery_manager"
  manifest = "meta/battery_manager.cml"
  deps = [ ":bin" ]
}

# TODO: Remove this component after SL4F is migrated to CML
fuchsia_component("battery_manager_legacy") {
  component_name = "battery_manager"
  manifest = "meta/battery_manager.cmx"
  deps = [ ":bin" ]
}

fuchsia_package("battery-manager") {
  deps = [
    ":battery_manager",
    ":battery_manager_legacy",
  ]
}

fuchsia_component("battery_manager_bin_test") {
  testonly = true
  manifest = "meta/battery_manager_bin_test.cml"
  deps = [ ":bin_test" ]
}

fuchsia_test_package("battery-manager-tests") {
  test_components = [ ":battery_manager_bin_test" ]
}

group("tests") {
  testonly = true
  public_deps = [
    ":battery-manager-tests",
    "//src/power/battery-manager/tests:battery-manager-gotests",
  ]
}
