# 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") {
    configs += [
      ":common_pkg_deps",
      "//common-mk:test",
    ]
    deps = [
      ":libdpsl",
      "//common-mk/testrunner:testrunner",
    ]
    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",
    ]
  }
}
