# 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. include($ENV{PW_ROOT}/pw_build/pigweed.cmake) pw_add_module_config(pw_kvs_CONFIG) pw_add_library(pw_kvs.config INTERFACE HEADERS pw_kvs_private/config.h PUBLIC_DEPS ${pw_kvs_CONFIG} ) pw_add_library(pw_kvs STATIC HEADERS 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 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 PUBLIC_INCLUDES public PUBLIC_DEPS pw_assert pw_bytes pw_bytes.alignment pw_containers pw_span pw_status pw_stream SOURCES alignment.cc checksum.cc entry.cc entry_cache.cc flash_memory.cc format.cc key_value_store.cc sectors.cc PRIVATE_DEPS pw_checksum pw_kvs.config pw_log ) pw_add_library(pw_kvs.crc16 INTERFACE HEADERS public/pw_kvs/crc16_checksum.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_checksum pw_kvs pw_span ) pw_add_library(pw_kvs.flash_test_partition INTERFACE HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs ) pw_add_library(pw_kvs.test_key_value_store INTERFACE HEADERS public/pw_kvs/test_key_value_store.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs pw_sync.borrow ) pw_add_library(pw_kvs.fake_flash STATIC HEADERS public/pw_kvs/fake_flash_memory.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_containers pw_kvs pw_status SOURCES fake_flash_memory.cc PRIVATE_DEPS pw_kvs.config pw_log ) pw_add_library(pw_kvs.flash_partition_with_logical_sectors INTERFACE HEADERS public/pw_kvs/flash_partition_with_logical_sectors.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs ) pw_add_library(pw_kvs.fake_flash_12_byte_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs PRIVATE_DEFINES PW_FLASH_TEST_SECTORS=3 PW_FLASH_TEST_SECTOR_SIZE=4 PW_FLASH_TEST_ALIGNMENT=4 ) pw_add_library(pw_kvs.fake_flash_1_aligned_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs PRIVATE_DEFINES PW_FLASH_TEST_SECTORS=6U PW_FLASH_TEST_SECTOR_SIZE=4096U PW_FLASH_TEST_ALIGNMENT=1U ) pw_add_library(pw_kvs.fake_flash_1_aligned_4_logical_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_logical_sector_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.flash_partition_with_logical_sectors pw_kvs PRIVATE_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_add_library(pw_kvs.fake_flash_16_aligned_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs PRIVATE_DEFINES PW_FLASH_TEST_SECTORS=6U PW_FLASH_TEST_SECTOR_SIZE=4096U PW_FLASH_TEST_ALIGNMENT=16U ) pw_add_library(pw_kvs.fake_flash_64_aligned_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs PRIVATE_DEFINES PW_FLASH_TEST_SECTORS=6U PW_FLASH_TEST_SECTOR_SIZE=4096U PW_FLASH_TEST_ALIGNMENT=64U ) pw_add_library(pw_kvs.fake_flash_256_aligned_partition STATIC HEADERS public/pw_kvs/flash_test_partition.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs.flash_test_partition SOURCES fake_flash_test_partition.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs PRIVATE_DEFINES PW_FLASH_TEST_SECTORS=6U PW_FLASH_TEST_SECTOR_SIZE=4096U PW_FLASH_TEST_ALIGNMENT=256U ) pw_add_library(pw_kvs.fake_flash_test_key_value_store STATIC SOURCES fake_flash_test_key_value_store.cc PRIVATE_DEPS pw_kvs pw_kvs.crc16 pw_kvs.fake_flash pw_kvs.test_key_value_store ) pw_add_library(pw_kvs.flash_partition_stream_test STATIC HEADERS public/pw_kvs/flash_memory.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_sync.borrow pw_bytes pw_kvs pw_polyfill pw_preprocessor pw_status pw_stream SOURCES flash_partition_stream_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.fake_flash pw_kvs.flash_test_partition pw_kvs pw_log pw_random pw_unit_test ) pw_add_library(pw_kvs.flash_partition_test_100_iterations STATIC SOURCES flash_partition_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.flash_test_partition pw_kvs pw_log pw_unit_test PRIVATE_DEFINES PW_FLASH_TEST_ITERATIONS=100 PW_FLASH_TEST_WRITE_SIZE=1 ) pw_add_library(pw_kvs.flash_partition_test_2_iterations STATIC SOURCES flash_partition_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.flash_test_partition pw_kvs pw_log pw_unit_test PRIVATE_DEFINES PW_FLASH_TEST_ITERATIONS=2 PW_FLASH_TEST_WRITE_SIZE=1 ) pw_add_library(pw_kvs.flash_partition_test_100_iterations_256_write STATIC SOURCES flash_partition_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.flash_test_partition pw_kvs pw_log pw_unit_test PRIVATE_DEFINES PW_FLASH_TEST_ITERATIONS=100 PW_FLASH_TEST_WRITE_SIZE=256 ) pw_add_library(pw_kvs.flash_partition_test_2_iterations_256_write STATIC SOURCES flash_partition_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.flash_test_partition pw_kvs pw_log pw_unit_test PRIVATE_DEFINES PW_FLASH_TEST_ITERATIONS=2 PW_FLASH_TEST_WRITE_SIZE=256 ) pw_add_library(pw_kvs.key_value_store_initialized_test STATIC SOURCES key_value_store_initialized_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs.flash_test_partition pw_kvs pw_string.builder pw_bytes pw_checksum pw_log pw_unit_test ) pw_add_library(pw_kvs.key_value_store_fuzz_test STATIC SOURCES key_value_store_fuzz_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.crc16 pw_kvs.flash_test_partition pw_kvs pw_string.builder pw_bytes pw_checksum pw_log pw_unit_test ) pw_add_library(pw_kvs.test_key_value_store_test STATIC SOURCES test_key_value_store_test.cc PRIVATE_DEPS pw_kvs pw_kvs.test_key_value_store pw_string.builder pw_sync.borrow pw_unit_test ) pw_add_library(pw_kvs.test_partition STATIC HEADERS public/pw_kvs/flash_partition_with_stats.h PUBLIC_INCLUDES public PUBLIC_DEPS pw_kvs pw_log pw_status SOURCES flash_partition_with_stats.cc PRIVATE_DEPS pw_kvs.config ) pw_add_test(pw_kvs.alignment_test SOURCES alignment_test.cc PRIVATE_DEPS pw_kvs GROUPS modules pw_kvs ) pw_add_test(pw_kvs.checksum_test SOURCES checksum_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.converts_to_span_test SOURCES converts_to_span_test.cc PRIVATE_DEPS pw_kvs GROUPS modules pw_kvs ) pw_add_test(pw_kvs.entry_test SOURCES entry_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs.fake_flash pw_kvs pw_bytes GROUPS modules pw_kvs ) pw_add_test(pw_kvs.entry_cache_test SOURCES entry_cache_test.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs pw_bytes GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_1_stream_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_1_aligned_partition pw_kvs.flash_partition_stream_test pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_1_alignment_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_1_aligned_partition pw_kvs.flash_partition_test_100_iterations pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_1_alignment_4_logical_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_1_aligned_4_logical_partition pw_kvs.flash_partition_test_100_iterations pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_16_alignment_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_16_aligned_partition pw_kvs.flash_partition_test_100_iterations pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_64_alignment_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_64_aligned_partition pw_kvs.flash_partition_test_100_iterations pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_256_alignment_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_256_aligned_partition pw_kvs.flash_partition_test_100_iterations pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_256_write_size_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_1_aligned_partition pw_kvs.flash_partition_test_100_iterations_256_write pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.flash_partition_4_logical_256_write_size_test PRIVATE_DEPS pw_kvs.fake_flash pw_kvs.fake_flash_1_aligned_4_logical_partition pw_kvs.flash_partition_test_2_iterations_256_write pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_test SOURCES key_value_store_test.cc PRIVATE_DEPS pw_kvs.config pw_kvs.crc16 pw_kvs.fake_flash pw_kvs pw_string.builder pw_bytes pw_checksum pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_1_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_1_aligned_partition pw_kvs.key_value_store_initialized_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_1_alignment_4_logical_flash_test PRIVATE_DEPS pw_kvs.fake_flash_1_aligned_4_logical_partition pw_kvs.key_value_store_initialized_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_16_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_16_aligned_partition pw_kvs.key_value_store_initialized_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_64_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_64_aligned_partition pw_kvs.key_value_store_initialized_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_256_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_256_aligned_partition pw_kvs.key_value_store_initialized_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_fuzz_1_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_1_aligned_partition pw_kvs.key_value_store_fuzz_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_fuzz_64_alignment_flash_test PRIVATE_DEPS pw_kvs.fake_flash_64_aligned_partition pw_kvs.key_value_store_fuzz_test GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_binary_format_test SOURCES key_value_store_binary_format_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs.fake_flash pw_kvs pw_bytes pw_log GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_put_test SOURCES key_value_store_put_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs.fake_flash pw_kvs pw_kvs.test_partition GROUPS modules pw_kvs ) pw_add_test(pw_kvs.fake_flash_test_key_value_store_test PRIVATE_DEPS pw_kvs.fake_flash_test_key_value_store pw_kvs.test_key_value_store_test pw_sync.borrow GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_map_test SOURCES key_value_store_map_test.cc PRIVATE_DEPS pw_kvs.crc16 pw_kvs.fake_flash pw_kvs pw_kvs.test_partition pw_string.builder pw_checksum GROUPS modules pw_kvs ) pw_add_test(pw_kvs.sectors_test SOURCES sectors_test.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_test SOURCES key_test.cc PRIVATE_DEPS pw_kvs GROUPS modules pw_kvs ) pw_add_test(pw_kvs.key_value_store_wear_test SOURCES key_value_store_wear_test.cc PRIVATE_DEPS pw_kvs.fake_flash pw_kvs pw_kvs.test_partition pw_log GROUPS modules pw_kvs )