# 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/module_config.gni")
import("$dir_pw_build/target_types.gni")
import("$dir_pw_docgen/docs.gni")
import("$dir_pw_toolchain/generate_toolchain.gni")
import("$dir_pw_unit_test/test.gni")

declare_args() {
  # The build target that overrides the default configuration options for this
  # module. This should point to a source set that provides defines through a
  # public config (which may -include a file or add defines directly).
  pw_kvs_CONFIG = pw_build_DEFAULT_MODULE_CONFIG
}

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

pw_source_set("pw_kvs") {
  public_configs = [ ":public_include_path" ]
  public = [
    "public/pw_kvs/alignment.h",
    "public/pw_kvs/checksum.h",
    "public/pw_kvs/flash_memory.h",
    "public/pw_kvs/flash_test_partition.h",
    "public/pw_kvs/format.h",
    "public/pw_kvs/io.h",
    "public/pw_kvs/key.h",
    "public/pw_kvs/key_value_store.h",
  ]
  sources = [
    "alignment.cc",
    "checksum.cc",
    "entry.cc",
    "entry_cache.cc",
    "flash_memory.cc",
    "format.cc",
    "key_value_store.cc",
    "public/pw_kvs/internal/entry.h",
    "public/pw_kvs/internal/entry_cache.h",
    "public/pw_kvs/internal/hash.h",
    "public/pw_kvs/internal/key_descriptor.h",
    "public/pw_kvs/internal/sectors.h",
    "public/pw_kvs/internal/span_traits.h",
    "sectors.cc",
  ]
  public_deps = [
    "$dir_pw_bytes:alignment",
    dir_pw_assert,
    dir_pw_bytes,
    dir_pw_containers,
    dir_pw_span,
    dir_pw_status,
    dir_pw_stream,
  ]
  deps = [
    ":config",
    dir_pw_checksum,
    dir_pw_log,
  ]
  friend = [ ":*" ]
}

pw_source_set("config") {
  public_deps = [ pw_kvs_CONFIG ]
  public = [ "pw_kvs_private/config.h" ]
  visibility = [ ":*" ]
}

pw_source_set("crc16") {
  public = [ "public/pw_kvs/crc16_checksum.h" ]
  public_deps = [
    ":pw_kvs",
    dir_pw_checksum,
    dir_pw_span,
  ]
}

pw_source_set("flash_test_partition") {
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  public_deps = [ ":pw_kvs" ]
}

pw_source_set("test_key_value_store") {
  public = [ "public/pw_kvs/test_key_value_store.h" ]
  public_deps = [
    ":pw_kvs",
    "$dir_pw_sync:borrow",
  ]
}

pw_source_set("fake_flash") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/fake_flash_memory.h" ]
  sources = [ "fake_flash_memory.cc" ]
  public_deps = [
    dir_pw_containers,
    dir_pw_kvs,
    dir_pw_status,
  ]
  deps = [
    ":config",
    dir_pw_log,
  ]
}

pw_source_set("flash_partition_with_logical_sectors") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_partition_with_logical_sectors.h" ]
  public_deps = [ dir_pw_kvs ]
  deps = [ ":config" ]
}

pw_source_set("fake_flash_12_byte_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=3",
    "PW_FLASH_TEST_SECTOR_SIZE=4",
    "PW_FLASH_TEST_ALIGNMENT=4",
  ]
}

pw_source_set("fake_flash_1_aligned_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=6U",
    "PW_FLASH_TEST_SECTOR_SIZE=4096U",
    "PW_FLASH_TEST_ALIGNMENT=1U",
  ]
}

pw_source_set("fake_flash_16_aligned_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=6U",
    "PW_FLASH_TEST_SECTOR_SIZE=4096U",
    "PW_FLASH_TEST_ALIGNMENT=16U",
  ]
}

pw_source_set("fake_flash_64_aligned_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=6U",
    "PW_FLASH_TEST_SECTOR_SIZE=4096U",
    "PW_FLASH_TEST_ALIGNMENT=64U",
  ]
}

pw_source_set("fake_flash_256_aligned_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=6U",
    "PW_FLASH_TEST_SECTOR_SIZE=4096U",
    "PW_FLASH_TEST_ALIGNMENT=256U",
  ]
}

pw_source_set("fake_flash_1_aligned_4_logical_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_test_partition.h" ]
  sources = [ "fake_flash_test_logical_sector_partition.cc" ]
  public_deps = [ ":flash_test_partition" ]
  deps = [
    ":fake_flash",
    ":flash_partition_with_logical_sectors",
    dir_pw_kvs,
  ]
  defines = [
    "PW_FLASH_TEST_SECTORS=24U",
    "PW_FLASH_TEST_SECTOR_SIZE=4096U",
    "PW_FLASH_TEST_ALIGNMENT=1U",
    "PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR=4U",
  ]
}

pw_source_set("fake_flash_test_key_value_store") {
  public_configs = [ ":public_include_path" ]
  sources = [ "fake_flash_test_key_value_store.cc" ]
  public_deps = [ ":test_key_value_store" ]
  deps = [
    ":crc16",
    ":fake_flash",
    dir_pw_kvs,
  ]
}

pw_source_set("flash_partition_stream_test") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_memory.h" ]
  sources = [ "flash_partition_stream_test.cc" ]
  public_deps = [
    "$dir_pw_sync:borrow",
    dir_pw_bytes,
    dir_pw_kvs,
    dir_pw_polyfill,
    dir_pw_preprocessor,
    dir_pw_status,
    dir_pw_stream,
  ]
  deps = [
    ":config",
    ":fake_flash",
    ":flash_test_partition",
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_random,
    dir_pw_unit_test,
  ]
}

pw_source_set("flash_partition_test_100_iterations") {
  deps = [
    ":config",
    ":flash_test_partition",
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "flash_partition_test.cc" ]
  defines = [
    "PW_FLASH_TEST_ITERATIONS=100",
    "PW_FLASH_TEST_WRITE_SIZE=1",
  ]
}

pw_source_set("flash_partition_test_2_iterations") {
  deps = [
    ":config",
    ":flash_test_partition",
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "flash_partition_test.cc" ]
  defines = [
    "PW_FLASH_TEST_ITERATIONS=2",
    "PW_FLASH_TEST_WRITE_SIZE=1",
  ]
}

pw_source_set("flash_partition_test_100_iterations_256_write") {
  deps = [
    ":config",
    ":flash_test_partition",
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "flash_partition_test.cc" ]
  defines = [
    "PW_FLASH_TEST_ITERATIONS=100",
    "PW_FLASH_TEST_WRITE_SIZE=256",
  ]
}

pw_source_set("flash_partition_test_2_iterations_256_write") {
  deps = [
    ":config",
    ":flash_test_partition",
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "flash_partition_test.cc" ]
  defines = [
    "PW_FLASH_TEST_ITERATIONS=2",
    "PW_FLASH_TEST_WRITE_SIZE=256",
  ]
}

pw_source_set("key_value_store_initialized_test") {
  deps = [
    ":crc16",
    ":flash_test_partition",
    ":pw_kvs",
    "$dir_pw_string:builder",
    dir_pw_bytes,
    dir_pw_checksum,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "key_value_store_initialized_test.cc" ]
}

pw_source_set("key_value_store_fuzz_test") {
  deps = [
    ":config",
    ":crc16",
    ":flash_test_partition",
    ":pw_kvs",
    "$dir_pw_string:builder",
    dir_pw_bytes,
    dir_pw_checksum,
    dir_pw_log,
    dir_pw_unit_test,
  ]
  sources = [ "key_value_store_fuzz_test.cc" ]
}

pw_source_set("test_key_value_store_test") {
  deps = [
    ":pw_kvs",
    ":test_key_value_store",
    "$dir_pw_string:builder",
    "$dir_pw_sync:borrow",
    dir_pw_unit_test,
  ]
  sources = [ "test_key_value_store_test.cc" ]
}

pw_source_set("test_partition") {
  public_configs = [ ":public_include_path" ]
  public = [ "public/pw_kvs/flash_partition_with_stats.h" ]
  sources = [ "flash_partition_with_stats.cc" ]
  visibility = [ ":*" ]
  public_deps = [
    dir_pw_kvs,
    dir_pw_log,
    dir_pw_status,
  ]
  deps = [ ":config" ]
}

pw_test_group("tests") {
  tests = [
    ":alignment_test",
    ":checksum_test",
    ":converts_to_span_test",
    ":key_test",
  ]

  if (defined(pw_toolchain_SCOPE.is_host_toolchain) &&
      pw_toolchain_SCOPE.is_host_toolchain) {
    # TODO: b/234883746 - KVS tests are not compatible with device builds as they
    # use features such as std::map and are computationally expensive. Solving
    # this requires a more complex capabilities-based build and configuration
    # system which allowing enabling specific tests for targets that support
    # them and modifying test parameters for different targets.

    tests += [
      ":entry_test",
      ":entry_cache_test",
      ":flash_partition_1_stream_test",
      ":flash_partition_4_logical_stream_test",
      ":flash_partition_1_alignment_test",
      ":flash_partition_1_alignment_4_logical_test",
      ":flash_partition_16_alignment_test",
      ":flash_partition_64_alignment_test",
      ":flash_partition_256_alignment_test",
      ":flash_partition_256_write_size_test",
      ":flash_partition_4_logical_256_write_size_test",
      ":key_value_store_test",
      ":key_value_store_1_alignment_flash_test",
      ":key_value_store_1_alignment_4_logical_flash_test",
      ":key_value_store_16_alignment_flash_test",
      ":key_value_store_64_alignment_flash_test",
      ":key_value_store_256_alignment_flash_test",
      ":key_value_store_fuzz_1_alignment_flash_test",
      ":key_value_store_fuzz_64_alignment_flash_test",
      ":key_value_store_binary_format_test",
      ":key_value_store_put_test",
      ":key_value_store_map_test",
      ":key_value_store_wear_test",
      ":fake_flash_test_key_value_store_test",
      ":sectors_test",
    ]
  }
}

pw_test("alignment_test") {
  deps = [ ":pw_kvs" ]
  sources = [ "alignment_test.cc" ]
}

pw_test("checksum_test") {
  deps = [
    ":crc16",
    ":pw_kvs",
    dir_pw_log,
  ]
  sources = [ "checksum_test.cc" ]
}

pw_test("converts_to_span_test") {
  deps = [ ":pw_kvs" ]
  sources = [ "converts_to_span_test.cc" ]
}

pw_test("entry_test") {
  deps = [
    ":crc16",
    ":fake_flash",
    ":pw_kvs",
    dir_pw_bytes,
  ]
  sources = [ "entry_test.cc" ]
}

pw_test("entry_cache_test") {
  deps = [
    ":fake_flash",
    ":pw_kvs",
    dir_pw_bytes,
  ]
  sources = [ "entry_cache_test.cc" ]
}

pw_test("flash_partition_1_stream_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_partition",
    ":flash_partition_stream_test",
    dir_pw_log,
  ]
}

pw_test("flash_partition_4_logical_stream_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_4_logical_partition",
    ":flash_partition_stream_test",
    dir_pw_log,
  ]
}

pw_test("flash_partition_1_alignment_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_partition",
    ":flash_partition_test_100_iterations",
    dir_pw_log,
  ]
}

pw_test("flash_partition_1_alignment_4_logical_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_4_logical_partition",
    ":flash_partition_test_2_iterations",
    dir_pw_log,
  ]
}

pw_test("flash_partition_16_alignment_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_16_aligned_partition",
    ":flash_partition_test_100_iterations",
    dir_pw_log,
  ]
}

pw_test("flash_partition_64_alignment_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_64_aligned_partition",
    ":flash_partition_test_100_iterations",
    dir_pw_log,
  ]
}

pw_test("flash_partition_256_alignment_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_256_aligned_partition",
    ":flash_partition_test_100_iterations",
    dir_pw_log,
  ]
}

pw_test("flash_partition_256_write_size_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_partition",
    ":flash_partition_test_100_iterations_256_write",
    dir_pw_log,
  ]
}

pw_test("flash_partition_4_logical_256_write_size_test") {
  deps = [
    ":fake_flash",
    ":fake_flash_1_aligned_4_logical_partition",
    ":flash_partition_test_2_iterations_256_write",
    dir_pw_log,
  ]
}

pw_test("key_value_store_test") {
  deps = [
    ":config",
    ":crc16",
    ":fake_flash",
    ":pw_kvs",
    "$dir_pw_string:builder",
    dir_pw_bytes,
    dir_pw_checksum,
    dir_pw_log,
  ]
  sources = [ "key_value_store_test.cc" ]
}

pw_test("key_value_store_1_alignment_flash_test") {
  deps = [
    ":fake_flash_1_aligned_partition",
    ":key_value_store_initialized_test",
  ]
}

pw_test("key_value_store_1_alignment_4_logical_flash_test") {
  deps = [
    ":fake_flash_1_aligned_4_logical_partition",
    ":key_value_store_initialized_test",
  ]
}

pw_test("key_value_store_16_alignment_flash_test") {
  deps = [
    ":fake_flash_16_aligned_partition",
    ":key_value_store_initialized_test",
  ]
}

pw_test("key_value_store_64_alignment_flash_test") {
  deps = [
    ":fake_flash_64_aligned_partition",
    ":key_value_store_initialized_test",
  ]
}

pw_test("key_value_store_256_alignment_flash_test") {
  deps = [
    ":fake_flash_256_aligned_partition",
    ":key_value_store_initialized_test",
  ]
}

pw_test("key_value_store_fuzz_1_alignment_flash_test") {
  deps = [
    ":fake_flash_1_aligned_partition",
    ":key_value_store_fuzz_test",
  ]
}

pw_test("key_value_store_fuzz_64_alignment_flash_test") {
  deps = [
    ":fake_flash_64_aligned_partition",
    ":key_value_store_fuzz_test",
  ]
}

pw_test("key_value_store_binary_format_test") {
  deps = [
    ":crc16",
    ":fake_flash",
    ":pw_kvs",
    dir_pw_bytes,
    dir_pw_log,
  ]
  sources = [ "key_value_store_binary_format_test.cc" ]
}

pw_test("key_value_store_put_test") {
  deps = [
    ":crc16",
    ":fake_flash",
    ":pw_kvs",
    ":test_partition",
  ]
  sources = [ "key_value_store_put_test.cc" ]
}

pw_test("fake_flash_test_key_value_store_test") {
  deps = [
    ":fake_flash_test_key_value_store",
    ":test_key_value_store_test",
    "$dir_pw_sync:borrow",
  ]
}

pw_test("key_value_store_map_test") {
  deps = [
    ":crc16",
    ":fake_flash",
    ":pw_kvs",
    ":test_partition",
    "$dir_pw_string:builder",
    dir_pw_checksum,
  ]
  sources = [ "key_value_store_map_test.cc" ]
}

pw_test("sectors_test") {
  deps = [
    ":fake_flash",
    ":pw_kvs",
  ]
  sources = [ "sectors_test.cc" ]
}

pw_test("key_test") {
  deps = [ ":pw_kvs" ]
  sources = [ "key_test.cc" ]
}

pw_test("key_value_store_wear_test") {
  deps = [
    ":fake_flash",
    ":pw_kvs",
    ":test_partition",
    dir_pw_log,
  ]
  sources = [ "key_value_store_wear_test.cc" ]
}

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

pw_size_diff("kvs_size") {
  title = "Pigweed KVS size report"

  binaries = [
    {
      target = "size_report:with_kvs"
      base = "size_report:base_with_only_flash"
      label = "KeyValueStore"
    },
  ]

  binaries += [
    {
      target = "size_report:base_with_only_flash"
      base = "size_report:base"
      label = "FlashPartition"
    },
  ]
}
