• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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