# Copyright 2020 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")

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

source_set("libcommon") {
  configs += [ ":libcommon_pkg_deps" ]
  deps = [ "//diagnostics/dpsl:libdpsl" ]
  sources = [ "common.cc" ]
}

# Executable for E2E VM tests.
executable("diagnostics_dpsl_test_listener") {
  configs += [ ":libcommon_pkg_deps" ]
  deps = [
    ":libcommon",
    "//diagnostics/grpc:wilco_dtc_grpc_protos",
  ]
  sources = [ "listener.cc" ]
}

# Executable for E2E VM tests.
executable("diagnostics_dpsl_test_requester") {
  configs += [ ":libcommon_pkg_deps" ]
  deps = [
    ":libcommon",
    "//diagnostics/grpc:wilco_dtc_grpc_protos",
  ]
  sources = [ "requester.cc" ]
}
