# 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/config.gni")
import("//build/package.gni")

executable("bin") {
  output_name = "thermd"

  if (target_cpu == "x64") {
    sources = [
      "thermd.cc",
    ]
  } else if (target_cpu == "arm64") {
    sources = [
      "thermd_arm.cc",
    ]
  }

  deps = [
    "//zircon/public/banjo/ddk.protocol.scpi",
    "//zircon/public/fidl/fuchsia-hardware-gpu-clock:fuchsia-hardware-gpu-clock_c_client",
    "//zircon/public/fidl/fuchsia-hardware-thermal:fuchsia-hardware-thermal_c",
    "//zircon/public/fidl/fuchsia-sysinfo:fuchsia-sysinfo_c",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/fdio",
    "//zircon/public/lib/fzl",
    "//zircon/public/lib/trace",
    "//zircon/public/lib/trace-provider",
    "//zircon/public/lib/zx",
  ]
}

package("thermd") {
  deps = [
    ":bin",
  ]

  binary = "thermd"

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

config_data("config") {
  for_pkg = "sysmgr"
  sources = [
    "thermd.config",
  ]
}
