1# Copyright 2020 The Pigweed Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4# use this file except in compliance with the License. You may obtain a copy of 5# the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12# License for the specific language governing permissions and limitations under 13# the License. 14 15include($ENV{PW_ROOT}/pw_build/pigweed.cmake) 16 17pw_add_module_config(pw_kvs_CONFIG) 18 19pw_add_library(pw_kvs.config INTERFACE 20 HEADERS 21 pw_kvs_private/config.h 22 PUBLIC_DEPS 23 ${pw_kvs_CONFIG} 24) 25 26pw_add_library(pw_kvs STATIC 27 HEADERS 28 public/pw_kvs/alignment.h 29 public/pw_kvs/checksum.h 30 public/pw_kvs/flash_memory.h 31 public/pw_kvs/flash_test_partition.h 32 public/pw_kvs/format.h 33 public/pw_kvs/io.h 34 public/pw_kvs/key.h 35 public/pw_kvs/key_value_store.h 36 public/pw_kvs/internal/entry.h 37 public/pw_kvs/internal/entry_cache.h 38 public/pw_kvs/internal/hash.h 39 public/pw_kvs/internal/key_descriptor.h 40 public/pw_kvs/internal/sectors.h 41 public/pw_kvs/internal/span_traits.h 42 PUBLIC_INCLUDES 43 public 44 PUBLIC_DEPS 45 pw_assert 46 pw_bytes 47 pw_bytes.alignment 48 pw_containers 49 pw_span 50 pw_status 51 pw_stream 52 SOURCES 53 alignment.cc 54 checksum.cc 55 entry.cc 56 entry_cache.cc 57 flash_memory.cc 58 format.cc 59 key_value_store.cc 60 sectors.cc 61 PRIVATE_DEPS 62 pw_checksum 63 pw_kvs.config 64 pw_log 65) 66 67pw_add_library(pw_kvs.crc16 INTERFACE 68 HEADERS 69 public/pw_kvs/crc16_checksum.h 70 PUBLIC_INCLUDES 71 public 72 PUBLIC_DEPS 73 pw_checksum 74 pw_kvs 75 pw_span 76) 77 78pw_add_library(pw_kvs.flash_test_partition INTERFACE 79 HEADERS 80 public/pw_kvs/flash_test_partition.h 81 PUBLIC_INCLUDES 82 public 83 PUBLIC_DEPS 84 pw_kvs 85) 86 87pw_add_library(pw_kvs.test_key_value_store INTERFACE 88 HEADERS 89 public/pw_kvs/test_key_value_store.h 90 PUBLIC_INCLUDES 91 public 92 PUBLIC_DEPS 93 pw_kvs 94 pw_sync.borrow 95) 96 97pw_add_library(pw_kvs.fake_flash STATIC 98 HEADERS 99 public/pw_kvs/fake_flash_memory.h 100 PUBLIC_INCLUDES 101 public 102 PUBLIC_DEPS 103 pw_containers 104 pw_kvs 105 pw_status 106 SOURCES 107 fake_flash_memory.cc 108 PRIVATE_DEPS 109 pw_kvs.config 110 pw_log 111) 112 113pw_add_library(pw_kvs.flash_partition_with_logical_sectors INTERFACE 114 HEADERS 115 public/pw_kvs/flash_partition_with_logical_sectors.h 116 PUBLIC_INCLUDES 117 public 118 PUBLIC_DEPS 119 pw_kvs 120) 121 122pw_add_library(pw_kvs.fake_flash_12_byte_partition STATIC 123 HEADERS 124 public/pw_kvs/flash_test_partition.h 125 PUBLIC_INCLUDES 126 public 127 PUBLIC_DEPS 128 pw_kvs.flash_test_partition 129 SOURCES 130 fake_flash_test_partition.cc 131 PRIVATE_DEPS 132 pw_kvs.fake_flash 133 pw_kvs 134 PRIVATE_DEFINES 135 PW_FLASH_TEST_SECTORS=3 136 PW_FLASH_TEST_SECTOR_SIZE=4 137 PW_FLASH_TEST_ALIGNMENT=4 138) 139 140pw_add_library(pw_kvs.fake_flash_1_aligned_partition STATIC 141 HEADERS 142 public/pw_kvs/flash_test_partition.h 143 PUBLIC_INCLUDES 144 public 145 PUBLIC_DEPS 146 pw_kvs.flash_test_partition 147 SOURCES 148 fake_flash_test_partition.cc 149 PRIVATE_DEPS 150 pw_kvs.fake_flash 151 pw_kvs 152 PRIVATE_DEFINES 153 PW_FLASH_TEST_SECTORS=6U 154 PW_FLASH_TEST_SECTOR_SIZE=4096U 155 PW_FLASH_TEST_ALIGNMENT=1U 156) 157 158pw_add_library(pw_kvs.fake_flash_1_aligned_4_logical_partition STATIC 159 HEADERS 160 public/pw_kvs/flash_test_partition.h 161 PUBLIC_INCLUDES 162 public 163 PUBLIC_DEPS 164 pw_kvs.flash_test_partition 165 SOURCES 166 fake_flash_test_logical_sector_partition.cc 167 PRIVATE_DEPS 168 pw_kvs.fake_flash 169 pw_kvs.flash_partition_with_logical_sectors 170 pw_kvs 171 PRIVATE_DEFINES 172 PW_FLASH_TEST_SECTORS=24U 173 PW_FLASH_TEST_SECTOR_SIZE=4096U 174 PW_FLASH_TEST_ALIGNMENT=1U 175 PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR=4U 176) 177 178pw_add_library(pw_kvs.fake_flash_16_aligned_partition STATIC 179 HEADERS 180 public/pw_kvs/flash_test_partition.h 181 PUBLIC_INCLUDES 182 public 183 PUBLIC_DEPS 184 pw_kvs.flash_test_partition 185 SOURCES 186 fake_flash_test_partition.cc 187 PRIVATE_DEPS 188 pw_kvs.fake_flash 189 pw_kvs 190 PRIVATE_DEFINES 191 PW_FLASH_TEST_SECTORS=6U 192 PW_FLASH_TEST_SECTOR_SIZE=4096U 193 PW_FLASH_TEST_ALIGNMENT=16U 194) 195 196pw_add_library(pw_kvs.fake_flash_64_aligned_partition STATIC 197 HEADERS 198 public/pw_kvs/flash_test_partition.h 199 PUBLIC_INCLUDES 200 public 201 PUBLIC_DEPS 202 pw_kvs.flash_test_partition 203 SOURCES 204 fake_flash_test_partition.cc 205 PRIVATE_DEPS 206 pw_kvs.fake_flash 207 pw_kvs 208 PRIVATE_DEFINES 209 PW_FLASH_TEST_SECTORS=6U 210 PW_FLASH_TEST_SECTOR_SIZE=4096U 211 PW_FLASH_TEST_ALIGNMENT=64U 212) 213 214pw_add_library(pw_kvs.fake_flash_256_aligned_partition STATIC 215 HEADERS 216 public/pw_kvs/flash_test_partition.h 217 PUBLIC_INCLUDES 218 public 219 PUBLIC_DEPS 220 pw_kvs.flash_test_partition 221 SOURCES 222 fake_flash_test_partition.cc 223 PRIVATE_DEPS 224 pw_kvs.fake_flash 225 pw_kvs 226 PRIVATE_DEFINES 227 PW_FLASH_TEST_SECTORS=6U 228 PW_FLASH_TEST_SECTOR_SIZE=4096U 229 PW_FLASH_TEST_ALIGNMENT=256U 230) 231 232pw_add_library(pw_kvs.fake_flash_test_key_value_store STATIC 233 SOURCES 234 fake_flash_test_key_value_store.cc 235 PRIVATE_DEPS 236 pw_kvs 237 pw_kvs.crc16 238 pw_kvs.fake_flash 239 pw_kvs.test_key_value_store 240) 241 242pw_add_library(pw_kvs.flash_partition_stream_test STATIC 243 HEADERS 244 public/pw_kvs/flash_memory.h 245 PUBLIC_INCLUDES 246 public 247 PUBLIC_DEPS 248 pw_sync.borrow 249 pw_bytes 250 pw_kvs 251 pw_polyfill 252 pw_preprocessor 253 pw_status 254 pw_stream 255 SOURCES 256 flash_partition_stream_test.cc 257 PRIVATE_DEPS 258 pw_kvs.config 259 pw_kvs.fake_flash 260 pw_kvs.flash_test_partition 261 pw_kvs 262 pw_log 263 pw_random 264 pw_unit_test 265) 266 267pw_add_library(pw_kvs.flash_partition_test_100_iterations STATIC 268 SOURCES 269 flash_partition_test.cc 270 PRIVATE_DEPS 271 pw_kvs.config 272 pw_kvs.flash_test_partition 273 pw_kvs 274 pw_log 275 pw_unit_test 276 PRIVATE_DEFINES 277 PW_FLASH_TEST_ITERATIONS=100 278 PW_FLASH_TEST_WRITE_SIZE=1 279) 280 281pw_add_library(pw_kvs.flash_partition_test_2_iterations STATIC 282 SOURCES 283 flash_partition_test.cc 284 PRIVATE_DEPS 285 pw_kvs.config 286 pw_kvs.flash_test_partition 287 pw_kvs 288 pw_log 289 pw_unit_test 290 PRIVATE_DEFINES 291 PW_FLASH_TEST_ITERATIONS=2 292 PW_FLASH_TEST_WRITE_SIZE=1 293) 294 295pw_add_library(pw_kvs.flash_partition_test_100_iterations_256_write STATIC 296 SOURCES 297 flash_partition_test.cc 298 PRIVATE_DEPS 299 pw_kvs.config 300 pw_kvs.flash_test_partition 301 pw_kvs 302 pw_log 303 pw_unit_test 304 PRIVATE_DEFINES 305 PW_FLASH_TEST_ITERATIONS=100 306 PW_FLASH_TEST_WRITE_SIZE=256 307) 308 309pw_add_library(pw_kvs.flash_partition_test_2_iterations_256_write STATIC 310 SOURCES 311 flash_partition_test.cc 312 PRIVATE_DEPS 313 pw_kvs.config 314 pw_kvs.flash_test_partition 315 pw_kvs 316 pw_log 317 pw_unit_test 318 PRIVATE_DEFINES 319 PW_FLASH_TEST_ITERATIONS=2 320 PW_FLASH_TEST_WRITE_SIZE=256 321) 322 323pw_add_library(pw_kvs.key_value_store_initialized_test STATIC 324 SOURCES 325 key_value_store_initialized_test.cc 326 PRIVATE_DEPS 327 pw_kvs.crc16 328 pw_kvs.flash_test_partition 329 pw_kvs 330 pw_string.builder 331 pw_bytes 332 pw_checksum 333 pw_log 334 pw_unit_test 335) 336 337pw_add_library(pw_kvs.key_value_store_fuzz_test STATIC 338 SOURCES 339 key_value_store_fuzz_test.cc 340 PRIVATE_DEPS 341 pw_kvs.config 342 pw_kvs.crc16 343 pw_kvs.flash_test_partition 344 pw_kvs 345 pw_string.builder 346 pw_bytes 347 pw_checksum 348 pw_log 349 pw_unit_test 350) 351 352pw_add_library(pw_kvs.test_key_value_store_test STATIC 353 SOURCES 354 test_key_value_store_test.cc 355 PRIVATE_DEPS 356 pw_kvs 357 pw_kvs.test_key_value_store 358 pw_string.builder 359 pw_sync.borrow 360 pw_unit_test 361) 362 363pw_add_library(pw_kvs.test_partition STATIC 364 HEADERS 365 public/pw_kvs/flash_partition_with_stats.h 366 PUBLIC_INCLUDES 367 public 368 PUBLIC_DEPS 369 pw_kvs 370 pw_log 371 pw_status 372 SOURCES 373 flash_partition_with_stats.cc 374 PRIVATE_DEPS 375 pw_kvs.config 376) 377 378pw_add_test(pw_kvs.alignment_test 379 SOURCES 380 alignment_test.cc 381 PRIVATE_DEPS 382 pw_kvs 383 GROUPS 384 modules 385 pw_kvs 386) 387 388pw_add_test(pw_kvs.checksum_test 389 SOURCES 390 checksum_test.cc 391 PRIVATE_DEPS 392 pw_kvs.crc16 393 pw_kvs 394 pw_log 395 GROUPS 396 modules 397 pw_kvs 398) 399 400pw_add_test(pw_kvs.converts_to_span_test 401 SOURCES 402 converts_to_span_test.cc 403 PRIVATE_DEPS 404 pw_kvs 405 GROUPS 406 modules 407 pw_kvs 408) 409 410pw_add_test(pw_kvs.entry_test 411 SOURCES 412 entry_test.cc 413 PRIVATE_DEPS 414 pw_kvs.crc16 415 pw_kvs.fake_flash 416 pw_kvs 417 pw_bytes 418 GROUPS 419 modules 420 pw_kvs 421) 422 423pw_add_test(pw_kvs.entry_cache_test 424 SOURCES 425 entry_cache_test.cc 426 PRIVATE_DEPS 427 pw_kvs.fake_flash 428 pw_kvs 429 pw_bytes 430 GROUPS 431 modules 432 pw_kvs 433) 434 435pw_add_test(pw_kvs.flash_partition_1_stream_test 436 PRIVATE_DEPS 437 pw_kvs.fake_flash 438 pw_kvs.fake_flash_1_aligned_partition 439 pw_kvs.flash_partition_stream_test 440 pw_log 441 GROUPS 442 modules 443 pw_kvs 444) 445 446pw_add_test(pw_kvs.flash_partition_1_alignment_test 447 PRIVATE_DEPS 448 pw_kvs.fake_flash 449 pw_kvs.fake_flash_1_aligned_partition 450 pw_kvs.flash_partition_test_100_iterations 451 pw_log 452 GROUPS 453 modules 454 pw_kvs 455) 456 457pw_add_test(pw_kvs.flash_partition_1_alignment_4_logical_test 458 PRIVATE_DEPS 459 pw_kvs.fake_flash 460 pw_kvs.fake_flash_1_aligned_4_logical_partition 461 pw_kvs.flash_partition_test_100_iterations 462 pw_log 463 GROUPS 464 modules 465 pw_kvs 466) 467 468pw_add_test(pw_kvs.flash_partition_16_alignment_test 469 PRIVATE_DEPS 470 pw_kvs.fake_flash 471 pw_kvs.fake_flash_16_aligned_partition 472 pw_kvs.flash_partition_test_100_iterations 473 pw_log 474 GROUPS 475 modules 476 pw_kvs 477) 478 479pw_add_test(pw_kvs.flash_partition_64_alignment_test 480 PRIVATE_DEPS 481 pw_kvs.fake_flash 482 pw_kvs.fake_flash_64_aligned_partition 483 pw_kvs.flash_partition_test_100_iterations 484 pw_log 485 GROUPS 486 modules 487 pw_kvs 488) 489 490pw_add_test(pw_kvs.flash_partition_256_alignment_test 491 PRIVATE_DEPS 492 pw_kvs.fake_flash 493 pw_kvs.fake_flash_256_aligned_partition 494 pw_kvs.flash_partition_test_100_iterations 495 pw_log 496 GROUPS 497 modules 498 pw_kvs 499) 500 501pw_add_test(pw_kvs.flash_partition_256_write_size_test 502 PRIVATE_DEPS 503 pw_kvs.fake_flash 504 pw_kvs.fake_flash_1_aligned_partition 505 pw_kvs.flash_partition_test_100_iterations_256_write 506 pw_log 507 GROUPS 508 modules 509 pw_kvs 510) 511 512pw_add_test(pw_kvs.flash_partition_4_logical_256_write_size_test 513 PRIVATE_DEPS 514 pw_kvs.fake_flash 515 pw_kvs.fake_flash_1_aligned_4_logical_partition 516 pw_kvs.flash_partition_test_2_iterations_256_write 517 pw_log 518 GROUPS 519 modules 520 pw_kvs 521) 522 523pw_add_test(pw_kvs.key_value_store_test 524 SOURCES 525 key_value_store_test.cc 526 PRIVATE_DEPS 527 pw_kvs.config 528 pw_kvs.crc16 529 pw_kvs.fake_flash 530 pw_kvs 531 pw_string.builder 532 pw_bytes 533 pw_checksum 534 pw_log 535 GROUPS 536 modules 537 pw_kvs 538) 539 540pw_add_test(pw_kvs.key_value_store_1_alignment_flash_test 541 PRIVATE_DEPS 542 pw_kvs.fake_flash_1_aligned_partition 543 pw_kvs.key_value_store_initialized_test 544 GROUPS 545 modules 546 pw_kvs 547) 548 549pw_add_test(pw_kvs.key_value_store_1_alignment_4_logical_flash_test 550 PRIVATE_DEPS 551 pw_kvs.fake_flash_1_aligned_4_logical_partition 552 pw_kvs.key_value_store_initialized_test 553 GROUPS 554 modules 555 pw_kvs 556) 557 558pw_add_test(pw_kvs.key_value_store_16_alignment_flash_test 559 PRIVATE_DEPS 560 pw_kvs.fake_flash_16_aligned_partition 561 pw_kvs.key_value_store_initialized_test 562 GROUPS 563 modules 564 pw_kvs 565) 566 567pw_add_test(pw_kvs.key_value_store_64_alignment_flash_test 568 PRIVATE_DEPS 569 pw_kvs.fake_flash_64_aligned_partition 570 pw_kvs.key_value_store_initialized_test 571 GROUPS 572 modules 573 pw_kvs 574) 575 576pw_add_test(pw_kvs.key_value_store_256_alignment_flash_test 577 PRIVATE_DEPS 578 pw_kvs.fake_flash_256_aligned_partition 579 pw_kvs.key_value_store_initialized_test 580 GROUPS 581 modules 582 pw_kvs 583) 584 585pw_add_test(pw_kvs.key_value_store_fuzz_1_alignment_flash_test 586 PRIVATE_DEPS 587 pw_kvs.fake_flash_1_aligned_partition 588 pw_kvs.key_value_store_fuzz_test 589 GROUPS 590 modules 591 pw_kvs 592) 593 594pw_add_test(pw_kvs.key_value_store_fuzz_64_alignment_flash_test 595 PRIVATE_DEPS 596 pw_kvs.fake_flash_64_aligned_partition 597 pw_kvs.key_value_store_fuzz_test 598 GROUPS 599 modules 600 pw_kvs 601) 602 603pw_add_test(pw_kvs.key_value_store_binary_format_test 604 SOURCES 605 key_value_store_binary_format_test.cc 606 PRIVATE_DEPS 607 pw_kvs.crc16 608 pw_kvs.fake_flash 609 pw_kvs 610 pw_bytes 611 pw_log 612 GROUPS 613 modules 614 pw_kvs 615) 616 617pw_add_test(pw_kvs.key_value_store_put_test 618 SOURCES 619 key_value_store_put_test.cc 620 PRIVATE_DEPS 621 pw_kvs.crc16 622 pw_kvs.fake_flash 623 pw_kvs 624 pw_kvs.test_partition 625 GROUPS 626 modules 627 pw_kvs 628) 629 630pw_add_test(pw_kvs.fake_flash_test_key_value_store_test 631 PRIVATE_DEPS 632 pw_kvs.fake_flash_test_key_value_store 633 pw_kvs.test_key_value_store_test 634 pw_sync.borrow 635 GROUPS 636 modules 637 pw_kvs 638) 639 640pw_add_test(pw_kvs.key_value_store_map_test 641 SOURCES 642 key_value_store_map_test.cc 643 PRIVATE_DEPS 644 pw_kvs.crc16 645 pw_kvs.fake_flash 646 pw_kvs 647 pw_kvs.test_partition 648 pw_string.builder 649 pw_checksum 650 GROUPS 651 modules 652 pw_kvs 653) 654 655pw_add_test(pw_kvs.sectors_test 656 SOURCES 657 sectors_test.cc 658 PRIVATE_DEPS 659 pw_kvs.fake_flash 660 pw_kvs 661 GROUPS 662 modules 663 pw_kvs 664) 665 666pw_add_test(pw_kvs.key_test 667 SOURCES 668 key_test.cc 669 PRIVATE_DEPS 670 pw_kvs 671 GROUPS 672 modules 673 pw_kvs 674) 675 676pw_add_test(pw_kvs.key_value_store_wear_test 677 SOURCES 678 key_value_store_wear_test.cc 679 PRIVATE_DEPS 680 pw_kvs.fake_flash 681 pw_kvs 682 pw_kvs.test_partition 683 pw_log 684 GROUPS 685 modules 686 pw_kvs 687) 688