# Copyright 2019 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 = [
    "test_utils:diagnostics_dpsl_test_listener",
    "test_utils:diagnostics_dpsl_test_requester",
  ]
  if (use.test) {
    deps += [ ":libdpsl_test" ]
  }
}

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

# Library that provides the DPSL (diagnostics processor support library)
# interface.
source_set("libdpsl") {
  configs += [ ":common_pkg_deps" ]
  deps = [
    "//diagnostics/constants:libconstants",
    "//diagnostics/grpc:wilco_dtc_grpc_protos",
  ]
  sources = [
    "internal/dpsl_global_context_impl.cc",
    "internal/dpsl_requester_impl.cc",
    "internal/dpsl_rpc_server_impl.cc",
    "internal/dpsl_thread_context_impl.cc",
  ]
}

if (use.test) {
  executable("libdpsl_test") {
    sources = [
      "internal/dpsl_global_context_impl_test.cc",
      "internal/dpsl_requester_impl_test.cc",
      "internal/dpsl_rpc_server_impl_test.cc",
      "internal/dpsl_thread_context_impl_test.cc",
      "internal/test_dpsl_background_thread.cc",
    ]
    configs += [
      ":common_pkg_deps",
      "//common-mk:test",
    ]
    deps = [
      ":libdpsl",
      "//common-mk/testrunner:testrunner",
    ]
  }
}
