# Copyright 2019 The Fuchsia 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("//build/unification/zx_library.gni")

config("includes") {
  include_dirs = [ "include" ]
}

source_set("cobalt-types-internal") {
  visibility = [
    ":*",
    "test:*",
  ]
  public = [ "include/cobalt-client/cpp/types_internal.h" ]
  public_deps = [ "//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt_llcpp" ]
  public_configs = [ ":includes" ]
  sources = [ "include/cobalt-client/cpp/metric_options.h" ]
}

source_set("cobalt-collector") {
  visibility = [
    ":*",
    "test:*",
  ]
  public = [
    "include/cobalt-client/cpp/collector.h",
    "include/cobalt-client/cpp/collector_internal.h",
  ]
  sources = [
    "cobalt_logger.cc",
    "collector.cc",
    "include/cobalt-client/cpp/counter_internal.h",
    "include/cobalt-client/cpp/histogram_internal.h",
    "include/cobalt-client/cpp/metric_options.h",
  ]
  public_deps = [
    ":cobalt-types-internal",
    "//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt_llcpp",
    "//sdk/lib/fit",
    "//zircon/public/lib/zx",
  ]
  deps = [ "//sdk/lib/fdio" ]
  public_configs = [ ":includes" ]
}

source_set("cobalt-metrics") {
  visibility = [
    ":*",
    "test:*",
  ]
  public = [
    "include/cobalt-client/cpp/counter.h",
    "include/cobalt-client/cpp/counter_internal.h",
    "include/cobalt-client/cpp/histogram.h",
    "include/cobalt-client/cpp/histogram_internal.h",
    "include/cobalt-client/cpp/integer.h",
    "include/cobalt-client/cpp/metric_options.h",
  ]
  sources = [
    "counter.cc",
    "histogram.cc",
    "integer.cc",
  ]
  public_deps = [
    ":cobalt-collector",
    ":cobalt-types-internal",
  ]
  public_configs = [ ":includes" ]
}

group("cobalt-client") {
  public_deps = [
    ":cobalt-collector",
    ":cobalt-metrics",
  ]
}

# This library may only be imported from tests.
zx_library("in-memory-logger") {
  sdk = "source"
  sdk_headers = [ "cobalt-client/cpp/in_memory_logger.h" ]
  testonly = true
  sources = [ "in_memory_logger.cc" ]
  public_deps = [ ":cobalt-metrics" ]
  deps = [
    ":cobalt-types-internal",
    "//sdk/fidl/fuchsia.cobalt:fuchsia.cobalt_llcpp",
    "//sdk/lib/fit",
    "//zircon/public/lib/zx",
  ]
}

group("tests") {
  testonly = true
  deps = [ "test:tests" ]
}
