# 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",
    "//zircon/public/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/metric_options.h",
  ]
  sources = [
    "counter.cc",
    "histogram.cc",
  ]
  public_deps = [
    ":cobalt-collector",
    ":cobalt-types-internal",
  ]
  public_configs = [ ":includes" ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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",
    "//zircon/public/lib/fit",
    "//zircon/public/lib/zx",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

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