# Copyright 2023 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

group("base") {
  public_deps = [ ":libdiagnostics_base" ]

  # TODO(b/328015642): Remove this public dependency.
  if (use.test || use.fuzzer) {
    public_deps += [ ":test_support" ]
  }
}

config("libdiagnostics_base_config") {
  use_test = use.test || use.fuzzer
  defines = [ "USE_TEST=${use_test}" ]
}

# Provides basic utilities for all the executables under //diagnostics.
shared_library("libdiagnostics_base") {
  sources = [
    "file_utils.cc",
    "mojo_utils.cc",
    "path_literal.cc",
  ]
  public_configs = [ ":libdiagnostics_base_config" ]
  public_pkg_deps = [
    "libbrillo",
    "libchrome",
    "libmojo",
  ]
  assert_no_deps = [
    "//diagnostics/bindings/*",
    "//diagnostics/constants/*",
    "//diagnostics/cros_health_tool/*",
    "//diagnostics/cros_healthd/*",
    "//diagnostics/mojom/*",
  ]
  install_path = "lib"
}

if (use.test || use.fuzzer) {
  source_set("test_support") {
    sources = [ "file_test_utils.cc" ]
    public_configs = [
      ":libdiagnostics_base_config",
      "//common-mk:test",
    ]
    public_pkg_deps = [ "libchrome" ]
    pkg_deps = [ "libbrillo" ]
    public_deps = [ ":libdiagnostics_base" ]
  }
}

if (use.test) {
  source_set("healthd_testrunner") {
    sources = [ "healthd_testrunner.cc" ]
    public_configs = [ "//common-mk:test" ]
    pkg_deps = [ "libmojo" ]
    public_deps = [ "//common-mk/testrunner:testrunner" ]
  }

  source_set("test") {
    sources = [
      "file_test_utils_test.cc",
      "file_utils_test.cc",
      "mojo_utils_test.cc",
      "path_literal_test.cc",
    ]
    pkg_deps = [
      "libchrome",
      "libmojo",
    ]
    deps = [
      ":healthd_testrunner",
      ":libdiagnostics_base",
      ":test_support",
    ]
  }
}
