xref: /aosp_15_r20/external/pigweed/pw_async2/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2023 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker#
3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker# the License at
6*61c4878aSAndroid Build Coastguard Worker#
7*61c4878aSAndroid Build Coastguard Worker#     https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker#
9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker# the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni")
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_async2/backend.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/facade.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_chrono/backend.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_sync/backend.gni")
23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_thread/backend.gni")
24*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_toolchain/traits.gni")
25*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni")
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
28*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
29*61c4878aSAndroid Build Coastguard Worker}
30*61c4878aSAndroid Build Coastguard Worker
31*61c4878aSAndroid Build Coastguard Workerpw_source_set("poll") {
32*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
33*61c4878aSAndroid Build Coastguard Worker  public = [
34*61c4878aSAndroid Build Coastguard Worker    "public/pw_async2/internal/poll_internal.h",
35*61c4878aSAndroid Build Coastguard Worker    "public/pw_async2/poll.h",
36*61c4878aSAndroid Build Coastguard Worker    "public/pw_async2/try.h",
37*61c4878aSAndroid Build Coastguard Worker  ]
38*61c4878aSAndroid Build Coastguard Worker  public_deps = [
39*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_string:to_string",
40*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_third_party/fuchsia:stdcompat",
41*61c4878aSAndroid Build Coastguard Worker    dir_pw_polyfill,
42*61c4878aSAndroid Build Coastguard Worker  ]
43*61c4878aSAndroid Build Coastguard Worker}
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Workerpw_test("poll_test") {
46*61c4878aSAndroid Build Coastguard Worker  deps = [
47*61c4878aSAndroid Build Coastguard Worker    ":poll",
48*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_result",
49*61c4878aSAndroid Build Coastguard Worker  ]
50*61c4878aSAndroid Build Coastguard Worker  sources = [ "poll_test.cc" ]
51*61c4878aSAndroid Build Coastguard Worker}
52*61c4878aSAndroid Build Coastguard Worker
53*61c4878aSAndroid Build Coastguard Worker# NOTE: this target should only be used directly by implementors of the
54*61c4878aSAndroid Build Coastguard Worker# `dispatcher` facade.
55*61c4878aSAndroid Build Coastguard Workerpw_source_set("dispatcher_base") {
56*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
57*61c4878aSAndroid Build Coastguard Worker  public_deps = [
58*61c4878aSAndroid Build Coastguard Worker    ":poll",
59*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_assert",
60*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
61*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:interrupt_spin_lock",
62*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:lock_annotations",
63*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:mutex",
64*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_toolchain:no_destructor",
65*61c4878aSAndroid Build Coastguard Worker  ]
66*61c4878aSAndroid Build Coastguard Worker  deps = [ "$dir_pw_assert:check" ]
67*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/dispatcher_base.h" ]
68*61c4878aSAndroid Build Coastguard Worker  sources = [ "dispatcher_base.cc" ]
69*61c4878aSAndroid Build Coastguard Worker}
70*61c4878aSAndroid Build Coastguard Worker
71*61c4878aSAndroid Build Coastguard Workerpw_facade("dispatcher") {
72*61c4878aSAndroid Build Coastguard Worker  backend = pw_async2_DISPATCHER_BACKEND
73*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
74*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/dispatcher.h" ]
75*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":dispatcher_base" ]
76*61c4878aSAndroid Build Coastguard Worker}
77*61c4878aSAndroid Build Coastguard Worker
78*61c4878aSAndroid Build Coastguard Workerpw_test("dispatcher_test") {
79*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != "" &&
80*61c4878aSAndroid Build Coastguard Worker              pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
81*61c4878aSAndroid Build Coastguard Worker              pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != "" &&
82*61c4878aSAndroid Build Coastguard Worker              pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND != ""
83*61c4878aSAndroid Build Coastguard Worker  deps = [
84*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
85*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
86*61c4878aSAndroid Build Coastguard Worker  ]
87*61c4878aSAndroid Build Coastguard Worker  sources = [ "dispatcher_test.cc" ]
88*61c4878aSAndroid Build Coastguard Worker}
89*61c4878aSAndroid Build Coastguard Worker
90*61c4878aSAndroid Build Coastguard Workerpw_test("dispatcher_thread_test") {
91*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != "" &&
92*61c4878aSAndroid Build Coastguard Worker              pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
93*61c4878aSAndroid Build Coastguard Worker              pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != "" &&
94*61c4878aSAndroid Build Coastguard Worker              pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread"
95*61c4878aSAndroid Build Coastguard Worker  deps = [
96*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
97*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:sleep",
98*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:thread",
99*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread_stl:thread",
100*61c4878aSAndroid Build Coastguard Worker    dir_pw_function,
101*61c4878aSAndroid Build Coastguard Worker  ]
102*61c4878aSAndroid Build Coastguard Worker  sources = [ "dispatcher_thread_test.cc" ]
103*61c4878aSAndroid Build Coastguard Worker}
104*61c4878aSAndroid Build Coastguard Worker
105*61c4878aSAndroid Build Coastguard Workerpw_source_set("pend_func_task") {
106*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
107*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/pend_func_task.h" ]
108*61c4878aSAndroid Build Coastguard Worker  public_deps = [
109*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
110*61c4878aSAndroid Build Coastguard Worker    dir_pw_function,
111*61c4878aSAndroid Build Coastguard Worker  ]
112*61c4878aSAndroid Build Coastguard Worker}
113*61c4878aSAndroid Build Coastguard Worker
114*61c4878aSAndroid Build Coastguard Workerpw_test("pend_func_task_test") {
115*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
116*61c4878aSAndroid Build Coastguard Worker  deps = [
117*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
118*61c4878aSAndroid Build Coastguard Worker    ":pend_func_task",
119*61c4878aSAndroid Build Coastguard Worker  ]
120*61c4878aSAndroid Build Coastguard Worker  sources = [ "pend_func_task_test.cc" ]
121*61c4878aSAndroid Build Coastguard Worker}
122*61c4878aSAndroid Build Coastguard Worker
123*61c4878aSAndroid Build Coastguard Workerpw_source_set("pendable_as_task") {
124*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
125*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/pendable_as_task.h" ]
126*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":dispatcher" ]
127*61c4878aSAndroid Build Coastguard Worker}
128*61c4878aSAndroid Build Coastguard Worker
129*61c4878aSAndroid Build Coastguard Workerpw_test("pendable_as_task_test") {
130*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
131*61c4878aSAndroid Build Coastguard Worker  deps = [
132*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
133*61c4878aSAndroid Build Coastguard Worker    ":pendable_as_task",
134*61c4878aSAndroid Build Coastguard Worker  ]
135*61c4878aSAndroid Build Coastguard Worker  sources = [ "pendable_as_task_test.cc" ]
136*61c4878aSAndroid Build Coastguard Worker}
137*61c4878aSAndroid Build Coastguard Worker
138*61c4878aSAndroid Build Coastguard Workerpw_source_set("allocate_task") {
139*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
140*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/allocate_task.h" ]
141*61c4878aSAndroid Build Coastguard Worker  public_deps = [
142*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
143*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_allocator:allocator",
144*61c4878aSAndroid Build Coastguard Worker  ]
145*61c4878aSAndroid Build Coastguard Worker}
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Workerpw_test("allocate_task_test") {
148*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
149*61c4878aSAndroid Build Coastguard Worker  deps = [
150*61c4878aSAndroid Build Coastguard Worker    ":allocate_task",
151*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_allocator:testing",
152*61c4878aSAndroid Build Coastguard Worker  ]
153*61c4878aSAndroid Build Coastguard Worker  sources = [ "allocate_task_test.cc" ]
154*61c4878aSAndroid Build Coastguard Worker}
155*61c4878aSAndroid Build Coastguard Worker
156*61c4878aSAndroid Build Coastguard Workerpw_source_set("once_sender") {
157*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
158*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/once_sender.h" ]
159*61c4878aSAndroid Build Coastguard Worker  public_deps = [
160*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
161*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_function",
162*61c4878aSAndroid Build Coastguard Worker  ]
163*61c4878aSAndroid Build Coastguard Worker}
164*61c4878aSAndroid Build Coastguard Worker
165*61c4878aSAndroid Build Coastguard Workerpw_test("once_sender_test") {
166*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
167*61c4878aSAndroid Build Coastguard Worker  deps = [
168*61c4878aSAndroid Build Coastguard Worker    ":once_sender",
169*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
170*61c4878aSAndroid Build Coastguard Worker  ]
171*61c4878aSAndroid Build Coastguard Worker  sources = [ "once_sender_test.cc" ]
172*61c4878aSAndroid Build Coastguard Worker}
173*61c4878aSAndroid Build Coastguard Worker
174*61c4878aSAndroid Build Coastguard Workerif (pw_toolchain_CXX_STANDARD >= pw_toolchain_STANDARD.CXX20) {
175*61c4878aSAndroid Build Coastguard Worker  pw_source_set("coro") {
176*61c4878aSAndroid Build Coastguard Worker    public_configs = [ ":public_include_path" ]
177*61c4878aSAndroid Build Coastguard Worker    public = [ "public/pw_async2/coro.h" ]
178*61c4878aSAndroid Build Coastguard Worker    public_deps = [
179*61c4878aSAndroid Build Coastguard Worker      ":dispatcher",
180*61c4878aSAndroid Build Coastguard Worker      "$dir_pw_allocator:allocator",
181*61c4878aSAndroid Build Coastguard Worker      dir_pw_function,
182*61c4878aSAndroid Build Coastguard Worker    ]
183*61c4878aSAndroid Build Coastguard Worker    deps = [ dir_pw_log ]
184*61c4878aSAndroid Build Coastguard Worker    sources = [ "coro.cc" ]
185*61c4878aSAndroid Build Coastguard Worker  }
186*61c4878aSAndroid Build Coastguard Worker
187*61c4878aSAndroid Build Coastguard Worker  pw_test("coro_test") {
188*61c4878aSAndroid Build Coastguard Worker    enable_if = pw_async2_DISPATCHER_BACKEND != ""
189*61c4878aSAndroid Build Coastguard Worker    deps = [
190*61c4878aSAndroid Build Coastguard Worker      ":coro",
191*61c4878aSAndroid Build Coastguard Worker      ":dispatcher",
192*61c4878aSAndroid Build Coastguard Worker      "$dir_pw_allocator:null_allocator",
193*61c4878aSAndroid Build Coastguard Worker      "$dir_pw_allocator:testing",
194*61c4878aSAndroid Build Coastguard Worker    ]
195*61c4878aSAndroid Build Coastguard Worker    sources = [ "coro_test.cc" ]
196*61c4878aSAndroid Build Coastguard Worker  }
197*61c4878aSAndroid Build Coastguard Worker
198*61c4878aSAndroid Build Coastguard Worker  pw_source_set("coro_or_else_task") {
199*61c4878aSAndroid Build Coastguard Worker    public_configs = [ ":public_include_path" ]
200*61c4878aSAndroid Build Coastguard Worker    public = [ "public/pw_async2/coro_or_else_task.h" ]
201*61c4878aSAndroid Build Coastguard Worker    public_deps = [
202*61c4878aSAndroid Build Coastguard Worker      ":coro",
203*61c4878aSAndroid Build Coastguard Worker      ":dispatcher",
204*61c4878aSAndroid Build Coastguard Worker      "//pw_function",
205*61c4878aSAndroid Build Coastguard Worker    ]
206*61c4878aSAndroid Build Coastguard Worker  }
207*61c4878aSAndroid Build Coastguard Worker
208*61c4878aSAndroid Build Coastguard Worker  pw_test("coro_or_else_task_test") {
209*61c4878aSAndroid Build Coastguard Worker    enable_if = pw_async2_DISPATCHER_BACKEND != ""
210*61c4878aSAndroid Build Coastguard Worker    sources = [ "coro_or_else_task_test.cc" ]
211*61c4878aSAndroid Build Coastguard Worker    deps = [
212*61c4878aSAndroid Build Coastguard Worker      ":coro",
213*61c4878aSAndroid Build Coastguard Worker      ":coro_or_else_task",
214*61c4878aSAndroid Build Coastguard Worker      ":dispatcher",
215*61c4878aSAndroid Build Coastguard Worker      "//pw_allocator:null_allocator",
216*61c4878aSAndroid Build Coastguard Worker      "//pw_allocator:testing",
217*61c4878aSAndroid Build Coastguard Worker    ]
218*61c4878aSAndroid Build Coastguard Worker  }
219*61c4878aSAndroid Build Coastguard Worker}
220*61c4878aSAndroid Build Coastguard Worker
221*61c4878aSAndroid Build Coastguard Workerpw_source_set("time_provider") {
222*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/time_provider.h" ]
223*61c4878aSAndroid Build Coastguard Worker  sources = [ "time_provider.cc" ]
224*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
225*61c4878aSAndroid Build Coastguard Worker  public_deps = [
226*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
227*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:intrusive_list",
228*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:interrupt_spin_lock",
229*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_toolchain:no_destructor",
230*61c4878aSAndroid Build Coastguard Worker  ]
231*61c4878aSAndroid Build Coastguard Worker}
232*61c4878aSAndroid Build Coastguard Worker
233*61c4878aSAndroid Build Coastguard Workerpw_source_set("system_time_provider") {
234*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/system_time_provider.h" ]
235*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
236*61c4878aSAndroid Build Coastguard Worker  public_deps = [
237*61c4878aSAndroid Build Coastguard Worker    ":time_provider",
238*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
239*61c4878aSAndroid Build Coastguard Worker  ]
240*61c4878aSAndroid Build Coastguard Worker  sources = [ "system_time_provider.cc" ]
241*61c4878aSAndroid Build Coastguard Worker  deps = [
242*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_timer",
243*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_toolchain:no_destructor",
244*61c4878aSAndroid Build Coastguard Worker  ]
245*61c4878aSAndroid Build Coastguard Worker}
246*61c4878aSAndroid Build Coastguard Worker
247*61c4878aSAndroid Build Coastguard Workerpw_test("system_time_provider_test") {
248*61c4878aSAndroid Build Coastguard Worker  enable_if =
249*61c4878aSAndroid Build Coastguard Worker      pw_async2_DISPATCHER_BACKEND != "" &&
250*61c4878aSAndroid Build Coastguard Worker      pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
251*61c4878aSAndroid Build Coastguard Worker      pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != "" && pw_thread_YIELD_BACKEND != ""
252*61c4878aSAndroid Build Coastguard Worker  sources = [ "system_time_provider_test.cc" ]
253*61c4878aSAndroid Build Coastguard Worker  deps = [ ":system_time_provider" ]
254*61c4878aSAndroid Build Coastguard Worker}
255*61c4878aSAndroid Build Coastguard Worker
256*61c4878aSAndroid Build Coastguard Workerpw_source_set("simulated_time_provider") {
257*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/simulated_time_provider.h" ]
258*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
259*61c4878aSAndroid Build Coastguard Worker  public_deps = [
260*61c4878aSAndroid Build Coastguard Worker    ":time_provider",
261*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:interrupt_spin_lock",
262*61c4878aSAndroid Build Coastguard Worker  ]
263*61c4878aSAndroid Build Coastguard Worker}
264*61c4878aSAndroid Build Coastguard Worker
265*61c4878aSAndroid Build Coastguard Workerpw_test("simulated_time_provider_test") {
266*61c4878aSAndroid Build Coastguard Worker  enable_if =
267*61c4878aSAndroid Build Coastguard Worker      pw_async2_DISPATCHER_BACKEND != "" &&
268*61c4878aSAndroid Build Coastguard Worker      pw_chrono_SYSTEM_CLOCK_BACKEND != "" &&
269*61c4878aSAndroid Build Coastguard Worker      pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != "" && pw_thread_YIELD_BACKEND != ""
270*61c4878aSAndroid Build Coastguard Worker  sources = [ "simulated_time_provider_test.cc" ]
271*61c4878aSAndroid Build Coastguard Worker  deps = [
272*61c4878aSAndroid Build Coastguard Worker    ":simulated_time_provider",
273*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
274*61c4878aSAndroid Build Coastguard Worker  ]
275*61c4878aSAndroid Build Coastguard Worker}
276*61c4878aSAndroid Build Coastguard Worker
277*61c4878aSAndroid Build Coastguard Workerpw_source_set("enqueue_heap_func") {
278*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/enqueue_heap_func.h" ]
279*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
280*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":dispatcher" ]
281*61c4878aSAndroid Build Coastguard Worker}
282*61c4878aSAndroid Build Coastguard Worker
283*61c4878aSAndroid Build Coastguard Workerpw_test("enqueue_heap_func_test") {
284*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
285*61c4878aSAndroid Build Coastguard Worker  sources = [ "enqueue_heap_func_test.cc" ]
286*61c4878aSAndroid Build Coastguard Worker  deps = [
287*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
288*61c4878aSAndroid Build Coastguard Worker    ":enqueue_heap_func",
289*61c4878aSAndroid Build Coastguard Worker  ]
290*61c4878aSAndroid Build Coastguard Worker}
291*61c4878aSAndroid Build Coastguard Worker
292*61c4878aSAndroid Build Coastguard Workerpw_source_set("join") {
293*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_async2/join.h" ]
294*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
295*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":dispatcher" ]
296*61c4878aSAndroid Build Coastguard Worker}
297*61c4878aSAndroid Build Coastguard Worker
298*61c4878aSAndroid Build Coastguard Workerpw_test("join_test") {
299*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_async2_DISPATCHER_BACKEND != ""
300*61c4878aSAndroid Build Coastguard Worker  sources = [ "join_test.cc" ]
301*61c4878aSAndroid Build Coastguard Worker  deps = [
302*61c4878aSAndroid Build Coastguard Worker    ":dispatcher",
303*61c4878aSAndroid Build Coastguard Worker    ":join",
304*61c4878aSAndroid Build Coastguard Worker  ]
305*61c4878aSAndroid Build Coastguard Worker}
306*61c4878aSAndroid Build Coastguard Worker
307*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
308*61c4878aSAndroid Build Coastguard Worker  tests = [
309*61c4878aSAndroid Build Coastguard Worker    ":allocate_task_test",
310*61c4878aSAndroid Build Coastguard Worker    ":dispatcher_test",
311*61c4878aSAndroid Build Coastguard Worker    ":dispatcher_thread_test",
312*61c4878aSAndroid Build Coastguard Worker    ":enqueue_heap_func_test",
313*61c4878aSAndroid Build Coastguard Worker    ":join_test",
314*61c4878aSAndroid Build Coastguard Worker    ":poll_test",
315*61c4878aSAndroid Build Coastguard Worker    ":pend_func_task_test",
316*61c4878aSAndroid Build Coastguard Worker    ":pendable_as_task_test",
317*61c4878aSAndroid Build Coastguard Worker    ":once_sender_test",
318*61c4878aSAndroid Build Coastguard Worker    ":simulated_time_provider_test",
319*61c4878aSAndroid Build Coastguard Worker    ":system_time_provider_test",
320*61c4878aSAndroid Build Coastguard Worker  ]
321*61c4878aSAndroid Build Coastguard Worker  if (pw_toolchain_CXX_STANDARD >= pw_toolchain_STANDARD.CXX20) {
322*61c4878aSAndroid Build Coastguard Worker    tests += [
323*61c4878aSAndroid Build Coastguard Worker      ":coro_test",
324*61c4878aSAndroid Build Coastguard Worker      ":coro_or_else_task_test",
325*61c4878aSAndroid Build Coastguard Worker    ]
326*61c4878aSAndroid Build Coastguard Worker  }
327*61c4878aSAndroid Build Coastguard Worker  group_deps = [ "examples" ]
328*61c4878aSAndroid Build Coastguard Worker}
329*61c4878aSAndroid Build Coastguard Worker
330*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
331*61c4878aSAndroid Build Coastguard Worker  inputs = [
332*61c4878aSAndroid Build Coastguard Worker    "examples/basic.cc",
333*61c4878aSAndroid Build Coastguard Worker    "examples/once_send_recv.cc",
334*61c4878aSAndroid Build Coastguard Worker  ]
335*61c4878aSAndroid Build Coastguard Worker  sources = [
336*61c4878aSAndroid Build Coastguard Worker    "backends.rst",
337*61c4878aSAndroid Build Coastguard Worker    "docs.rst",
338*61c4878aSAndroid Build Coastguard Worker    "guides.rst",
339*61c4878aSAndroid Build Coastguard Worker    "reference.rst",
340*61c4878aSAndroid Build Coastguard Worker  ]
341*61c4878aSAndroid Build Coastguard Worker}
342