# 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 = [
    "libbrillo",
    "libchrome",
    "libmetrics",
    "re2",
  ]
}

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

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

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