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