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