xref: /aosp_15_r20/external/pigweed/pw_containers/BUILD.bazel (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
15load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
16
17package(default_visibility = ["//visibility:public"])
18
19licenses(["notice"])
20
21# Module configuration
22
23cc_library(
24    name = "config",
25    hdrs = ["public/pw_containers/config.h"],
26    strip_include_prefix = "public",
27    deps = [":config_override"],
28)
29
30label_flag(
31    name = "config_override",
32    build_setting_default = "//pw_build:default_module_config",
33)
34
35# Libraries
36
37cc_library(
38    # This group is deprecated. Prefer to depend on individual features rather
39    # than on this collection.
40    name = "pw_containers",
41    deps = [
42        ":algorithm",
43        ":flat_map",
44        ":inline_deque",
45        ":inline_queue",
46        ":intrusive_list",
47        ":vector",
48    ],
49)
50
51cc_library(
52    name = "algorithm",
53    hdrs = [
54        "public/pw_containers/algorithm.h",
55        "public/pw_containers/internal/algorithm_internal.h",
56    ],
57    strip_include_prefix = "public",
58)
59
60cc_library(
61    name = "intrusive_item",
62    srcs = ["intrusive_item.cc"],
63    hdrs = ["public/pw_containers/internal/intrusive_item.h"],
64    implementation_deps = ["//pw_assert"],
65    strip_include_prefix = "public",
66)
67
68cc_library(
69    name = "intrusive_list_common",
70    hdrs = [
71        "public/pw_containers/internal/intrusive_list.h",
72        "public/pw_containers/internal/intrusive_list_item.h",
73        "public/pw_containers/internal/intrusive_list_iterator.h",
74    ],
75    strip_include_prefix = "public",
76    deps = [":intrusive_item"],
77)
78
79cc_library(
80    name = "intrusive_forward_list",
81    hdrs = ["public/pw_containers/intrusive_forward_list.h"],
82    strip_include_prefix = "public",
83    deps = [
84        ":config",
85        ":intrusive_list_common",
86    ],
87)
88
89cc_library(
90    name = "intrusive_list",
91    hdrs = ["public/pw_containers/intrusive_list.h"],
92    strip_include_prefix = "public",
93    deps = [
94        ":config",
95        ":intrusive_list_common",
96        ":legacy_intrusive_list",
97    ],
98)
99
100cc_library(
101    name = "legacy_intrusive_list",
102    hdrs = ["public/pw_containers/internal/legacy_intrusive_list.h"],
103    strip_include_prefix = "public",
104    visibility = [":__subpackages__"],
105    deps = [":intrusive_forward_list"],
106)
107
108cc_library(
109    name = "aa_tree",
110    srcs = [
111        "aa_tree.cc",
112        "aa_tree_item.cc",
113    ],
114    hdrs = [
115        "public/pw_containers/internal/aa_tree.h",
116        "public/pw_containers/internal/aa_tree_item.h",
117        "public/pw_containers/internal/aa_tree_iterator.h",
118    ],
119    strip_include_prefix = "public",
120    visibility = [":__subpackages__"],
121    deps = [
122        ":intrusive_item",
123        "//pw_assert",
124        "//pw_bytes:packed_ptr",
125        "//pw_function",
126    ],
127)
128
129cc_library(
130    name = "intrusive_map",
131    hdrs = ["public/pw_containers/intrusive_map.h"],
132    strip_include_prefix = "public",
133    deps = [":aa_tree"],
134)
135
136cc_library(
137    name = "intrusive_multimap",
138    hdrs = ["public/pw_containers/intrusive_multimap.h"],
139    strip_include_prefix = "public",
140    deps = [":aa_tree"],
141)
142
143cc_library(
144    name = "intrusive_set",
145    hdrs = ["public/pw_containers/intrusive_set.h"],
146    strip_include_prefix = "public",
147    deps = [":aa_tree"],
148)
149
150cc_library(
151    name = "intrusive_multiset",
152    hdrs = ["public/pw_containers/intrusive_multiset.h"],
153    strip_include_prefix = "public",
154    deps = [":aa_tree"],
155)
156
157cc_library(
158    name = "iterator",
159    hdrs = ["public/pw_containers/iterator.h"],
160    strip_include_prefix = "public",
161)
162
163cc_library(
164    name = "inline_deque",
165    hdrs = [
166        "public/pw_containers/inline_deque.h",
167    ],
168    strip_include_prefix = "public",
169    deps = [
170        ":raw_storage",
171        "//pw_assert",
172        "//pw_preprocessor",
173        "//pw_span",
174    ],
175)
176
177cc_library(
178    name = "inline_queue",
179    hdrs = [
180        "public/pw_containers/inline_queue.h",
181    ],
182    strip_include_prefix = "public",
183    deps = [
184        ":inline_deque",
185    ],
186)
187
188cc_library(
189    name = "inline_var_len_entry_queue",
190    srcs = ["inline_var_len_entry_queue.c"],
191    hdrs = ["public/pw_containers/inline_var_len_entry_queue.h"],
192    strip_include_prefix = "public",
193    deps = [
194        ":raw_storage",
195        "//pw_assert",
196        "//pw_varint",
197    ],
198)
199
200cc_library(
201    name = "vector",
202    hdrs = [
203        "public/pw_containers/vector.h",
204    ],
205    strip_include_prefix = "public",
206    deps = [
207        "//pw_assert",
208        "//pw_preprocessor",
209    ],
210)
211
212cc_library(
213    name = "filtered_view",
214    hdrs = ["public/pw_containers/filtered_view.h"],
215    strip_include_prefix = "public",
216    deps = [
217        "//pw_assert",
218        "//pw_containers",
219    ],
220)
221
222cc_library(
223    name = "flat_map",
224    hdrs = ["public/pw_containers/flat_map.h"],
225    strip_include_prefix = "public",
226    deps = ["//pw_assert"],
227)
228
229cc_library(
230    name = "raw_storage",
231    hdrs = [
232        "public/pw_containers/internal/raw_storage.h",
233    ],
234    strip_include_prefix = "public",
235    visibility = [":__subpackages__"],
236)
237
238cc_library(
239    name = "test_helpers",
240    srcs = ["test_helpers.cc"],
241    hdrs = ["pw_containers_private/test_helpers.h"],
242    visibility = [":__subpackages__"],
243)
244
245cc_library(
246    name = "to_array",
247    hdrs = ["public/pw_containers/to_array.h"],
248    strip_include_prefix = "public",
249)
250
251cc_library(
252    name = "wrapped_iterator",
253    hdrs = ["public/pw_containers/wrapped_iterator.h"],
254    strip_include_prefix = "public",
255)
256
257# Unit tests
258
259pw_cc_test(
260    name = "algorithm_test",
261    srcs = ["algorithm_test.cc"],
262    deps = [
263        ":algorithm",
264        ":flat_map",
265        ":intrusive_list",
266        ":vector",
267        "//pw_span",
268    ],
269)
270
271pw_cc_test(
272    name = "filtered_view_test",
273    srcs = ["filtered_view_test.cc"],
274    deps = [
275        ":algorithm",
276        ":filtered_view",
277        ":flat_map",
278        ":intrusive_list",
279    ],
280)
281
282pw_cc_test(
283    name = "flat_map_test",
284    srcs = [
285        "flat_map_test.cc",
286    ],
287    deps = [
288        ":pw_containers",
289        "//pw_polyfill",
290        "//pw_unit_test",
291    ],
292)
293
294pw_cc_test(
295    name = "inline_var_len_entry_queue_test",
296    srcs = [
297        "inline_var_len_entry_queue_test.cc",
298        "pw_containers_private/inline_var_len_entry_queue_test_oracle.h",
299    ],
300    deps = [
301        ":inline_var_len_entry_queue",
302        "//pw_assert",
303        "//pw_bytes",
304    ],
305)
306
307pw_cc_test(
308    name = "vector_test",
309    srcs = [
310        "vector_test.cc",
311    ],
312    deps = [
313        ":pw_containers",
314        ":test_helpers",
315        "//pw_compilation_testing:negative_compilation_testing",
316        "//pw_unit_test",
317    ],
318)
319
320pw_cc_test(
321    name = "inline_deque_test",
322    srcs = [
323        "inline_deque_test.cc",
324    ],
325    deps = [
326        ":algorithm",
327        ":inline_deque",
328        ":test_helpers",
329        "//pw_compilation_testing:negative_compilation_testing",
330        "//pw_unit_test",
331    ],
332)
333
334pw_cc_test(
335    name = "inline_queue_test",
336    srcs = [
337        "inline_queue_test.cc",
338    ],
339    deps = [
340        ":algorithm",
341        ":inline_queue",
342        ":test_helpers",
343        "//pw_compilation_testing:negative_compilation_testing",
344        "//pw_unit_test",
345    ],
346)
347
348pw_cc_test(
349    name = "raw_storage_test",
350    srcs = [
351        "raw_storage_test.cc",
352    ],
353    deps = [
354        ":raw_storage",
355        ":test_helpers",
356        "//pw_unit_test",
357    ],
358)
359
360pw_cc_test(
361    name = "to_array_test",
362    srcs = ["to_array_test.cc"],
363    deps = [":to_array"],
364)
365
366pw_cc_test(
367    name = "wrapped_iterator_test",
368    srcs = ["wrapped_iterator_test.cc"],
369    deps = [":wrapped_iterator"],
370)
371
372pw_cc_test(
373    name = "intrusive_forward_list_test",
374    srcs = ["intrusive_forward_list_test.cc"],
375    deps = [
376        ":intrusive_forward_list",
377        ":vector",
378        "//pw_compilation_testing:negative_compilation_testing",
379        "//pw_unit_test",
380    ],
381)
382
383pw_cc_test(
384    name = "intrusive_list_test",
385    srcs = ["intrusive_list_test.cc"],
386    deps = [
387        ":intrusive_list",
388        ":vector",
389        "//pw_compilation_testing:negative_compilation_testing",
390        "//pw_unit_test",
391    ],
392)
393
394pw_cc_test(
395    name = "intrusive_map_test",
396    srcs = ["intrusive_map_test.cc"],
397    deps = [
398        ":intrusive_map",
399        ":intrusive_multimap",
400        "//pw_compilation_testing:negative_compilation_testing",
401        "//pw_span",
402    ],
403)
404
405pw_cc_test(
406    name = "intrusive_multimap_test",
407    srcs = ["intrusive_multimap_test.cc"],
408    deps = [
409        ":intrusive_map",
410        ":intrusive_multimap",
411        "//pw_compilation_testing:negative_compilation_testing",
412        "//pw_span",
413    ],
414)
415
416pw_cc_test(
417    name = "intrusive_set_test",
418    srcs = ["intrusive_set_test.cc"],
419    deps = [
420        ":intrusive_multiset",
421        ":intrusive_set",
422        "//pw_compilation_testing:negative_compilation_testing",
423        "//pw_span",
424    ],
425)
426
427pw_cc_test(
428    name = "intrusive_multiset_test",
429    srcs = ["intrusive_multiset_test.cc"],
430    deps = [
431        ":intrusive_multiset",
432        ":intrusive_set",
433        "//pw_compilation_testing:negative_compilation_testing",
434        "//pw_span",
435    ],
436)
437
438pw_cc_test(
439    name = "intrusive_item_test",
440    srcs = ["intrusive_item_test.cc"],
441    deps = [
442        ":intrusive_forward_list",
443        ":intrusive_list",
444        ":intrusive_map",
445        ":intrusive_multimap",
446        ":intrusive_multiset",
447        ":intrusive_set",
448        "//pw_compilation_testing:negative_compilation_testing",
449        "//pw_unit_test",
450    ],
451)
452
453filegroup(
454    name = "doxygen",
455    srcs = [
456        "public/pw_containers/filtered_view.h",
457        "public/pw_containers/inline_deque.h",
458        "public/pw_containers/inline_queue.h",
459        "public/pw_containers/inline_var_len_entry_queue.h",
460        "public/pw_containers/internal/aa_tree.h",
461        "public/pw_containers/internal/intrusive_list.h",
462        "public/pw_containers/intrusive_forward_list.h",
463        "public/pw_containers/intrusive_list.h",
464        "public/pw_containers/intrusive_map.h",
465        "public/pw_containers/intrusive_multimap.h",
466        "public/pw_containers/intrusive_multiset.h",
467        "public/pw_containers/intrusive_set.h",
468    ],
469)
470