# 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/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-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/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"
    },
  ]
}

package("config") {
  deprecated_system_image = true
  package_name = "thermd_config"
  resources = [
    {
      dest = "sysmgr/thermd.config"
      path = rebase_path("thermd.config")
    },
  ]
}
