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

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

static_library("libthd") {
  configs += [ ":target_defaults" ]
  sources = [
    "mechanism/fake_mechanism.cc",
    "mechanism/file_write_mechanism.cc",
    "mechanism/mechanism.cc",
    "source/ectool_temps_source.cc",
    "source/fake_source.cc",
    "source/file_source.cc",
  ]
}

if (use.test) {
  pkg_config("test_config") {
    pkg_deps = [ "libchrome-test-${libbase_ver}" ]
  }

  executable("thd_unittests") {
    configs += [
      "//common-mk:test",
      ":target_defaults",
      ":test_config",
    ]
    sources = [
      "mechanism/file_write_mechanism_test.cc",
      "source/file_source_test.cc",
    ]
    deps = [
      ":libthd",
      "//common-mk/testrunner",
    ]
  }
}
