• 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
15load("@rules_cc//cc:cc_library.bzl", "cc_library")
16load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library")
17load("//pw_bloat:pw_size_diff.bzl", "pw_size_diff")
18load("//pw_bloat:pw_size_table.bzl", "pw_size_table")
19load("//pw_build:compatibility.bzl", "incompatible_with_mcu")
20load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
21
22package(default_visibility = ["//visibility:public"])
23
24licenses(["notice"])
25
26# Module configuration
27
28cc_library(
29    name = "config",
30    hdrs = ["public/pw_containers/config.h"],
31    strip_include_prefix = "public",
32    deps = [":config_override"],
33)
34
35label_flag(
36    name = "config_override",
37    build_setting_default = "//pw_build:default_module_config",
38)
39
40# Libraries
41
42cc_library(
43    name = "pw_containers",
44    deprecation = "Depend on the individual single-header targets instead",
45    # Tagged manual so that we don't hit the deprecation warning when building
46    # upstream Pigweed itself.
47    tags = ["manual"],
48    deps = [
49        ":algorithm",
50        ":flat_map",
51        ":inline_deque",
52        ":inline_queue",
53        ":intrusive_list",
54        ":vector",
55    ],
56)
57
58cc_library(
59    name = "algorithm",
60    hdrs = [
61        "public/pw_containers/algorithm.h",
62        "public/pw_containers/internal/algorithm_internal.h",
63    ],
64    strip_include_prefix = "public",
65)
66
67cc_library(
68    name = "intrusive_item",
69    srcs = ["intrusive_item.cc"],
70    hdrs = ["public/pw_containers/internal/intrusive_item.h"],
71    implementation_deps = ["//pw_assert:check"],
72    strip_include_prefix = "public",
73)
74
75cc_library(
76    name = "intrusive_list_common",
77    hdrs = [
78        "public/pw_containers/internal/intrusive_list.h",
79        "public/pw_containers/internal/intrusive_list_item.h",
80        "public/pw_containers/internal/intrusive_list_iterator.h",
81    ],
82    strip_include_prefix = "public",
83    deps = [":intrusive_item"],
84)
85
86cc_library(
87    name = "intrusive_forward_list",
88    hdrs = ["public/pw_containers/intrusive_forward_list.h"],
89    strip_include_prefix = "public",
90    deps = [
91        ":config",
92        ":intrusive_list_common",
93    ],
94)
95
96cc_library(
97    name = "intrusive_list",
98    hdrs = ["public/pw_containers/intrusive_list.h"],
99    strip_include_prefix = "public",
100    deps = [
101        ":config",
102        ":intrusive_list_common",
103        ":legacy_intrusive_list",
104    ],
105)
106
107cc_library(
108    name = "legacy_intrusive_list",
109    hdrs = ["public/pw_containers/internal/legacy_intrusive_list.h"],
110    strip_include_prefix = "public",
111    visibility = [":__subpackages__"],
112    deps = [":intrusive_forward_list"],
113)
114
115cc_library(
116    name = "aa_tree",
117    srcs = [
118        "aa_tree.cc",
119        "aa_tree_item.cc",
120    ],
121    hdrs = [
122        "public/pw_containers/internal/aa_tree.h",
123        "public/pw_containers/internal/aa_tree_item.h",
124        "public/pw_containers/internal/aa_tree_iterator.h",
125    ],
126    strip_include_prefix = "public",
127    visibility = [":__subpackages__"],
128    deps = [
129        ":intrusive_item",
130        "//pw_assert:assert",
131        "//pw_bytes:packed_ptr",
132        "//pw_function",
133    ],
134)
135
136cc_library(
137    name = "intrusive_map",
138    hdrs = ["public/pw_containers/intrusive_map.h"],
139    strip_include_prefix = "public",
140    deps = [":aa_tree"],
141)
142
143cc_library(
144    name = "intrusive_multimap",
145    hdrs = ["public/pw_containers/intrusive_multimap.h"],
146    strip_include_prefix = "public",
147    deps = [":aa_tree"],
148)
149
150cc_library(
151    name = "intrusive_set",
152    hdrs = ["public/pw_containers/intrusive_set.h"],
153    strip_include_prefix = "public",
154    deps = [":aa_tree"],
155)
156
157cc_library(
158    name = "intrusive_multiset",
159    hdrs = ["public/pw_containers/intrusive_multiset.h"],
160    strip_include_prefix = "public",
161    deps = [":aa_tree"],
162)
163
164cc_library(
165    name = "iterator",
166    hdrs = ["public/pw_containers/iterator.h"],
167    strip_include_prefix = "public",
168    tags = ["noclangtidy"],
169)
170
171cc_library(
172    name = "inline_deque",
173    hdrs = [
174        "public/pw_containers/inline_deque.h",
175    ],
176    strip_include_prefix = "public",
177    deps = [
178        ":raw_storage",
179        "//pw_assert:assert",
180        "//pw_preprocessor",
181        "//pw_span",
182        "//pw_toolchain:constexpr_tag",
183    ],
184)
185
186cc_library(
187    name = "inline_queue",
188    hdrs = [
189        "public/pw_containers/inline_queue.h",
190    ],
191    strip_include_prefix = "public",
192    deps = [":inline_deque"],
193)
194
195cc_library(
196    name = "inline_var_len_entry_queue",
197    srcs = ["inline_var_len_entry_queue.c"],
198    hdrs = ["public/pw_containers/inline_var_len_entry_queue.h"],
199    implementation_deps = ["//pw_assert:check"],
200    strip_include_prefix = "public",
201    tags = ["noclangtidy"],
202    deps = [
203        ":raw_storage",
204        "//pw_preprocessor",
205        "//pw_toolchain:constexpr_tag",
206        "//pw_varint",
207    ],
208)
209
210cc_library(
211    name = "vector",
212    hdrs = [
213        "public/pw_containers/vector.h",
214    ],
215    strip_include_prefix = "public",
216    deps = [
217        "//pw_assert:assert",
218        "//pw_preprocessor",
219        "//pw_toolchain:constexpr_tag",
220    ],
221)
222
223cc_library(
224    name = "filtered_view",
225    hdrs = ["public/pw_containers/filtered_view.h"],
226    strip_include_prefix = "public",
227    deps = [
228        "//pw_assert:assert",
229        "//pw_preprocessor",
230    ],
231)
232
233cc_library(
234    name = "flat_map",
235    hdrs = ["public/pw_containers/flat_map.h"],
236    strip_include_prefix = "public",
237    deps = ["//pw_assert:assert"],
238)
239
240cc_library(
241    name = "raw_storage",
242    hdrs = [
243        "public/pw_containers/internal/raw_storage.h",
244    ],
245    strip_include_prefix = "public",
246    visibility = [":__subpackages__"],
247)
248
249cc_library(
250    name = "test_helpers",
251    srcs = ["test_helpers.cc"],
252    hdrs = ["pw_containers_private/test_helpers.h"],
253    implementation_deps = ["//pw_assert:check"],
254    visibility = [":__subpackages__"],
255)
256
257cc_library(
258    name = "to_array",
259    hdrs = ["public/pw_containers/to_array.h"],
260    strip_include_prefix = "public",
261)
262
263cc_library(
264    name = "wrapped_iterator",
265    hdrs = ["public/pw_containers/wrapped_iterator.h"],
266    strip_include_prefix = "public",
267)
268
269# Unit tests
270
271pw_cc_test(
272    name = "algorithm_test",
273    srcs = ["algorithm_test.cc"],
274    deps = [
275        ":algorithm",
276        ":flat_map",
277        ":intrusive_list",
278        ":vector",
279        "//pw_span",
280    ],
281)
282
283pw_cc_test(
284    name = "filtered_view_test",
285    srcs = ["filtered_view_test.cc"],
286    deps = [
287        ":algorithm",
288        ":filtered_view",
289        ":flat_map",
290        ":intrusive_list",
291        "//pw_span",
292    ],
293)
294
295pw_cc_test(
296    name = "flat_map_test",
297    srcs = [
298        "flat_map_test.cc",
299    ],
300    deps = [
301        ":flat_map",
302        "//pw_polyfill",
303    ],
304)
305
306pw_cc_test(
307    name = "inline_var_len_entry_queue_test",
308    srcs = [
309        "inline_var_len_entry_queue_test.cc",
310        "pw_containers_private/inline_var_len_entry_queue_test_oracle.h",
311    ],
312    deps = [
313        ":inline_var_len_entry_queue",
314        "//pw_assert:assert",
315        "//pw_bytes",
316        "//pw_varint",
317    ],
318)
319
320pw_cc_test(
321    name = "vector_test",
322    srcs = [
323        "vector_test.cc",
324    ],
325    deps = [
326        ":test_helpers",
327        ":vector",
328        "//pw_compilation_testing:negative_compilation_testing",
329    ],
330)
331
332pw_cc_test(
333    name = "inline_deque_test",
334    srcs = [
335        "inline_deque_test.cc",
336    ],
337    deps = [
338        ":algorithm",
339        ":inline_deque",
340        ":test_helpers",
341        "//pw_compilation_testing:negative_compilation_testing",
342    ],
343)
344
345pw_cc_test(
346    name = "inline_queue_test",
347    srcs = [
348        "inline_queue_test.cc",
349    ],
350    deps = [
351        ":algorithm",
352        ":inline_queue",
353        ":test_helpers",
354        "//pw_compilation_testing:negative_compilation_testing",
355    ],
356)
357
358pw_cc_test(
359    name = "raw_storage_test",
360    srcs = [
361        "raw_storage_test.cc",
362    ],
363    deps = [
364        ":raw_storage",
365        ":test_helpers",
366    ],
367)
368
369pw_cc_test(
370    name = "to_array_test",
371    srcs = ["to_array_test.cc"],
372    deps = [":to_array"],
373)
374
375pw_cc_test(
376    name = "wrapped_iterator_test",
377    srcs = ["wrapped_iterator_test.cc"],
378    deps = [":wrapped_iterator"],
379)
380
381pw_cc_test(
382    name = "intrusive_forward_list_test",
383    srcs = ["intrusive_forward_list_test.cc"],
384    deps = [
385        ":intrusive_forward_list",
386        ":vector",
387        "//pw_compilation_testing:negative_compilation_testing",
388        "//pw_preprocessor",
389    ],
390)
391
392pw_cc_test(
393    name = "intrusive_list_test",
394    srcs = ["intrusive_list_test.cc"],
395    deps = [
396        ":intrusive_list",
397        ":vector",
398        "//pw_compilation_testing:negative_compilation_testing",
399        "//pw_preprocessor",
400    ],
401)
402
403pw_cc_test(
404    name = "intrusive_map_test",
405    srcs = ["intrusive_map_test.cc"],
406    deps = [
407        ":intrusive_map",
408        ":intrusive_multimap",
409        "//pw_compilation_testing:negative_compilation_testing",
410        "//pw_span",
411    ],
412)
413
414pw_cc_test(
415    name = "intrusive_multimap_test",
416    srcs = ["intrusive_multimap_test.cc"],
417    deps = [
418        ":intrusive_map",
419        ":intrusive_multimap",
420        "//pw_compilation_testing:negative_compilation_testing",
421        "//pw_span",
422    ],
423)
424
425pw_cc_test(
426    name = "intrusive_set_test",
427    srcs = ["intrusive_set_test.cc"],
428    deps = [
429        ":intrusive_multiset",
430        ":intrusive_set",
431        "//pw_compilation_testing:negative_compilation_testing",
432        "//pw_span",
433    ],
434)
435
436pw_cc_test(
437    name = "intrusive_multiset_test",
438    srcs = ["intrusive_multiset_test.cc"],
439    deps = [
440        ":intrusive_multiset",
441        ":intrusive_set",
442        "//pw_compilation_testing:negative_compilation_testing",
443        "//pw_span",
444    ],
445)
446
447pw_cc_test(
448    name = "intrusive_item_test",
449    srcs = ["intrusive_item_test.cc"],
450    deps = [
451        ":intrusive_forward_list",
452        ":intrusive_list",
453        ":intrusive_map",
454        ":intrusive_multimap",
455        ":intrusive_multiset",
456        ":intrusive_set",
457        "//pw_compilation_testing:negative_compilation_testing",
458    ],
459)
460
461filegroup(
462    name = "doxygen",
463    srcs = [
464        "public/pw_containers/algorithm.h",
465        "public/pw_containers/filtered_view.h",
466        "public/pw_containers/inline_deque.h",
467        "public/pw_containers/inline_queue.h",
468        "public/pw_containers/inline_var_len_entry_queue.h",
469        "public/pw_containers/internal/aa_tree.h",
470        "public/pw_containers/internal/intrusive_list.h",
471        "public/pw_containers/intrusive_forward_list.h",
472        "public/pw_containers/intrusive_list.h",
473        "public/pw_containers/intrusive_map.h",
474        "public/pw_containers/intrusive_multimap.h",
475        "public/pw_containers/intrusive_multiset.h",
476        "public/pw_containers/intrusive_set.h",
477        "public/pw_containers/vector.h",
478    ],
479)
480
481sphinx_docs_library(
482    name = "docs",
483    srcs = [
484        "Kconfig",
485        "docs.rst",
486        "lists.rst",
487        "maps.rst",
488        "multiple_containers.rst",
489        "queues.rst",
490        "sets.rst",
491        "utilities.rst",
492        "vectors.rst",
493        "//pw_containers/examples:docs",
494    ],
495    prefix = "pw_containers/",
496    target_compatible_with = incompatible_with_mcu(),
497)
498
499pw_size_diff(
500    name = "intrusive_list_size_report",
501    base = "//pw_containers/size_report:base",
502    bloaty_config = "//targets/rp2040:bloaty_config",
503    label = "IntrusiveList",
504    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
505    tags = ["manual"],
506    target = "//pw_containers/size_report:intrusive_list_base",
507)
508
509pw_size_diff(
510    name = "intrusive_list_size_report_alternate_type",
511    base = "//pw_containers/size_report:intrusive_list_base",
512    bloaty_config = "//targets/rp2040:bloaty_config",
513    label = "Additional IntrusiveList with different item type",
514    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
515    tags = ["manual"],
516    target = "//pw_containers/size_report:intrusive_list_alternate_type",
517)
518
519pw_size_diff(
520    name = "intrusive_forward_list_size_report",
521    base = "//pw_containers/size_report:base",
522    bloaty_config = "//targets/rp2040:bloaty_config",
523    label = "IntrusiveForwardList",
524    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
525    tags = ["manual"],
526    target = "//pw_containers/size_report:intrusive_forward_list_base",
527)
528
529pw_size_diff(
530    name = "intrusive_forward_list_size_report_alternate_type",
531    base = "//pw_containers/size_report:intrusive_forward_list_base",
532    bloaty_config = "//targets/rp2040:bloaty_config",
533    label = "Additional IntrusiveForwardList with different item type",
534    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
535    tags = ["manual"],
536    target = "//pw_containers/size_report:intrusive_forward_list_alternate_type",
537)
538
539pw_size_diff(
540    name = "intrusive_list_and_forward_list_size_report",
541    base = "//pw_containers/size_report:base",
542    bloaty_config = "//targets/rp2040:bloaty_config",
543    label = "IntrusiveForwardList and IntrusiveList",
544    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
545    tags = ["manual"],
546    target = "//pw_containers/size_report:intrusive_list_and_forward_list",
547)
548
549pw_size_table(
550    name = "lists_size_report",
551    reports = [
552        ":intrusive_list_size_report",
553        ":intrusive_list_size_report_alternate_type",
554        ":intrusive_forward_list_size_report",
555        ":intrusive_forward_list_size_report_alternate_type",
556        ":intrusive_list_and_forward_list_size_report",
557    ],
558    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
559    tags = ["manual"],
560)
561
562pw_size_diff(
563    name = "flat_map_size_report",
564    base = "//pw_containers/size_report:base",
565    bloaty_config = "//targets/rp2040:bloaty_config",
566    label = "FlatMap",
567    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
568    tags = ["manual"],
569    target = "//pw_containers/size_report:flat_map_base",
570)
571
572pw_size_diff(
573    name = "flat_map_size_report_alternate_types",
574    base = "//pw_containers/size_report:flat_map_base",
575    bloaty_config = "//targets/rp2040:bloaty_config",
576    label = "Additional FlatMap with different key and value types",
577    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
578    tags = ["manual"],
579    target = "//pw_containers/size_report:flat_map_alternate_types",
580)
581
582pw_size_diff(
583    name = "intrusive_map_size_report",
584    base = "//pw_containers/size_report:base",
585    bloaty_config = "//targets/rp2040:bloaty_config",
586    label = "IntrusiveMap",
587    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
588    tags = ["manual"],
589    target = "//pw_containers/size_report:intrusive_map_base",
590)
591
592pw_size_diff(
593    name = "intrusive_map_size_report_alternate_key",
594    base = "//pw_containers/size_report:intrusive_map_base",
595    bloaty_config = "//targets/rp2040:bloaty_config",
596    label = "Additional IntrusiveMap with different key type",
597    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
598    tags = ["manual"],
599    target = "//pw_containers/size_report:intrusive_map_alternate_key",
600)
601
602pw_size_diff(
603    name = "intrusive_map_size_report_alternate_types",
604    base = "//pw_containers/size_report:intrusive_map_base",
605    bloaty_config = "//targets/rp2040:bloaty_config",
606    label = "Additional IntrusiveMap with different key and value types",
607    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
608    tags = ["manual"],
609    target = "//pw_containers/size_report:intrusive_map_alternate_types",
610)
611
612pw_size_diff(
613    name = "intrusive_multimap_size_report",
614    base = "//pw_containers/size_report:base",
615    bloaty_config = "//targets/rp2040:bloaty_config",
616    label = "IntrusiveMultiMap",
617    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
618    tags = ["manual"],
619    target = "//pw_containers/size_report:intrusive_multimap_base",
620)
621
622pw_size_diff(
623    name = "intrusive_multimap_size_report_alternate_key",
624    base = "//pw_containers/size_report:intrusive_multimap_base",
625    bloaty_config = "//targets/rp2040:bloaty_config",
626    label = "Additional IntrusiveMultiMap with different key type",
627    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
628    tags = ["manual"],
629    target = "//pw_containers/size_report:intrusive_multimap_alternate_key",
630)
631
632pw_size_diff(
633    name = "intrusive_multimap_size_report_alternate_types",
634    base = "//pw_containers/size_report:intrusive_multimap_base",
635    bloaty_config = "//targets/rp2040:bloaty_config",
636    label = "Additional IntrusiveMultiMap with different key and value types",
637    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
638    tags = ["manual"],
639    target = "//pw_containers/size_report:intrusive_multimap_alternate_types",
640)
641
642pw_size_diff(
643    name = "intrusive_map_and_multimap_size_report",
644    base = "//pw_containers/size_report:base",
645    bloaty_config = "//targets/rp2040:bloaty_config",
646    label = "IntrusiveMap and IntrusiveMultiMap",
647    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
648    tags = ["manual"],
649    target = "//pw_containers/size_report:intrusive_map_and_multimap",
650)
651
652pw_size_table(
653    name = "maps_size_report",
654    reports = [
655        ":flat_map_size_report",
656        ":flat_map_size_report_alternate_types",
657        ":intrusive_map_size_report",
658        ":intrusive_map_size_report_alternate_key",
659        ":intrusive_map_size_report_alternate_types",
660        ":intrusive_multimap_size_report",
661        ":intrusive_multimap_size_report_alternate_key",
662        ":intrusive_multimap_size_report_alternate_types",
663        ":intrusive_map_and_multimap_size_report",
664    ],
665    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
666    tags = ["manual"],
667)
668
669pw_size_diff(
670    name = "inline_deque_size_report",
671    base = "//pw_containers/size_report:base",
672    bloaty_config = "//targets/rp2040:bloaty_config",
673    label = "InlineDeque",
674    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
675    tags = ["manual"],
676    target = "//pw_containers/size_report:inline_deque_base",
677)
678
679pw_size_diff(
680    name = "inline_deque_size_report_alternate_type",
681    base = "//pw_containers/size_report:inline_deque_base",
682    bloaty_config = "//targets/rp2040:bloaty_config",
683    label = "Additional InlineDeque with different item type",
684    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
685    tags = ["manual"],
686    target = "//pw_containers/size_report:inline_deque_alternate_type",
687)
688
689pw_size_diff(
690    name = "inline_queue_size_report",
691    base = "//pw_containers/size_report:base",
692    bloaty_config = "//targets/rp2040:bloaty_config",
693    label = "InlineQueue",
694    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
695    tags = ["manual"],
696    target = "//pw_containers/size_report:inline_queue_base",
697)
698
699pw_size_diff(
700    name = "inline_queue_size_report_alternate_type",
701    base = "//pw_containers/size_report:inline_queue_base",
702    bloaty_config = "//targets/rp2040:bloaty_config",
703    label = "Additional InlineQueue with different item type",
704    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
705    tags = ["manual"],
706    target = "//pw_containers/size_report:inline_queue_alternate_type",
707)
708
709pw_size_diff(
710    name = "inline_deque_and_queue_size_report",
711    base = "//pw_containers/size_report:base",
712    bloaty_config = "//targets/rp2040:bloaty_config",
713    label = "InlineDeque and InlineQueue",
714    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
715    tags = ["manual"],
716    target = "//pw_containers/size_report:inline_deque_and_queue",
717)
718
719pw_size_table(
720    name = "queues_size_report",
721    reports = [
722        ":inline_deque_size_report",
723        ":inline_deque_size_report_alternate_type",
724        ":inline_queue_size_report",
725        ":inline_queue_size_report_alternate_type",
726        ":inline_deque_and_queue_size_report",
727    ],
728    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
729    tags = ["manual"],
730)
731
732pw_size_diff(
733    name = "intrusive_set_size_report",
734    base = "//pw_containers/size_report:base",
735    bloaty_config = "//targets/rp2040:bloaty_config",
736    label = "IntrusiveSet",
737    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
738    tags = ["manual"],
739    target = "//pw_containers/size_report:intrusive_set_base",
740)
741
742pw_size_diff(
743    name = "intrusive_set_size_report_alternate_type",
744    base = "//pw_containers/size_report:intrusive_set_base",
745    bloaty_config = "//targets/rp2040:bloaty_config",
746    label = "Additional IntrusiveSet with different item type",
747    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
748    tags = ["manual"],
749    target = "//pw_containers/size_report:intrusive_set_alternate_type",
750)
751
752pw_size_diff(
753    name = "intrusive_multiset_size_report",
754    base = "//pw_containers/size_report:base",
755    bloaty_config = "//targets/rp2040:bloaty_config",
756    label = "IntrusiveMultiSet",
757    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
758    tags = ["manual"],
759    target = "//pw_containers/size_report:intrusive_multiset_base",
760)
761
762pw_size_diff(
763    name = "intrusive_multiset_size_report_alternate_type",
764    base = "//pw_containers/size_report:intrusive_multiset_base",
765    bloaty_config = "//targets/rp2040:bloaty_config",
766    label = "Additional IntrusiveMultiSet with different item type",
767    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
768    tags = ["manual"],
769    target = "//pw_containers/size_report:intrusive_multiset_alternate_type",
770)
771
772pw_size_diff(
773    name = "intrusive_set_and_multiset_size_report",
774    base = "//pw_containers/size_report:base",
775    bloaty_config = "//targets/rp2040:bloaty_config",
776    label = "IntrusiveSet and IntrusiveMultiSet",
777    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
778    tags = ["manual"],
779    target = "//pw_containers/size_report:intrusive_set_and_multiset",
780)
781
782pw_size_table(
783    name = "sets_size_report",
784    reports = [
785        ":intrusive_set_size_report",
786        ":intrusive_set_size_report_alternate_type",
787        ":intrusive_multiset_size_report",
788        ":intrusive_multiset_size_report_alternate_type",
789        ":intrusive_set_and_multiset_size_report",
790    ],
791    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
792    tags = ["manual"],
793)
794
795pw_size_diff(
796    name = "vector_size_report",
797    base = "//pw_containers/size_report:base",
798    bloaty_config = "//targets/rp2040:bloaty_config",
799    label = "Vector",
800    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
801    tags = ["manual"],
802    target = "//pw_containers/size_report:vector_base",
803)
804
805pw_size_diff(
806    name = "vector_size_report_alternate_size",
807    base = "//pw_containers/size_report:vector_base",
808    bloaty_config = "//targets/rp2040:bloaty_config",
809    label = "Additional Vector with the same item type but different size",
810    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
811    tags = ["manual"],
812    target = "//pw_containers/size_report:vector_alternate_size",
813)
814
815pw_size_diff(
816    name = "vector_size_report_alternate_type",
817    base = "//pw_containers/size_report:vector_base",
818    bloaty_config = "//targets/rp2040:bloaty_config",
819    label = "Additional Vector with different item type but same size",
820    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
821    tags = ["manual"],
822    target = "//pw_containers/size_report:vector_alternate_type",
823)
824
825pw_size_table(
826    name = "vectors_size_report",
827    reports = [
828        ":vector_size_report",
829        ":vector_size_report_alternate_size",
830        ":vector_size_report_alternate_type",
831    ],
832    # TODO: https://pwbug.dev/388905812 - Make size reports always build.
833    tags = ["manual"],
834)
835