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_toolchain.no_destructor 49 SOURCES 50 dispatcher_base.cc 51) 52 53pw_add_facade(pw_async2.dispatcher INTERFACE 54 BACKEND 55 pw_async2.dispatcher_BACKEND 56 HEADERS 57 public/pw_async2/dispatcher.h 58 PUBLIC_INCLUDES 59 public 60 PUBLIC_DEPS 61 pw_async2.dispatcher_base 62) 63 64pw_add_test(pw_async2.dispatcher_test 65 SOURCES 66 dispatcher_test.cc 67 PRIVATE_DEPS 68 pw_async2.dispatcher 69 pw_containers.vector 70) 71 72pw_add_test(pw_async2.dispatcher_thread_test 73 SOURCES 74 dispatcher_thread_test.cc 75 PRIVATE_DEPS 76 pw_async2.dispatcher 77 pw_function 78 pw_thread.sleep 79 pw_thread.thread 80) 81 82pw_add_library(pw_async2.pend_func_task INTERFACE 83 HEADERS 84 public/pw_async2/pend_func_task.h 85 PUBLIC_DEPS 86 pw_async2.dispatcher 87 PUBLIC_INCLUDES 88 public 89) 90 91pw_add_test(pw_async2.pend_func_task_test 92 SOURCES 93 pend_func_task_test.cc 94 PRIVATE_DEPS 95 pw_async2.pend_func_task 96) 97 98pw_add_library(pw_async2.pendable_as_task INTERFACE 99 HEADERS 100 public/pw_async2/pendable_as_task.h 101 PUBLIC_DEPS 102 pw_async2.dispatcher 103 PUBLIC_INCLUDES 104 public 105) 106 107pw_add_test(pw_async2.pendable_as_task_test 108 SOURCES 109 pendable_as_task_test.cc 110 PRIVATE_DEPS 111 pw_async2.pendable_as_task 112) 113 114pw_add_library(pw_async2.allocate_task INTERFACE 115 HEADERS 116 public/pw_async2/allocate_task.h 117 PUBLIC_DEPS 118 pw_async2.dispatcher 119 pw_allocator.allocator 120 PUBLIC_INCLUDES 121 public 122) 123 124pw_add_test(pw_async2.allocate_task_test 125 SOURCES 126 allocate_task_test.cc 127 PRIVATE_DEPS 128 pw_async2.allocate_task 129 pw_allocator.testing 130) 131 132if(NOT "cxx_std_20" IN_LIST CMAKE_CXX_COMPILE_FEATURES) 133 pw_add_library(pw_async2.coro INTERFACE 134 HEADERS 135 public/pw_async2/coro.h 136 PUBLIC_DEPS 137 pw_allocator.allocator 138 pw_async2.dispatcher 139 PUBLIC_INCLUDES 140 public 141 ) 142 143 pw_add_test(pw_async2.coro_test 144 SOURCES 145 coro_test.cc 146 PRIVATE_DEPS 147 pw_allocator.null_allocator 148 pw_allocator.testing 149 pw_async2.coro 150 ) 151endif() 152 153add_subdirectory(examples) 154