xref: /aosp_15_r20/external/pigweed/pw_kvs/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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