# 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 = [
    ":timberslide",
  ]
  if (use.test) {
    deps += [ ":timberslide_test_runner" ]
  }
}

pkg_config("target_defaults") {
  pkg_deps = [
    "libchrome-${libbase_ver}",
    "libbrillo",
    "libmetrics-${libbase_ver}",
    "re2",
  ]
}

static_library("libtimberslide") {
  configs += [ ":target_defaults" ]
  sources = [
    "fingerprint_log_listener_impl.cc",
    "timberslide.cc",
  ]
}

executable("timberslide") {
  configs += [ ":target_defaults" ]
  sources = [
    "main.cc",
  ]
  deps = [
    ":libtimberslide",
  ]
}

if (use.test) {
  pkg_config("timberslide_test_config") {
    pkg_deps = [ "libchrome-test-${libbase_ver}" ]
  }
  executable("timberslide_test_runner") {
    configs += [
      "//common-mk:test",
      ":timberslide_test_config",
      ":target_defaults",
    ]
    sources = [
      "fingerprint_log_listener_impl_test.cc",
      "timberslide_test.cc",
      "timberslide_testrunner.cc",
    ]
    deps = [
      ":libtimberslide",
      "//common-mk/testrunner",
    ]
  }
}
