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