# 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/banjo/fuchsia.hardware.scpi:fuchsia.hardware.scpi_banjo_cpp",
      "//sdk/fidl/fuchsia.hardware.gpu.clock:fuchsia.hardware.gpu.clock_c_client",
      "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
      "//sdk/fidl/fuchsia.kernel",
      "//sdk/lib/fdio",
      "//sdk/lib/syslog/cpp",
      "//src/lib/ddk",
      "//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/fdio-caller",
      "//zircon/system/ulib/fzl",
      "//zircon/system/ulib/trace",
      "//zircon/system/ulib/trace-provider",
      "//zircon/system/ulib/zx",
    ]

    # TODO(fxbug.dev/95833): This target uses the deprecated C bindings.
    # Consider switching to the C++ bindings. See linked bug for details.
    configs += [ "//build/c:fidl-deprecated-c-bindings" ]
  }

  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 = []
}
