# Copyright 2019 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" ]
}

group("pw_containers") {
  public_deps = [
    ":algorithm",
    ":flat_map",
    ":intrusive_list",
    ":vector",
  ]
}

pw_source_set("algorithm") {
  public_configs = [ ":public_include_path" ]
  public = [
    "public/pw_containers/algorithm.h",
    "public/pw_containers/internal/algorithm_internal.h",
  ]
}

pw_source_set("filtered_view") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_containers/filtered_view.h" ]
}

pw_source_set("flat_map") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_containers/flat_map.h" ]
}

pw_source_set("iterator") {
  public_configs = [ ":public_include_path" ]
  public_deps = [ dir_pw_polyfill ]
  public = [ "public/pw_containers/iterator.h" ]
}

pw_source_set("to_array") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_containers/to_array.h" ]
}

pw_source_set("vector") {
  public_configs = [ ":public_include_path" ]
  public_deps = [ dir_pw_assert ]
  public = [ "public/pw_containers/vector.h" ]
}

pw_source_set("wrapped_iterator") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_containers/wrapped_iterator.h" ]
}

pw_source_set("intrusive_list") {
  public_configs = [ ":public_include_path" ]
  public = [
    "public/pw_containers/internal/intrusive_list_impl.h",
    "public/pw_containers/intrusive_list.h",
  ]
  sources = [ "intrusive_list.cc" ]
  deps = [ dir_pw_assert ]
}

pw_test_group("tests") {
  tests = [
    ":algorithm_test",
    ":filtered_view_test",
    ":flat_map_test",
    ":intrusive_list_test",
    ":to_array_test",
    ":vector_test",
    ":wrapped_iterator_test",
  ]
}

pw_test("algorithm_test") {
  sources = [ "algorithm_test.cc" ]
  deps = [
    ":algorithm",
    ":intrusive_list",
    ":vector",
    dir_pw_span,
  ]
}

pw_test("filtered_view_test") {
  sources = [ "filtered_view_test.cc" ]
  deps = [
    ":filtered_view",
    ":intrusive_list",
    dir_pw_span,
  ]
}

pw_test("flat_map_test") {
  sources = [ "flat_map_test.cc" ]
  deps = [ ":flat_map" ]
}

pw_test("to_array_test") {
  sources = [ "to_array_test.cc" ]
  deps = [ ":to_array" ]
}

pw_test("vector_test") {
  sources = [ "vector_test.cc" ]
  deps = [ ":vector" ]
}

pw_test("wrapped_iterator_test") {
  sources = [ "wrapped_iterator_test.cc" ]
  deps = [ ":wrapped_iterator" ]
}

pw_test("intrusive_list_test") {
  sources = [ "intrusive_list_test.cc" ]
  deps = [
    ":intrusive_list",
    "$dir_pw_preprocessor",
  ]
  negative_compilation_tests = true
}

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

pw_size_diff("containers_size_report") {
  title = "Pigweed containers size report"
  binaries = [
    {
      target = "size_report:linked_list_one_item"
      base = "size_report:base"
      label = "linked list one item"
    },
    {
      target = "size_report:linked_list_two_item"
      base = "size_report:base"
      label = "linked list two item"
    },
    {
      target = "size_report:linked_list_four_item"
      base = "size_report:base"
      label = "linked list four item"
    },
    {
      target = "size_report:intrusive_list_one_item"
      base = "size_report:base"
      label = "intrusive list one item"
    },
    {
      target = "size_report:intrusive_list_two_item"
      base = "size_report:base"
      label = "intrusive list two item"
    },
    {
      target = "size_report:intrusive_list_four_item"
      base = "size_report:base"
      label = "intrusive list four item"
    },
  ]
}
