1# Copyright 2023 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) 16include($ENV{PW_ROOT}/pw_async2/backend.cmake) 17 18pw_add_library(pw_async2.poll INTERFACE 19 HEADERS 20 public/pw_async2/poll.h 21 PUBLIC_DEPS 22 pw_polyfill 23 pw_string.to_string 24 pw_third_party.fuchsia.stdcompat 25 PUBLIC_INCLUDES 26 public 27) 28 29pw_add_test(pw_async2.poll_test 30 SOURCES 31 poll_test.cc 32 PRIVATE_DEPS 33 pw_async2.poll 34) 35 36pw_add_library(pw_async2.dispatcher_base STATIC 37 HEADERS 38 public/pw_async2/dispatcher_base.h 39 PUBLIC_INCLUDES 40 public 41 PUBLIC_DEPS 42 pw_assert.assert 43 pw_assert.check 44 pw_async2.poll 45 pw_chrono.system_clock 46 pw_sync.interrupt_spin_lock 47 pw_sync.lock_annotations 48 pw_sync.mutex 49 pw_toolchain.no_destructor 50 SOURCES 51 dispatcher_base.cc 52) 53 54pw_add_facade(pw_async2.dispatcher INTERFACE 55 BACKEND 56 pw_async2.dispatcher_BACKEND 57 HEADERS 58 public/pw_async2/dispatcher.h 59 PUBLIC_INCLUDES 60 public 61 PUBLIC_DEPS 62 pw_async2.dispatcher_base 63) 64 65pw_add_test(pw_async2.dispatcher_test 66 SOURCES 67 dispatcher_test.cc 68 PRIVATE_DEPS 69 pw_async2.dispatcher 70 pw_containers.vector 71) 72 73pw_add_test(pw_async2.dispatcher_thread_test 74 SOURCES 75 dispatcher_thread_test.cc 76 PRIVATE_DEPS 77 pw_async2.dispatcher 78 pw_function 79 pw_thread.sleep 80 pw_thread.thread 81) 82 83pw_add_library(pw_async2.pend_func_task INTERFACE 84 HEADERS 85 public/pw_async2/pend_func_task.h 86 PUBLIC_DEPS 87 pw_async2.dispatcher 88 pw_function 89 PUBLIC_INCLUDES 90 public 91) 92 93pw_add_test(pw_async2.pend_func_task_test 94 SOURCES 95 pend_func_task_test.cc 96 PRIVATE_DEPS 97 pw_async2.pend_func_task 98) 99 100pw_add_library(pw_async2.pendable_as_task INTERFACE 101 HEADERS 102 public/pw_async2/pendable_as_task.h 103 PUBLIC_DEPS 104 pw_async2.dispatcher 105 PUBLIC_INCLUDES 106 public 107) 108 109pw_add_test(pw_async2.pendable_as_task_test 110 SOURCES 111 pendable_as_task_test.cc 112 PRIVATE_DEPS 113 pw_async2.pendable_as_task 114) 115 116pw_add_library(pw_async2.allocate_task INTERFACE 117 HEADERS 118 public/pw_async2/allocate_task.h 119 PUBLIC_DEPS 120 pw_async2.dispatcher 121 pw_allocator.allocator 122 PUBLIC_INCLUDES 123 public 124) 125 126pw_add_test(pw_async2.allocate_task_test 127 SOURCES 128 allocate_task_test.cc 129 PRIVATE_DEPS 130 pw_async2.allocate_task 131 pw_allocator.testing 132) 133 134pw_add_library(pw_async2.once_sender INTERFACE 135 HEADERS 136 public/pw_async2/once_sender.h 137 PUBLIC_DEPS 138 pw_async2.dispatcher 139 pw_function 140 PUBLIC_INCLUDES 141 public 142) 143 144pw_add_test(pw_async2.once_sender_test 145 SOURCES 146 once_sender_test.cc 147 PRIVATE_DEPS 148 pw_async2.once_sender 149 pw_containers.vector 150) 151 152if("cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) 153 pw_add_library(pw_async2.coro STATIC 154 HEADERS 155 public/pw_async2/coro.h 156 SOURCES 157 coro.cc 158 PRIVATE_DEPS 159 pw_log 160 PUBLIC_DEPS 161 pw_allocator.allocator 162 pw_async2.dispatcher 163 pw_function 164 PUBLIC_INCLUDES 165 public 166 ) 167 168 pw_add_test(pw_async2.coro_test 169 SOURCES 170 coro_test.cc 171 PRIVATE_DEPS 172 pw_allocator.null_allocator 173 pw_allocator.testing 174 pw_async2.coro 175 ) 176 177 pw_add_library(pw_async2.coro_or_else_task INTERFACE 178 HEADERS 179 public/pw_async2/coro.h 180 PUBLIC_DEPS 181 pw_async2.coro 182 pw_async2.dispatcher 183 pw_function 184 PUBLIC_INCLUDES 185 public 186 ) 187 188 pw_add_test(pw_async2.coro_or_else_task_test 189 SOURCES 190 coro_or_else_task_test.cc 191 PRIVATE_DEPS 192 pw_async2.coro 193 pw_async2.coro_or_else_task 194 pw_async2.dispatcher 195 pw_allocator.null_allocator 196 pw_allocator.testing 197 ) 198endif() 199 200 201pw_add_library(pw_async2.time_provider STATIC 202 HEADERS 203 public/pw_async2/time_provider.h 204 SOURCES 205 time_provider.cc 206 PUBLIC_DEPS 207 pw_async2.dispatcher 208 pw_containers.intrusive_list 209 pw_sync.interrupt_spin_lock 210 PUBLIC_INCLUDES 211 public 212) 213 214pw_add_library(pw_async2.system_time_provider STATIC 215 HEADERS 216 public/pw_async2/system_time_provider.h 217 SOURCES 218 system_time_provider.cc 219 PUBLIC_DEPS 220 pw_chrono.system_clock 221 pw_async2.time_provider 222 PRIVATE_DEPS 223 pw_chrono.system_timer 224 pw_toolchain.no_destructor 225 PUBLIC_INCLUDES 226 public 227) 228 229if((NOT "${pw_chrono.system_clock_BACKEND}" STREQUAL "") AND 230 (NOT "${pw_sync.interrupt_spin_lock_BACKEND}" STREQUAL "")) 231 pw_add_test(pw_async2.system_time_provider_test 232 SOURCES 233 system_time_provider_test.cc 234 PRIVATE_DEPS 235 pw_async2.system_time_provider 236 pw_chrono.system_clock 237 GROUPS 238 modules 239 pw_async2 240 ) 241endif() 242 243pw_add_library(pw_async2.simulated_time_provider INTERFACE 244 HEADERS 245 public/pw_async2/simulated_time_provider.h 246 PUBLIC_DEPS 247 pw_async2.time_provider 248 pw_sync.interrupt_spin_lock 249) 250 251if((NOT "${pw_chrono.system_clock_BACKEND}" STREQUAL "") AND 252 (NOT "${pw_sync.interrupt_spin_lock_BACKEND}" STREQUAL "")) 253 pw_add_test(pw_async2.simulated_time_provider_test 254 SOURCES 255 simulated_time_provider_test.cc 256 PRIVATE_DEPS 257 pw_async2.simulated_time_provider 258 pw_chrono.system_clock 259 GROUPS 260 modules 261 pw_async2 262 ) 263endif() 264 265pw_add_library(pw_async2.enqueue_heap_func INTERFACE 266 HEADERS 267 public/pw_async2/enqueue_heap_func.h 268 PUBLIC_DEPS 269 pw_async2.dispatcher 270) 271 272pw_add_test(pw_async2.enqueue_heap_func_test 273 SOURCES 274 enqueue_heap_func_test.cc 275 PRIVATE_DEPS 276 pw_async2.dispatcher 277 pw_async2.enqueue_heap_func 278 GROUPS 279 modules 280 pw_async2 281) 282 283pw_add_library(pw_async2.join INTERFACE 284 HEADERS 285 public/pw_async2/join.h 286 PUBLIC_DEPS 287 pw_async2.dispatcher 288) 289 290pw_add_test(pw_async2.join_test 291 SOURCES 292 join_test.cc 293 PRIVATE_DEPS 294 pw_async2.dispatcher 295 pw_async2.join 296 GROUPS 297 modules 298 pw_async2 299) 300 301add_subdirectory(examples) 302