xref: /aosp_15_r20/external/pigweed/pw_sync/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2021 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_build/facade.gni")
18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni")
19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_chrono/backend.gni")
20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni")
21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni")
22*61c4878aSAndroid Build Coastguard Workerimport("backend.gni")
23*61c4878aSAndroid Build Coastguard Worker
24*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") {
25*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public" ]
26*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
27*61c4878aSAndroid Build Coastguard Worker}
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Workerconfig("backend_config") {
30*61c4878aSAndroid Build Coastguard Worker  include_dirs = [ "public_overrides" ]
31*61c4878aSAndroid Build Coastguard Worker  visibility = [ ":*" ]
32*61c4878aSAndroid Build Coastguard Worker}
33*61c4878aSAndroid Build Coastguard Worker
34*61c4878aSAndroid Build Coastguard Workerpw_facade("binary_semaphore") {
35*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_BINARY_SEMAPHORE_BACKEND
36*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
37*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/binary_semaphore.h" ]
38*61c4878aSAndroid Build Coastguard Worker  public_deps = [
39*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
40*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
41*61c4878aSAndroid Build Coastguard Worker  ]
42*61c4878aSAndroid Build Coastguard Worker  sources = [ "binary_semaphore.cc" ]
43*61c4878aSAndroid Build Coastguard Worker}
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Workerpw_facade("counting_semaphore") {
46*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_COUNTING_SEMAPHORE_BACKEND
47*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
48*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/counting_semaphore.h" ]
49*61c4878aSAndroid Build Coastguard Worker  public_deps = [
50*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
51*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
52*61c4878aSAndroid Build Coastguard Worker  ]
53*61c4878aSAndroid Build Coastguard Worker  sources = [ "counting_semaphore.cc" ]
54*61c4878aSAndroid Build Coastguard Worker}
55*61c4878aSAndroid Build Coastguard Worker
56*61c4878aSAndroid Build Coastguard Workerpw_source_set("lock_annotations") {
57*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
58*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/lock_annotations.h" ]
59*61c4878aSAndroid Build Coastguard Worker  public_deps = [ "$dir_pw_preprocessor" ]
60*61c4878aSAndroid Build Coastguard Worker}
61*61c4878aSAndroid Build Coastguard Worker
62*61c4878aSAndroid Build Coastguard Workerpw_source_set("lock_traits") {
63*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
64*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/lock_traits.h" ]
65*61c4878aSAndroid Build Coastguard Worker}
66*61c4878aSAndroid Build Coastguard Worker
67*61c4878aSAndroid Build Coastguard Workerpw_source_set("borrow") {
68*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
69*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/borrow.h" ]
70*61c4878aSAndroid Build Coastguard Worker  public_deps = [
71*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
72*61c4878aSAndroid Build Coastguard Worker    ":lock_traits",
73*61c4878aSAndroid Build Coastguard Worker    ":virtual_basic_lockable",
74*61c4878aSAndroid Build Coastguard Worker    dir_pw_assert,
75*61c4878aSAndroid Build Coastguard Worker  ]
76*61c4878aSAndroid Build Coastguard Worker}
77*61c4878aSAndroid Build Coastguard Worker
78*61c4878aSAndroid Build Coastguard Workerpw_source_set("inline_borrowable") {
79*61c4878aSAndroid Build Coastguard Worker  public = [
80*61c4878aSAndroid Build Coastguard Worker    "public/pw_sync/inline_borrowable.h",
81*61c4878aSAndroid Build Coastguard Worker    "public/pw_sync/internal/borrowable_storage.h",
82*61c4878aSAndroid Build Coastguard Worker  ]
83*61c4878aSAndroid Build Coastguard Worker  public_deps = [
84*61c4878aSAndroid Build Coastguard Worker    ":borrow",
85*61c4878aSAndroid Build Coastguard Worker    ":mutex",
86*61c4878aSAndroid Build Coastguard Worker    ":virtual_basic_lockable",
87*61c4878aSAndroid Build Coastguard Worker  ]
88*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
89*61c4878aSAndroid Build Coastguard Worker}
90*61c4878aSAndroid Build Coastguard Worker
91*61c4878aSAndroid Build Coastguard Workerpw_source_set("virtual_basic_lockable") {
92*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
93*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/virtual_basic_lockable.h" ]
94*61c4878aSAndroid Build Coastguard Worker  public_deps = [
95*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
96*61c4878aSAndroid Build Coastguard Worker    dir_pw_polyfill,
97*61c4878aSAndroid Build Coastguard Worker  ]
98*61c4878aSAndroid Build Coastguard Worker}
99*61c4878aSAndroid Build Coastguard Worker
100*61c4878aSAndroid Build Coastguard Workerpw_facade("mutex") {
101*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_MUTEX_BACKEND
102*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
103*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/mutex.h" ]
104*61c4878aSAndroid Build Coastguard Worker  public_deps = [
105*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
106*61c4878aSAndroid Build Coastguard Worker    ":virtual_basic_lockable",
107*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
108*61c4878aSAndroid Build Coastguard Worker  ]
109*61c4878aSAndroid Build Coastguard Worker  sources = [ "mutex.cc" ]
110*61c4878aSAndroid Build Coastguard Worker}
111*61c4878aSAndroid Build Coastguard Worker
112*61c4878aSAndroid Build Coastguard Workerpw_facade("timed_mutex") {
113*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_TIMED_MUTEX_BACKEND
114*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
115*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/timed_mutex.h" ]
116*61c4878aSAndroid Build Coastguard Worker  public_deps = [
117*61c4878aSAndroid Build Coastguard Worker    ":mutex",
118*61c4878aSAndroid Build Coastguard Worker    ":virtual_basic_lockable",
119*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
120*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
121*61c4878aSAndroid Build Coastguard Worker  ]
122*61c4878aSAndroid Build Coastguard Worker  sources = [ "timed_mutex.cc" ]
123*61c4878aSAndroid Build Coastguard Worker}
124*61c4878aSAndroid Build Coastguard Worker
125*61c4878aSAndroid Build Coastguard Workerpw_facade("recursive_mutex") {
126*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_RECURSIVE_MUTEX_BACKEND
127*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
128*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/recursive_mutex.h" ]
129*61c4878aSAndroid Build Coastguard Worker  public_deps = [
130*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
131*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
132*61c4878aSAndroid Build Coastguard Worker  ]
133*61c4878aSAndroid Build Coastguard Worker  sources = [ "recursive_mutex.cc" ]
134*61c4878aSAndroid Build Coastguard Worker  visibility = [
135*61c4878aSAndroid Build Coastguard Worker    ":*",
136*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync_baremetal/*",
137*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync_stl/*",
138*61c4878aSAndroid Build Coastguard Worker  ]
139*61c4878aSAndroid Build Coastguard Worker}
140*61c4878aSAndroid Build Coastguard Worker
141*61c4878aSAndroid Build Coastguard Workerpw_facade("interrupt_spin_lock") {
142*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_INTERRUPT_SPIN_LOCK_BACKEND
143*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
144*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/interrupt_spin_lock.h" ]
145*61c4878aSAndroid Build Coastguard Worker  public_deps = [
146*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
147*61c4878aSAndroid Build Coastguard Worker    ":virtual_basic_lockable",
148*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
149*61c4878aSAndroid Build Coastguard Worker  ]
150*61c4878aSAndroid Build Coastguard Worker  sources = [ "interrupt_spin_lock.cc" ]
151*61c4878aSAndroid Build Coastguard Worker}
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Workerpw_facade("thread_notification") {
154*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_THREAD_NOTIFICATION_BACKEND
155*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
156*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/thread_notification.h" ]
157*61c4878aSAndroid Build Coastguard Worker}
158*61c4878aSAndroid Build Coastguard Worker
159*61c4878aSAndroid Build Coastguard Workerpw_facade("timed_thread_notification") {
160*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND
161*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
162*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/timed_thread_notification.h" ]
163*61c4878aSAndroid Build Coastguard Worker  public_deps = [
164*61c4878aSAndroid Build Coastguard Worker    ":thread_notification",
165*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
166*61c4878aSAndroid Build Coastguard Worker  ]
167*61c4878aSAndroid Build Coastguard Worker}
168*61c4878aSAndroid Build Coastguard Worker
169*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::ThreadNotification based on
170*61c4878aSAndroid Build Coastguard Worker# pw::sync::BinarySemaphore.
171*61c4878aSAndroid Build Coastguard Workerpw_source_set("binary_semaphore_thread_notification_backend") {
172*61c4878aSAndroid Build Coastguard Worker  public_configs = [
173*61c4878aSAndroid Build Coastguard Worker    ":public_include_path",
174*61c4878aSAndroid Build Coastguard Worker    ":backend_config",
175*61c4878aSAndroid Build Coastguard Worker  ]
176*61c4878aSAndroid Build Coastguard Worker  public = [
177*61c4878aSAndroid Build Coastguard Worker    "public/pw_sync/backends/binary_semaphore_thread_notification_inline.h",
178*61c4878aSAndroid Build Coastguard Worker    "public/pw_sync/backends/binary_semaphore_thread_notification_native.h",
179*61c4878aSAndroid Build Coastguard Worker    "public_overrides/pw_sync_backend/thread_notification_inline.h",
180*61c4878aSAndroid Build Coastguard Worker    "public_overrides/pw_sync_backend/thread_notification_native.h",
181*61c4878aSAndroid Build Coastguard Worker  ]
182*61c4878aSAndroid Build Coastguard Worker  public_deps = [
183*61c4878aSAndroid Build Coastguard Worker    ":binary_semaphore",
184*61c4878aSAndroid Build Coastguard Worker    ":thread_notification.facade",
185*61c4878aSAndroid Build Coastguard Worker  ]
186*61c4878aSAndroid Build Coastguard Worker}
187*61c4878aSAndroid Build Coastguard Worker
188*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::TimedThreadNotification based
189*61c4878aSAndroid Build Coastguard Worker# on pw::sync::BinarySemaphore.
190*61c4878aSAndroid Build Coastguard Workerpw_source_set("binary_semaphore_timed_thread_notification_backend") {
191*61c4878aSAndroid Build Coastguard Worker  public_configs = [
192*61c4878aSAndroid Build Coastguard Worker    ":public_include_path",
193*61c4878aSAndroid Build Coastguard Worker    ":backend_config",
194*61c4878aSAndroid Build Coastguard Worker  ]
195*61c4878aSAndroid Build Coastguard Worker  public = [
196*61c4878aSAndroid Build Coastguard Worker    "public/pw_sync/backends/binary_semaphore_timed_thread_notification_inline.h",
197*61c4878aSAndroid Build Coastguard Worker    "public_overrides/pw_sync_backend/timed_thread_notification_inline.h",
198*61c4878aSAndroid Build Coastguard Worker  ]
199*61c4878aSAndroid Build Coastguard Worker  public_deps = [
200*61c4878aSAndroid Build Coastguard Worker    ":binary_semaphore_thread_notification_backend",
201*61c4878aSAndroid Build Coastguard Worker    ":timed_thread_notification.facade",
202*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
203*61c4878aSAndroid Build Coastguard Worker  ]
204*61c4878aSAndroid Build Coastguard Worker}
205*61c4878aSAndroid Build Coastguard Worker
206*61c4878aSAndroid Build Coastguard Workerpw_source_set("yield_core") {
207*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/yield_core.h" ]
208*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
209*61c4878aSAndroid Build Coastguard Worker}
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Workerpw_facade("condition_variable") {
212*61c4878aSAndroid Build Coastguard Worker  backend = pw_sync_CONDITION_VARIABLE_BACKEND
213*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
214*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/condition_variable.h" ]
215*61c4878aSAndroid Build Coastguard Worker  public_deps = [
216*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_chrono:system_clock",
217*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:mutex",
218*61c4878aSAndroid Build Coastguard Worker  ]
219*61c4878aSAndroid Build Coastguard Worker}
220*61c4878aSAndroid Build Coastguard Worker
221*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") {
222*61c4878aSAndroid Build Coastguard Worker  tests = [
223*61c4878aSAndroid Build Coastguard Worker    ":lock_traits_test",
224*61c4878aSAndroid Build Coastguard Worker    ":borrow_test",
225*61c4878aSAndroid Build Coastguard Worker    ":binary_semaphore_facade_test",
226*61c4878aSAndroid Build Coastguard Worker    ":counting_semaphore_facade_test",
227*61c4878aSAndroid Build Coastguard Worker    ":mutex_facade_test",
228*61c4878aSAndroid Build Coastguard Worker    ":timed_mutex_facade_test",
229*61c4878aSAndroid Build Coastguard Worker    ":recursive_mutex_facade_test",
230*61c4878aSAndroid Build Coastguard Worker    ":interrupt_spin_lock_facade_test",
231*61c4878aSAndroid Build Coastguard Worker    ":thread_notification_facade_test",
232*61c4878aSAndroid Build Coastguard Worker    ":timed_thread_notification_facade_test",
233*61c4878aSAndroid Build Coastguard Worker    ":inline_borrowable_test",
234*61c4878aSAndroid Build Coastguard Worker  ]
235*61c4878aSAndroid Build Coastguard Worker}
236*61c4878aSAndroid Build Coastguard Worker
237*61c4878aSAndroid Build Coastguard Workerpw_source_set("lock_testing") {
238*61c4878aSAndroid Build Coastguard Worker  public_configs = [ ":public_include_path" ]
239*61c4878aSAndroid Build Coastguard Worker  public = [ "public/pw_sync/lock_testing.h" ]
240*61c4878aSAndroid Build Coastguard Worker  sources = [ "lock_testing.cc" ]
241*61c4878aSAndroid Build Coastguard Worker  public_deps = [ ":virtual_basic_lockable" ]
242*61c4878aSAndroid Build Coastguard Worker  deps = [ dir_pw_assert ]
243*61c4878aSAndroid Build Coastguard Worker}
244*61c4878aSAndroid Build Coastguard Worker
245*61c4878aSAndroid Build Coastguard Workerpw_source_set("borrow_lockable_tests") {
246*61c4878aSAndroid Build Coastguard Worker  public = [ "pw_sync_private/borrow_lockable_tests.h" ]
247*61c4878aSAndroid Build Coastguard Worker  public_deps = [
248*61c4878aSAndroid Build Coastguard Worker    ":borrow",
249*61c4878aSAndroid Build Coastguard Worker    ":lock_traits",
250*61c4878aSAndroid Build Coastguard Worker  ]
251*61c4878aSAndroid Build Coastguard Worker}
252*61c4878aSAndroid Build Coastguard Worker
253*61c4878aSAndroid Build Coastguard Workerpw_test("lock_traits_test") {
254*61c4878aSAndroid Build Coastguard Worker  sources = [ "lock_traits_test.cc" ]
255*61c4878aSAndroid Build Coastguard Worker  deps = [
256*61c4878aSAndroid Build Coastguard Worker    ":lock_testing",
257*61c4878aSAndroid Build Coastguard Worker    ":lock_traits",
258*61c4878aSAndroid Build Coastguard Worker  ]
259*61c4878aSAndroid Build Coastguard Worker}
260*61c4878aSAndroid Build Coastguard Worker
261*61c4878aSAndroid Build Coastguard Workerpw_test("borrow_test") {
262*61c4878aSAndroid Build Coastguard Worker  sources = [ "borrow_test.cc" ]
263*61c4878aSAndroid Build Coastguard Worker  deps = [
264*61c4878aSAndroid Build Coastguard Worker    ":borrow",
265*61c4878aSAndroid Build Coastguard Worker    ":borrow_lockable_tests",
266*61c4878aSAndroid Build Coastguard Worker    ":lock_testing",
267*61c4878aSAndroid Build Coastguard Worker  ]
268*61c4878aSAndroid Build Coastguard Worker}
269*61c4878aSAndroid Build Coastguard Worker
270*61c4878aSAndroid Build Coastguard Workerpw_test("inline_borrowable_test") {
271*61c4878aSAndroid Build Coastguard Worker  sources = [ "inline_borrowable_test.cc" ]
272*61c4878aSAndroid Build Coastguard Worker  deps = [
273*61c4878aSAndroid Build Coastguard Worker    ":inline_borrowable",
274*61c4878aSAndroid Build Coastguard Worker    ":interrupt_spin_lock",
275*61c4878aSAndroid Build Coastguard Worker    ":lock_annotations",
276*61c4878aSAndroid Build Coastguard Worker    ":mutex",
277*61c4878aSAndroid Build Coastguard Worker  ]
278*61c4878aSAndroid Build Coastguard Worker}
279*61c4878aSAndroid Build Coastguard Worker
280*61c4878aSAndroid Build Coastguard Workerpw_test("binary_semaphore_facade_test") {
281*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_BINARY_SEMAPHORE_BACKEND != ""
282*61c4878aSAndroid Build Coastguard Worker  sources = [
283*61c4878aSAndroid Build Coastguard Worker    "binary_semaphore_facade_test.cc",
284*61c4878aSAndroid Build Coastguard Worker    "binary_semaphore_facade_test_c.c",
285*61c4878aSAndroid Build Coastguard Worker  ]
286*61c4878aSAndroid Build Coastguard Worker  deps = [
287*61c4878aSAndroid Build Coastguard Worker    ":binary_semaphore",
288*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
289*61c4878aSAndroid Build Coastguard Worker    pw_sync_BINARY_SEMAPHORE_BACKEND,
290*61c4878aSAndroid Build Coastguard Worker  ]
291*61c4878aSAndroid Build Coastguard Worker}
292*61c4878aSAndroid Build Coastguard Worker
293*61c4878aSAndroid Build Coastguard Workerpw_test("counting_semaphore_facade_test") {
294*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_COUNTING_SEMAPHORE_BACKEND != ""
295*61c4878aSAndroid Build Coastguard Worker  sources = [
296*61c4878aSAndroid Build Coastguard Worker    "counting_semaphore_facade_test.cc",
297*61c4878aSAndroid Build Coastguard Worker    "counting_semaphore_facade_test_c.c",
298*61c4878aSAndroid Build Coastguard Worker  ]
299*61c4878aSAndroid Build Coastguard Worker  deps = [
300*61c4878aSAndroid Build Coastguard Worker    ":counting_semaphore",
301*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
302*61c4878aSAndroid Build Coastguard Worker    pw_sync_COUNTING_SEMAPHORE_BACKEND,
303*61c4878aSAndroid Build Coastguard Worker  ]
304*61c4878aSAndroid Build Coastguard Worker}
305*61c4878aSAndroid Build Coastguard Worker
306*61c4878aSAndroid Build Coastguard Workerpw_test("mutex_facade_test") {
307*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_MUTEX_BACKEND != ""
308*61c4878aSAndroid Build Coastguard Worker  sources = [
309*61c4878aSAndroid Build Coastguard Worker    "mutex_facade_test.cc",
310*61c4878aSAndroid Build Coastguard Worker    "mutex_facade_test_c.c",
311*61c4878aSAndroid Build Coastguard Worker  ]
312*61c4878aSAndroid Build Coastguard Worker  deps = [
313*61c4878aSAndroid Build Coastguard Worker    ":borrow_lockable_tests",
314*61c4878aSAndroid Build Coastguard Worker    ":mutex",
315*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
316*61c4878aSAndroid Build Coastguard Worker    pw_sync_MUTEX_BACKEND,
317*61c4878aSAndroid Build Coastguard Worker  ]
318*61c4878aSAndroid Build Coastguard Worker}
319*61c4878aSAndroid Build Coastguard Worker
320*61c4878aSAndroid Build Coastguard Workerpw_test("timed_mutex_facade_test") {
321*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_TIMED_MUTEX_BACKEND != ""
322*61c4878aSAndroid Build Coastguard Worker  sources = [
323*61c4878aSAndroid Build Coastguard Worker    "timed_mutex_facade_test.cc",
324*61c4878aSAndroid Build Coastguard Worker    "timed_mutex_facade_test_c.c",
325*61c4878aSAndroid Build Coastguard Worker  ]
326*61c4878aSAndroid Build Coastguard Worker  deps = [
327*61c4878aSAndroid Build Coastguard Worker    ":borrow_lockable_tests",
328*61c4878aSAndroid Build Coastguard Worker    ":timed_mutex",
329*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
330*61c4878aSAndroid Build Coastguard Worker    pw_sync_TIMED_MUTEX_BACKEND,
331*61c4878aSAndroid Build Coastguard Worker  ]
332*61c4878aSAndroid Build Coastguard Worker}
333*61c4878aSAndroid Build Coastguard Worker
334*61c4878aSAndroid Build Coastguard Workerpw_test("recursive_mutex_facade_test") {
335*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_RECURSIVE_MUTEX_BACKEND != ""
336*61c4878aSAndroid Build Coastguard Worker  sources = [
337*61c4878aSAndroid Build Coastguard Worker    "recursive_mutex_facade_test.cc",
338*61c4878aSAndroid Build Coastguard Worker    "recursive_mutex_facade_test_c.c",
339*61c4878aSAndroid Build Coastguard Worker  ]
340*61c4878aSAndroid Build Coastguard Worker  deps = [
341*61c4878aSAndroid Build Coastguard Worker    ":recursive_mutex",
342*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
343*61c4878aSAndroid Build Coastguard Worker    pw_sync_RECURSIVE_MUTEX_BACKEND,
344*61c4878aSAndroid Build Coastguard Worker  ]
345*61c4878aSAndroid Build Coastguard Worker}
346*61c4878aSAndroid Build Coastguard Worker
347*61c4878aSAndroid Build Coastguard Workerpw_test("interrupt_spin_lock_facade_test") {
348*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_INTERRUPT_SPIN_LOCK_BACKEND != ""
349*61c4878aSAndroid Build Coastguard Worker  sources = [
350*61c4878aSAndroid Build Coastguard Worker    "interrupt_spin_lock_facade_test.cc",
351*61c4878aSAndroid Build Coastguard Worker    "interrupt_spin_lock_facade_test_c.c",
352*61c4878aSAndroid Build Coastguard Worker  ]
353*61c4878aSAndroid Build Coastguard Worker  deps = [
354*61c4878aSAndroid Build Coastguard Worker    ":borrow_lockable_tests",
355*61c4878aSAndroid Build Coastguard Worker    ":interrupt_spin_lock",
356*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_preprocessor",
357*61c4878aSAndroid Build Coastguard Worker    pw_sync_INTERRUPT_SPIN_LOCK_BACKEND,
358*61c4878aSAndroid Build Coastguard Worker  ]
359*61c4878aSAndroid Build Coastguard Worker
360*61c4878aSAndroid Build Coastguard Worker  # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
361*61c4878aSAndroid Build Coastguard Worker  # indefinitely.
362*61c4878aSAndroid Build Coastguard Worker  if (pw_build_EXECUTABLE_TARGET_TYPE == "pico_executable") {
363*61c4878aSAndroid Build Coastguard Worker    enable_if = false
364*61c4878aSAndroid Build Coastguard Worker  }
365*61c4878aSAndroid Build Coastguard Worker}
366*61c4878aSAndroid Build Coastguard Worker
367*61c4878aSAndroid Build Coastguard Workerpw_test("thread_notification_facade_test") {
368*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_THREAD_NOTIFICATION_BACKEND != ""
369*61c4878aSAndroid Build Coastguard Worker  sources = [ "thread_notification_facade_test.cc" ]
370*61c4878aSAndroid Build Coastguard Worker  deps = [
371*61c4878aSAndroid Build Coastguard Worker    ":thread_notification",
372*61c4878aSAndroid Build Coastguard Worker    pw_sync_THREAD_NOTIFICATION_BACKEND,
373*61c4878aSAndroid Build Coastguard Worker  ]
374*61c4878aSAndroid Build Coastguard Worker}
375*61c4878aSAndroid Build Coastguard Worker
376*61c4878aSAndroid Build Coastguard Workerpw_test("timed_thread_notification_facade_test") {
377*61c4878aSAndroid Build Coastguard Worker  enable_if = pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND != ""
378*61c4878aSAndroid Build Coastguard Worker  sources = [ "timed_thread_notification_facade_test.cc" ]
379*61c4878aSAndroid Build Coastguard Worker  deps = [
380*61c4878aSAndroid Build Coastguard Worker    ":timed_thread_notification",
381*61c4878aSAndroid Build Coastguard Worker    pw_sync_TIMED_THREAD_NOTIFICATION_BACKEND,
382*61c4878aSAndroid Build Coastguard Worker  ]
383*61c4878aSAndroid Build Coastguard Worker}
384*61c4878aSAndroid Build Coastguard Worker
385*61c4878aSAndroid Build Coastguard Worker# This needs to be instantiated per platform that provides
386*61c4878aSAndroid Build Coastguard Worker# an implementation of $dir_pw_thread:test_threads and
387*61c4878aSAndroid Build Coastguard Worker# $dir_pw_sync:condition_variable.
388*61c4878aSAndroid Build Coastguard Workerpw_source_set("condition_variable_test") {
389*61c4878aSAndroid Build Coastguard Worker  testonly = pw_unit_test_TESTONLY
390*61c4878aSAndroid Build Coastguard Worker  sources = [ "condition_variable_test.cc" ]
391*61c4878aSAndroid Build Coastguard Worker  deps = [
392*61c4878aSAndroid Build Coastguard Worker    ":condition_variable",
393*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_containers:vector",
394*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:mutex",
395*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_sync:timed_thread_notification",
396*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:non_portable_test_thread_options",
397*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:sleep",
398*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_thread:thread",
399*61c4878aSAndroid Build Coastguard Worker    "$dir_pw_unit_test",
400*61c4878aSAndroid Build Coastguard Worker  ]
401*61c4878aSAndroid Build Coastguard Worker}
402*61c4878aSAndroid Build Coastguard Worker
403*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") {
404*61c4878aSAndroid Build Coastguard Worker  sources = [
405*61c4878aSAndroid Build Coastguard Worker    "backends.rst",
406*61c4878aSAndroid Build Coastguard Worker    "docs.rst",
407*61c4878aSAndroid Build Coastguard Worker  ]
408*61c4878aSAndroid Build Coastguard Worker}
409