• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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