# Copyright 2018 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":bootstat",
    ":libbootstat",
  ]
  if (use.test) {
    deps += [ ":libbootstat_unittests" ]
  }
}

shared_library("libbootstat") {
  sources = [
    "bootstat_log.c",
  ]
  libs = [ "rootdev" ]
}

executable("bootstat") {
  sources = [
    "bootstat.c",
  ]
  deps = [
    ":libbootstat",
  ]
}

if (use.test) {
  executable("libbootstat_unittests") {
    sources = [
      "bootstat_test.cc",
    ]
    configs += [ "//common-mk:test" ]
    deps = [
      ":libbootstat",
      "//common-mk/testrunner",
    ]
  }
}
