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