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

if (target_cpu == "x64") {
  executable("bin") {
    output_name = "thermd"

    sources = [ "thermd.cc" ]

    deps = [
      "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_cpp",
      "//sdk/fidl/fuchsia.kernel:fuchsia.kernel_cpp",
      "//sdk/lib/component/incoming/cpp",
      "//sdk/lib/syslog/cpp",
      "//zircon/system/ulib/async",
      "//zircon/system/ulib/async-default",
      "//zircon/system/ulib/async-loop:async-loop-cpp",
      "//zircon/system/ulib/async-loop:async-loop-default",
      "//zircon/system/ulib/fbl",
      "//zircon/system/ulib/fdio-caller",
      "//zircon/system/ulib/fzl",
      "//zircon/system/ulib/trace",
      "//zircon/system/ulib/trace-provider",
      "//zircon/system/ulib/zx",
    ]
  }

  fuchsia_package_with_single_component("thermd") {
    manifest = "meta/thermd.cml"
    deps = [ ":bin" ]
  }

  core_shard("thermd-core-shard") {
    shard_file = "meta/thermd.core_shard.cml"
  }
}

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