# 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-gpu-clock:fuchsia-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")
    },
  ]
}
