# Copyright 2016 The Chromium 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("//chromecast/chromecast.gni")
import("//testing/test.gni")

source_set("reboot_util") {
  sources = [
    "reboot_util.h",
    "reboot_util_core.cc",
  ]

  deps = [
    ":libcast_reboot_1.0",
    "//base",
  ]

  if (chromecast_branding == "google") {
    deps += [ "//chromecast/internal/system/reboot:reboot_util" ]
  } else {
    sources += [ "reboot_util_dummy.cc" ]
  }
}

test("cast_reboot_unittests") {
  sources = [
    "reboot_util_test.cc",
  ]

  deps = [
    ":reboot_util",
    "//base/test:run_all_unittests",
    "//testing/gtest",
  ]
}

# Target for OEM partners to override reboot shared library, i.e.
# libcast_reboot_1.0.so.
shared_library("libcast_reboot_1.0") {
  sources = [
    "reboot_dummy.cc",
  ]

  public_deps = [
    "//chromecast/public",
  ]
}
