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