# Copyright 2020 The ChromiumOS Authors
# 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 = [ ":ureadahead-diff" ]
  if (use.test) {
    deps += [ ":ureadahead-diff_testrunner" ]
  }
}

pkg_config("target_defaults_pkg_deps") {
  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]
}

config("target_defaults") {
  configs = [ ":target_defaults_pkg_deps" ]
  defines = [ "OS_CHROMEOS" ]
}

static_library("libureadahead_diff") {
  sources = [ "ureadahead_diff.cc" ]
  configs += [ ":target_defaults" ]
  defines = []
}

executable("ureadahead-diff") {
  install_path = "bin"
  sources = [ "main.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libureadahead_diff" ]
}

if (use.test) {
  pkg_config("ureadahead-diff_testrunner_pkg_deps") {
    pkg_deps = [
      "libbrillo-test",
      "libchrome-test",
    ]
  }
  executable("ureadahead-diff_testrunner") {
    run_test = true
    sources = [ "ureadahead_diff_test.cc" ]
    configs += [
      "//common-mk:test",
      ":ureadahead-diff_testrunner_pkg_deps",
      ":target_defaults",
    ]

    deps = [
      ":libureadahead_diff",
      "../../common-mk/testrunner:testrunner",
    ]
  }
}
