# 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/mojom_bindings_generator.gni")
import("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":cros_healthd",
    ":diag",
    ":smartctl-check",
    ":telem",
    ":urandom",
    ":wilco_dtc_supportd",
  ]
  if (use.test) {
    deps += [
      ":cros_healthd_test",
      ":libdiag_test",
      ":libtelem_test",
      ":routine_test",
      ":wilco_dtc_supportd_test",
      "//diagnostics/grpc_async_adapter:libgrpc_async_adapter_test",
    ]
  }
}

# Library with generated Mojo API definitions.
pkg_config("diagnostics_mojo_bindings_pkg_deps") {
  pkg_deps = [
    "libchrome-${libbase_ver}",
    "libmojo-${libbase_ver}",
  ]
}

generate_mojom_bindings("diagnostics_mojo_bindings") {
  public_configs = [ ":diagnostics_mojo_bindings_pkg_deps" ]
  sources = [
    "mojo/cros_healthd.mojom",
    "mojo/cros_healthd_diagnostics.mojom",
    "mojo/cros_healthd_telemetry.mojom",
    "mojo/wilco_dtc_supportd.mojom",
  ]
}

# Library that provides the diagnostic routine interface.
pkg_config("libdiag_routine_pkg_deps") {
  pkg_deps = [ "libchrome-${libbase_ver}" ]
}

static_library("libdiag_routine") {
  deps = [
    "//diagnostics/grpc:diagnostics_grpc_protos",
  ]
  all_dependent_configs = [ ":libdiag_routine_pkg_deps" ]
  sources = [
    "routines/battery/battery.cc",
    "routines/battery_sysfs/battery_sysfs.cc",
    "routines/diag_process_adapter_impl.cc",
    "routines/smartctl_check/smartctl_check.cc",
    "routines/subproc_routine.cc",
    "routines/urandom/urandom.cc",
  ]
}

# Library that provides core functionality for the diag tool.
pkg_config("libdiag_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
  ]
}

static_library("libdiag") {
  deps = [
    "//diagnostics/constants:libconstants",
    "//diagnostics/grpc:diagnostics_grpc_protos",
    "//diagnostics/grpc_async_adapter:libgrpc_async_adapter",
  ]
  all_dependent_configs = [ ":libdiag_pkg_deps" ]
  sources = [
    "diag/diag_async_grpc_client_adapter_impl.cc",
    "diag/diag_routine_requester.cc",
  ]
}

# Library that provides core functionality for the wilco_dtc_supportd daemon.
pkg_config("libwilco_dtc_supportd_pkg_deps") {
  pkg_deps = [
    "dbus-1",
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
    "libmojo-${libbase_ver}",
    "system_api",
  ]
}

static_library("libwilco_dtc_supportd") {
  deps = [
    ":diagnostics_mojo_bindings",
    ":libdiag_routine",
    "//diagnostics/constants:libconstants",
    "//diagnostics/grpc:diagnostics_grpc_protos",
    "//diagnostics/grpc_async_adapter:libgrpc_async_adapter",
  ]
  all_dependent_configs = [ ":libwilco_dtc_supportd_pkg_deps" ]
  sources = [
    "wilco_dtc_supportd/ec_constants.cc",
    "wilco_dtc_supportd/json_utils.cc",
    "wilco_dtc_supportd/mojo_utils.cc",
    "wilco_dtc_supportd/vpd_constants.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_core.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_core_delegate_impl.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_daemon.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_dbus_service.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_ec_event_service.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_grpc_service.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_mojo_service.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_routine_factory_impl.cc",
    "wilco_dtc_supportd/wilco_dtc_supportd_routine_service.cc",
  ]
}

# Library that provides core functionality for the telemetry tool.
pkg_config("libtelem_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
    "re2",
  ]
}

static_library("libtelem") {
  deps = [
    "//diagnostics/constants:libconstants",
    "//diagnostics/grpc:diagnostics_grpc_protos",
    "//diagnostics/grpc_async_adapter:libgrpc_async_adapter",
  ]
  all_dependent_configs = [ ":libtelem_pkg_deps" ]
  sources = [
    "telem/telem_cache.cc",
    "telem/telem_parsers.cc",
    "telem/telemetry.cc",
  ]
}

# The cros_healthd daemon executable.
pkg_config("cros_healthd_pkg_deps") {
  pkg_deps = [ "libbrillo-${libbase_ver}" ]
}

executable("cros_healthd") {
  configs += [ ":cros_healthd_pkg_deps" ]
  sources = [
    "cros_healthd/main.cc",
  ]
}

# The diag tool executable.
pkg_config("diag_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
  ]
}

executable("diag") {
  deps = [
    ":libdiag",
  ]
  configs += [ ":diag_pkg_deps" ]
  sources = [
    "diag/main.cc",
  ]
}

# The urandom tool executable.
pkg_config("urandom_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
  ]
}

executable("urandom") {
  configs += [ ":urandom_pkg_deps" ]
  sources = [
    "routines/urandom/main.cc",
  ]
}

# The smartctl-check tool executable.
pkg_config("smartctl-check_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
    "libdebugd-client",
  ]
}

executable("smartctl-check") {
  configs += [ ":smartctl-check_pkg_deps" ]
  sources = [
    "routines/smartctl_check/main.cc",
    "routines/smartctl_check/smartctl_check_utils.cc",
  ]
}

# The wilco_dtc_supportd daemon executable.
pkg_config("wilco_dtc_supportd_pkg_deps") {
  pkg_deps = [ "libbrillo-${libbase_ver}" ]
}

executable("wilco_dtc_supportd") {
  deps = [
    ":libwilco_dtc_supportd",
  ]
  sources = [
    "wilco_dtc_supportd/main.cc",
  ]
}

# The telemetry tool executable.
pkg_config("telem_pkg_deps") {
  pkg_deps = [
    "libbrillo-${libbase_ver}",
    "libchrome-${libbase_ver}",
  ]
}

executable("telem") {
  deps = [
    ":libtelem",
  ]
  configs += [ ":telem_pkg_deps" ]
  sources = [
    "telem/main.cc",
  ]
}

if (use.test) {
  # Libraries for unit tests.

  # Unit tests.
  pkg_config("cros_healthd_test_pkg_deps") {
    pkg_deps = [
      "libchrome-${libbase_ver}",
      "libchrome-test-${libbase_ver}",
    ]
  }

  executable("cros_healthd_test") {
    configs += [
      ":cros_healthd_test_pkg_deps",
      "//common-mk:test",
    ]
    deps = [
      "../common-mk/testrunner:testrunner",
    ]
  }

  pkg_config("wilco_dtc_supportd_test_pkg_deps") {
    pkg_deps = [
      "libchrome-${libbase_ver}",
      "libchrome-test-${libbase_ver}",
    ]
  }

  executable("wilco_dtc_supportd_test") {
    configs += [
      ":wilco_dtc_supportd_test_pkg_deps",
      "//common-mk:test",
    ]
    deps = [
      ":libwilco_dtc_supportd",
      "../common-mk/testrunner:testrunner",
    ]
    sources = [
      "common/file_test_utils.cc",
      "wilco_dtc_supportd/ec_constants_test.cc",
      "wilco_dtc_supportd/fake_browser.cc",
      "wilco_dtc_supportd/fake_wilco_dtc.cc",
      "wilco_dtc_supportd/fake_wilco_dtc_supportd_routine_factory.cc",
      "wilco_dtc_supportd/mock_mojom_wilco_dtc_supportd_client.cc",
      "wilco_dtc_supportd/mojo_test_utils.cc",
      "wilco_dtc_supportd/mojo_utils_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_core_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_dbus_service_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_ec_event_service_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_grpc_service_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_mojo_service_test.cc",
      "wilco_dtc_supportd/wilco_dtc_supportd_routine_service_test.cc",
    ]
  }

  pkg_config("libdiag_test_pkg_deps") {
    pkg_deps = [
      "libchrome-${libbase_ver}",
      "libchrome-test-${libbase_ver}",
    ]
  }

  executable("libdiag_test") {
    configs += [
      "//common-mk:test",
      ":libdiag_test_pkg_deps",
    ]
    deps = [
      ":libdiag",
      "../common-mk/testrunner:testrunner",
    ]
    sources = [
      "diag/diag_routine_requester_test.cc",
    ]
  }

  pkg_config("libtelem_test_pkg_deps") {
    pkg_deps = [
      "libchrome-${libbase_ver}",
      "libchrome-test-${libbase_ver}",
    ]
  }

  executable("libtelem_test") {
    configs += [
      "//common-mk:test",
      ":libtelem_test_pkg_deps",
    ]
    deps = [
      ":libtelem",
      "../common-mk/testrunner:testrunner",
    ]
    sources = [
      "common/file_test_utils.cc",
      "telem/telem_cache_test.cc",
      "telem/telem_parsers_test.cc",
      "telem/telemetry_test.cc",
    ]
  }

  pkg_config("routine_test_pkg_deps") {
    pkg_deps = [
      "libchrome-${libbase_ver}",
      "libchrome-test-${libbase_ver}",
    ]
  }

  executable("routine_test") {
    configs += [
      "//common-mk:test",
      ":routine_test_pkg_deps",
    ]
    deps = [
      ":libdiag_routine",
      "../common-mk/testrunner:testrunner",
    ]
    sources = [
      "common/file_test_utils.cc",
      "routines/battery/battery_test.cc",
      "routines/battery_sysfs/battery_sysfs_test.cc",
      "routines/smartctl_check/smartctl_check_utils.cc",
      "routines/smartctl_check/smartctl_check_utils_test.cc",
      "routines/subproc_routine_test.cc",
    ]
  }
}
