# Copyright 2020 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

import("//build_overrides/pigweed.gni")

import("$dir_pw_bloat/bloat.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_docgen/docs.gni")
import("$dir_pw_unit_test/test.gni")

config("public_include_path") {
  include_dirs = [ "public" ]
}

pw_source_set("pw_ring_buffer") {
  public_configs = [ ":public_include_path" ]
  public_deps = [
    "$dir_pw_containers",
    "$dir_pw_result",
    "$dir_pw_span",
    "$dir_pw_status",
  ]
  sources = [ "prefixed_entry_ring_buffer.cc" ]
  public = [ "public/pw_ring_buffer/prefixed_entry_ring_buffer.h" ]
  deps = [
    "$dir_pw_assert:pw_assert",
    "$dir_pw_varint",
  ]

  # TODO: b/259746255 - Remove this when everything compiles with -Wconversion.
  configs = [ "$dir_pw_build:conversion_warnings" ]
}

pw_test_group("tests") {
  tests = [ ":prefixed_entry_ring_buffer_test" ]
}

pw_test("prefixed_entry_ring_buffer_test") {
  deps = [
    ":pw_ring_buffer",
    "$dir_pw_assert:pw_assert",
  ]
  sources = [ "prefixed_entry_ring_buffer_test.cc" ]
}

pw_doc_group("docs") {
  sources = [ "docs.rst" ]
  report_deps = [ ":ring_buffer_size" ]
}

pw_size_diff("ring_buffer_size") {
  title = "pw::ring_buffer::PrefixedEntryRingBuffer"

  binaries = [
    {
      target = "size_report:ring_buffer_simple"
      base = "$dir_pw_bloat:bloat_base"
      label = "Initialize single-reader ring buffer"
    },
    {
      target = "size_report:ring_buffer_multi"
      base = "$dir_pw_bloat:bloat_base"
      label = "Initialize multi-reader ring buffer"
    },
    {
      target = "size_report:ring_buffer_multi"
      base = "size_report:ring_buffer_simple"
      label = "Initialized multi-reader vs. single-reader"
    },
  ]
}
