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