xref: /aosp_15_r20/external/pigweed/pw_sync/BUILD.bazel (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 Workerload(
16*61c4878aSAndroid Build Coastguard Worker    "//pw_build:compatibility.bzl",
17*61c4878aSAndroid Build Coastguard Worker    "host_backend_alias",
18*61c4878aSAndroid Build Coastguard Worker    "incompatible_with_mcu",
19*61c4878aSAndroid Build Coastguard Worker)
20*61c4878aSAndroid Build Coastguard Workerload("//pw_build:pw_facade.bzl", "pw_facade")
21*61c4878aSAndroid Build Coastguard Workerload("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
22*61c4878aSAndroid Build Coastguard Worker
23*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
24*61c4878aSAndroid Build Coastguard Worker
25*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Workerpw_facade(
28*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore",
29*61c4878aSAndroid Build Coastguard Worker    srcs = [
30*61c4878aSAndroid Build Coastguard Worker        "binary_semaphore.cc",
31*61c4878aSAndroid Build Coastguard Worker    ],
32*61c4878aSAndroid Build Coastguard Worker    hdrs = [
33*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/binary_semaphore.h",
34*61c4878aSAndroid Build Coastguard Worker    ],
35*61c4878aSAndroid Build Coastguard Worker    backend = ":binary_semaphore_backend",
36*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
37*61c4878aSAndroid Build Coastguard Worker    deps = [
38*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
39*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
40*61c4878aSAndroid Build Coastguard Worker    ],
41*61c4878aSAndroid Build Coastguard Worker)
42*61c4878aSAndroid Build Coastguard Worker
43*61c4878aSAndroid Build Coastguard Workerlabel_flag(
44*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore_backend",
45*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":binary_semaphore_unspecified_backend",
46*61c4878aSAndroid Build Coastguard Worker)
47*61c4878aSAndroid Build Coastguard Worker
48*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
49*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore_unspecified_backend",
50*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:binary_semaphore",
51*61c4878aSAndroid Build Coastguard Worker)
52*61c4878aSAndroid Build Coastguard Worker
53*61c4878aSAndroid Build Coastguard Workerpw_facade(
54*61c4878aSAndroid Build Coastguard Worker    name = "counting_semaphore",
55*61c4878aSAndroid Build Coastguard Worker    srcs = [
56*61c4878aSAndroid Build Coastguard Worker        "counting_semaphore.cc",
57*61c4878aSAndroid Build Coastguard Worker    ],
58*61c4878aSAndroid Build Coastguard Worker    hdrs = [
59*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/counting_semaphore.h",
60*61c4878aSAndroid Build Coastguard Worker    ],
61*61c4878aSAndroid Build Coastguard Worker    backend = ":counting_semaphore_backend",
62*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
63*61c4878aSAndroid Build Coastguard Worker    deps = [
64*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
65*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
66*61c4878aSAndroid Build Coastguard Worker    ],
67*61c4878aSAndroid Build Coastguard Worker)
68*61c4878aSAndroid Build Coastguard Worker
69*61c4878aSAndroid Build Coastguard Workerlabel_flag(
70*61c4878aSAndroid Build Coastguard Worker    name = "counting_semaphore_backend",
71*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":counting_semaphore_unspecified_backend",
72*61c4878aSAndroid Build Coastguard Worker)
73*61c4878aSAndroid Build Coastguard Worker
74*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
75*61c4878aSAndroid Build Coastguard Worker    name = "counting_semaphore_unspecified_backend",
76*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:counting_semaphore",
77*61c4878aSAndroid Build Coastguard Worker)
78*61c4878aSAndroid Build Coastguard Worker
79*61c4878aSAndroid Build Coastguard Workercc_library(
80*61c4878aSAndroid Build Coastguard Worker    name = "lock_annotations",
81*61c4878aSAndroid Build Coastguard Worker    hdrs = [
82*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/lock_annotations.h",
83*61c4878aSAndroid Build Coastguard Worker    ],
84*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
85*61c4878aSAndroid Build Coastguard Worker    deps = [
86*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
87*61c4878aSAndroid Build Coastguard Worker    ],
88*61c4878aSAndroid Build Coastguard Worker)
89*61c4878aSAndroid Build Coastguard Worker
90*61c4878aSAndroid Build Coastguard Workercc_library(
91*61c4878aSAndroid Build Coastguard Worker    name = "lock_traits",
92*61c4878aSAndroid Build Coastguard Worker    hdrs = [
93*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/lock_traits.h",
94*61c4878aSAndroid Build Coastguard Worker    ],
95*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
96*61c4878aSAndroid Build Coastguard Worker)
97*61c4878aSAndroid Build Coastguard Worker
98*61c4878aSAndroid Build Coastguard Workercc_library(
99*61c4878aSAndroid Build Coastguard Worker    name = "borrow",
100*61c4878aSAndroid Build Coastguard Worker    hdrs = [
101*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/borrow.h",
102*61c4878aSAndroid Build Coastguard Worker    ],
103*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
104*61c4878aSAndroid Build Coastguard Worker    deps = [
105*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
106*61c4878aSAndroid Build Coastguard Worker        ":lock_traits",
107*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
108*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
109*61c4878aSAndroid Build Coastguard Worker    ],
110*61c4878aSAndroid Build Coastguard Worker)
111*61c4878aSAndroid Build Coastguard Worker
112*61c4878aSAndroid Build Coastguard Workercc_library(
113*61c4878aSAndroid Build Coastguard Worker    name = "inline_borrowable",
114*61c4878aSAndroid Build Coastguard Worker    hdrs = [
115*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/inline_borrowable.h",
116*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/internal/borrowable_storage.h",
117*61c4878aSAndroid Build Coastguard Worker    ],
118*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
119*61c4878aSAndroid Build Coastguard Worker    deps = [
120*61c4878aSAndroid Build Coastguard Worker        ":borrow",
121*61c4878aSAndroid Build Coastguard Worker        ":mutex",
122*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
123*61c4878aSAndroid Build Coastguard Worker    ],
124*61c4878aSAndroid Build Coastguard Worker)
125*61c4878aSAndroid Build Coastguard Worker
126*61c4878aSAndroid Build Coastguard Workercc_library(
127*61c4878aSAndroid Build Coastguard Worker    name = "virtual_basic_lockable",
128*61c4878aSAndroid Build Coastguard Worker    hdrs = [
129*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/virtual_basic_lockable.h",
130*61c4878aSAndroid Build Coastguard Worker    ],
131*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
132*61c4878aSAndroid Build Coastguard Worker    deps = [
133*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
134*61c4878aSAndroid Build Coastguard Worker        "//pw_polyfill",
135*61c4878aSAndroid Build Coastguard Worker    ],
136*61c4878aSAndroid Build Coastguard Worker)
137*61c4878aSAndroid Build Coastguard Worker
138*61c4878aSAndroid Build Coastguard Workerpw_facade(
139*61c4878aSAndroid Build Coastguard Worker    name = "mutex",
140*61c4878aSAndroid Build Coastguard Worker    srcs = [
141*61c4878aSAndroid Build Coastguard Worker        "mutex.cc",
142*61c4878aSAndroid Build Coastguard Worker    ],
143*61c4878aSAndroid Build Coastguard Worker    hdrs = [
144*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/mutex.h",
145*61c4878aSAndroid Build Coastguard Worker    ],
146*61c4878aSAndroid Build Coastguard Worker    backend = ":mutex_backend",
147*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
148*61c4878aSAndroid Build Coastguard Worker    deps = [
149*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
150*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
151*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
152*61c4878aSAndroid Build Coastguard Worker    ],
153*61c4878aSAndroid Build Coastguard Worker)
154*61c4878aSAndroid Build Coastguard Worker
155*61c4878aSAndroid Build Coastguard Workerlabel_flag(
156*61c4878aSAndroid Build Coastguard Worker    name = "mutex_backend",
157*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":mutex_unspecified_backend",
158*61c4878aSAndroid Build Coastguard Worker)
159*61c4878aSAndroid Build Coastguard Worker
160*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
161*61c4878aSAndroid Build Coastguard Worker    name = "mutex_unspecified_backend",
162*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:mutex",
163*61c4878aSAndroid Build Coastguard Worker)
164*61c4878aSAndroid Build Coastguard Worker
165*61c4878aSAndroid Build Coastguard Workerpw_facade(
166*61c4878aSAndroid Build Coastguard Worker    name = "timed_mutex",
167*61c4878aSAndroid Build Coastguard Worker    srcs = [
168*61c4878aSAndroid Build Coastguard Worker        "timed_mutex.cc",
169*61c4878aSAndroid Build Coastguard Worker    ],
170*61c4878aSAndroid Build Coastguard Worker    hdrs = [
171*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/timed_mutex.h",
172*61c4878aSAndroid Build Coastguard Worker    ],
173*61c4878aSAndroid Build Coastguard Worker    backend = ":timed_mutex_backend",
174*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
175*61c4878aSAndroid Build Coastguard Worker    deps = [
176*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
177*61c4878aSAndroid Build Coastguard Worker        ":mutex",
178*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
179*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
180*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
181*61c4878aSAndroid Build Coastguard Worker    ],
182*61c4878aSAndroid Build Coastguard Worker)
183*61c4878aSAndroid Build Coastguard Worker
184*61c4878aSAndroid Build Coastguard Workerlabel_flag(
185*61c4878aSAndroid Build Coastguard Worker    name = "timed_mutex_backend",
186*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":timed_mutex_unspecified_backend",
187*61c4878aSAndroid Build Coastguard Worker)
188*61c4878aSAndroid Build Coastguard Worker
189*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
190*61c4878aSAndroid Build Coastguard Worker    name = "timed_mutex_unspecified_backend",
191*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:timed_mutex",
192*61c4878aSAndroid Build Coastguard Worker)
193*61c4878aSAndroid Build Coastguard Worker
194*61c4878aSAndroid Build Coastguard Workerpw_facade(
195*61c4878aSAndroid Build Coastguard Worker    name = "recursive_mutex",
196*61c4878aSAndroid Build Coastguard Worker    srcs = ["recursive_mutex.cc"],
197*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_sync/recursive_mutex.h"],
198*61c4878aSAndroid Build Coastguard Worker    backend = ":recursive_mutex_backend",
199*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
200*61c4878aSAndroid Build Coastguard Worker    deps = [
201*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
202*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
203*61c4878aSAndroid Build Coastguard Worker    ],
204*61c4878aSAndroid Build Coastguard Worker)
205*61c4878aSAndroid Build Coastguard Worker
206*61c4878aSAndroid Build Coastguard Workerlabel_flag(
207*61c4878aSAndroid Build Coastguard Worker    name = "recursive_mutex_backend",
208*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":recursive_mutex_unspecified_backend",
209*61c4878aSAndroid Build Coastguard Worker)
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
212*61c4878aSAndroid Build Coastguard Worker    name = "recursive_mutex_unspecified_backend",
213*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:recursive_mutex",
214*61c4878aSAndroid Build Coastguard Worker)
215*61c4878aSAndroid Build Coastguard Worker
216*61c4878aSAndroid Build Coastguard Workerpw_facade(
217*61c4878aSAndroid Build Coastguard Worker    name = "interrupt_spin_lock",
218*61c4878aSAndroid Build Coastguard Worker    srcs = [
219*61c4878aSAndroid Build Coastguard Worker        "interrupt_spin_lock.cc",
220*61c4878aSAndroid Build Coastguard Worker    ],
221*61c4878aSAndroid Build Coastguard Worker    hdrs = [
222*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/interrupt_spin_lock.h",
223*61c4878aSAndroid Build Coastguard Worker    ],
224*61c4878aSAndroid Build Coastguard Worker    backend = ":interrupt_spin_lock_backend",
225*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
226*61c4878aSAndroid Build Coastguard Worker    deps = [
227*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
228*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
229*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
230*61c4878aSAndroid Build Coastguard Worker    ],
231*61c4878aSAndroid Build Coastguard Worker)
232*61c4878aSAndroid Build Coastguard Worker
233*61c4878aSAndroid Build Coastguard Workerlabel_flag(
234*61c4878aSAndroid Build Coastguard Worker    name = "interrupt_spin_lock_backend",
235*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":interrupt_spin_lock_unspecified_backend",
236*61c4878aSAndroid Build Coastguard Worker)
237*61c4878aSAndroid Build Coastguard Worker
238*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
239*61c4878aSAndroid Build Coastguard Worker    name = "interrupt_spin_lock_unspecified_backend",
240*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_sync_stl:interrupt_spin_lock",
241*61c4878aSAndroid Build Coastguard Worker)
242*61c4878aSAndroid Build Coastguard Worker
243*61c4878aSAndroid Build Coastguard Workerpw_facade(
244*61c4878aSAndroid Build Coastguard Worker    name = "thread_notification",
245*61c4878aSAndroid Build Coastguard Worker    hdrs = [
246*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/thread_notification.h",
247*61c4878aSAndroid Build Coastguard Worker    ],
248*61c4878aSAndroid Build Coastguard Worker    backend = ":thread_notification_backend",
249*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
250*61c4878aSAndroid Build Coastguard Worker    deps = [
251*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
252*61c4878aSAndroid Build Coastguard Worker    ],
253*61c4878aSAndroid Build Coastguard Worker)
254*61c4878aSAndroid Build Coastguard Worker
255*61c4878aSAndroid Build Coastguard Workerlabel_flag(
256*61c4878aSAndroid Build Coastguard Worker    name = "thread_notification_backend",
257*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":thread_notification_unspecified_backend",
258*61c4878aSAndroid Build Coastguard Worker)
259*61c4878aSAndroid Build Coastguard Worker
260*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
261*61c4878aSAndroid Build Coastguard Worker    name = "thread_notification_unspecified_backend",
262*61c4878aSAndroid Build Coastguard Worker    backend = ":binary_semaphore_thread_notification_backend",
263*61c4878aSAndroid Build Coastguard Worker)
264*61c4878aSAndroid Build Coastguard Worker
265*61c4878aSAndroid Build Coastguard Workerpw_facade(
266*61c4878aSAndroid Build Coastguard Worker    name = "timed_thread_notification",
267*61c4878aSAndroid Build Coastguard Worker    hdrs = [
268*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/timed_thread_notification.h",
269*61c4878aSAndroid Build Coastguard Worker    ],
270*61c4878aSAndroid Build Coastguard Worker    backend = ":timed_thread_notification_backend",
271*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
272*61c4878aSAndroid Build Coastguard Worker    deps = [
273*61c4878aSAndroid Build Coastguard Worker        ":thread_notification",
274*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
275*61c4878aSAndroid Build Coastguard Worker    ],
276*61c4878aSAndroid Build Coastguard Worker)
277*61c4878aSAndroid Build Coastguard Worker
278*61c4878aSAndroid Build Coastguard Workerlabel_flag(
279*61c4878aSAndroid Build Coastguard Worker    name = "timed_thread_notification_backend",
280*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":timed_thread_notification_unspecified_backend",
281*61c4878aSAndroid Build Coastguard Worker)
282*61c4878aSAndroid Build Coastguard Worker
283*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
284*61c4878aSAndroid Build Coastguard Worker    name = "timed_thread_notification_unspecified_backend",
285*61c4878aSAndroid Build Coastguard Worker    backend = ":binary_semaphore_timed_thread_notification_backend",
286*61c4878aSAndroid Build Coastguard Worker)
287*61c4878aSAndroid Build Coastguard Worker
288*61c4878aSAndroid Build Coastguard Workercc_library(
289*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore_thread_notification_backend",
290*61c4878aSAndroid Build Coastguard Worker    hdrs = [
291*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/backends/binary_semaphore_thread_notification_inline.h",
292*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/backends/binary_semaphore_thread_notification_native.h",
293*61c4878aSAndroid Build Coastguard Worker        "public_overrides/pw_sync_backend/thread_notification_inline.h",
294*61c4878aSAndroid Build Coastguard Worker        "public_overrides/pw_sync_backend/thread_notification_native.h",
295*61c4878aSAndroid Build Coastguard Worker    ],
296*61c4878aSAndroid Build Coastguard Worker    includes = [
297*61c4878aSAndroid Build Coastguard Worker        "public",
298*61c4878aSAndroid Build Coastguard Worker        "public_overrides",
299*61c4878aSAndroid Build Coastguard Worker    ],
300*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = incompatible_with_mcu(),
301*61c4878aSAndroid Build Coastguard Worker    deps = [
302*61c4878aSAndroid Build Coastguard Worker        ":binary_semaphore",
303*61c4878aSAndroid Build Coastguard Worker        ":thread_notification.facade",
304*61c4878aSAndroid Build Coastguard Worker    ],
305*61c4878aSAndroid Build Coastguard Worker)
306*61c4878aSAndroid Build Coastguard Worker
307*61c4878aSAndroid Build Coastguard Workercc_library(
308*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore_timed_thread_notification_backend",
309*61c4878aSAndroid Build Coastguard Worker    hdrs = [
310*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/backends/binary_semaphore_timed_thread_notification_inline.h",
311*61c4878aSAndroid Build Coastguard Worker        "public_overrides/pw_sync_backend/timed_thread_notification_inline.h",
312*61c4878aSAndroid Build Coastguard Worker    ],
313*61c4878aSAndroid Build Coastguard Worker    includes = [
314*61c4878aSAndroid Build Coastguard Worker        "public",
315*61c4878aSAndroid Build Coastguard Worker        "public_overrides",
316*61c4878aSAndroid Build Coastguard Worker    ],
317*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = incompatible_with_mcu(),
318*61c4878aSAndroid Build Coastguard Worker    deps = [
319*61c4878aSAndroid Build Coastguard Worker        ":binary_semaphore_thread_notification_backend",
320*61c4878aSAndroid Build Coastguard Worker        ":timed_thread_notification.facade",
321*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
322*61c4878aSAndroid Build Coastguard Worker    ],
323*61c4878aSAndroid Build Coastguard Worker)
324*61c4878aSAndroid Build Coastguard Worker
325*61c4878aSAndroid Build Coastguard Workercc_library(
326*61c4878aSAndroid Build Coastguard Worker    name = "yield_core",
327*61c4878aSAndroid Build Coastguard Worker    hdrs = [
328*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/yield_core.h",
329*61c4878aSAndroid Build Coastguard Worker    ],
330*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
331*61c4878aSAndroid Build Coastguard Worker)
332*61c4878aSAndroid Build Coastguard Worker
333*61c4878aSAndroid Build Coastguard Workercc_library(
334*61c4878aSAndroid Build Coastguard Worker    name = "condition_variable_facade",
335*61c4878aSAndroid Build Coastguard Worker    hdrs = [
336*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/condition_variable.h",
337*61c4878aSAndroid Build Coastguard Worker    ],
338*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
339*61c4878aSAndroid Build Coastguard Worker    deps = [
340*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
341*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
342*61c4878aSAndroid Build Coastguard Worker    ],
343*61c4878aSAndroid Build Coastguard Worker)
344*61c4878aSAndroid Build Coastguard Worker
345*61c4878aSAndroid Build Coastguard Worker# TODO: b/228998350 - This needs to be instantiated for each platform that
346*61c4878aSAndroid Build Coastguard Worker# provides an implementation of $dir_pw_thread:test_threads and
347*61c4878aSAndroid Build Coastguard Worker# $dir_pw_sync:condition_variable.
348*61c4878aSAndroid Build Coastguard Worker# pw_cc_library(
349*61c4878aSAndroid Build Coastguard Worker#     name = "condition_variable_test",
350*61c4878aSAndroid Build Coastguard Worker#     srcs = ["condition_variable_test.cc"],
351*61c4878aSAndroid Build Coastguard Worker#     deps = [
352*61c4878aSAndroid Build Coastguard Worker#         ":condition_variable_facade",
353*61c4878aSAndroid Build Coastguard Worker#         "//pw_containers:vector",
354*61c4878aSAndroid Build Coastguard Worker#         "//pw_sync:mutex",
355*61c4878aSAndroid Build Coastguard Worker#         "//pw_sync:timed_thread_notification",
356*61c4878aSAndroid Build Coastguard Worker#         "//pw_thread:sleep",
357*61c4878aSAndroid Build Coastguard Worker#         "//pw_thread:non_portable_test_thread_options",
358*61c4878aSAndroid Build Coastguard Worker#         "//pw_thread:thread",
359*61c4878aSAndroid Build Coastguard Worker#         "//pw_unit_test",
360*61c4878aSAndroid Build Coastguard Worker#     ],
361*61c4878aSAndroid Build Coastguard Worker# )
362*61c4878aSAndroid Build Coastguard Worker#
363*61c4878aSAndroid Build Coastguard Worker# Filegroup to mark `condition_variable_test.cc` as used for the linter:
364*61c4878aSAndroid Build Coastguard Workerfilegroup(
365*61c4878aSAndroid Build Coastguard Worker    name = "condition_variable_test_filegroup",
366*61c4878aSAndroid Build Coastguard Worker    srcs = ["condition_variable_test.cc"],
367*61c4878aSAndroid Build Coastguard Worker)
368*61c4878aSAndroid Build Coastguard Worker
369*61c4878aSAndroid Build Coastguard Workercc_library(
370*61c4878aSAndroid Build Coastguard Worker    name = "lock_testing",
371*61c4878aSAndroid Build Coastguard Worker    srcs = ["lock_testing.cc"],
372*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_sync/lock_testing.h"],
373*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
374*61c4878aSAndroid Build Coastguard Worker    deps = [
375*61c4878aSAndroid Build Coastguard Worker        ":virtual_basic_lockable",
376*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
377*61c4878aSAndroid Build Coastguard Worker    ],
378*61c4878aSAndroid Build Coastguard Worker)
379*61c4878aSAndroid Build Coastguard Worker
380*61c4878aSAndroid Build Coastguard Workercc_library(
381*61c4878aSAndroid Build Coastguard Worker    name = "borrow_lockable_tests",
382*61c4878aSAndroid Build Coastguard Worker    hdrs = ["pw_sync_private/borrow_lockable_tests.h"],
383*61c4878aSAndroid Build Coastguard Worker    deps = [
384*61c4878aSAndroid Build Coastguard Worker        ":borrow",
385*61c4878aSAndroid Build Coastguard Worker        ":lock_traits",
386*61c4878aSAndroid Build Coastguard Worker    ],
387*61c4878aSAndroid Build Coastguard Worker)
388*61c4878aSAndroid Build Coastguard Worker
389*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
390*61c4878aSAndroid Build Coastguard Worker    name = "lock_traits_test",
391*61c4878aSAndroid Build Coastguard Worker    srcs = ["lock_traits_test.cc"],
392*61c4878aSAndroid Build Coastguard Worker    deps = [
393*61c4878aSAndroid Build Coastguard Worker        ":lock_testing",
394*61c4878aSAndroid Build Coastguard Worker        ":lock_traits",
395*61c4878aSAndroid Build Coastguard Worker    ],
396*61c4878aSAndroid Build Coastguard Worker)
397*61c4878aSAndroid Build Coastguard Worker
398*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
399*61c4878aSAndroid Build Coastguard Worker    name = "borrow_test",
400*61c4878aSAndroid Build Coastguard Worker    srcs = ["borrow_test.cc"],
401*61c4878aSAndroid Build Coastguard Worker    deps = [
402*61c4878aSAndroid Build Coastguard Worker        ":borrow",
403*61c4878aSAndroid Build Coastguard Worker        ":borrow_lockable_tests",
404*61c4878aSAndroid Build Coastguard Worker        ":lock_testing",
405*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
406*61c4878aSAndroid Build Coastguard Worker    ],
407*61c4878aSAndroid Build Coastguard Worker)
408*61c4878aSAndroid Build Coastguard Worker
409*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
410*61c4878aSAndroid Build Coastguard Worker    name = "inline_borrowable_test",
411*61c4878aSAndroid Build Coastguard Worker    srcs = [
412*61c4878aSAndroid Build Coastguard Worker        "inline_borrowable_test.cc",
413*61c4878aSAndroid Build Coastguard Worker    ],
414*61c4878aSAndroid Build Coastguard Worker    deps = [
415*61c4878aSAndroid Build Coastguard Worker        ":inline_borrowable",
416*61c4878aSAndroid Build Coastguard Worker        ":interrupt_spin_lock",
417*61c4878aSAndroid Build Coastguard Worker        ":lock_annotations",
418*61c4878aSAndroid Build Coastguard Worker        ":mutex",
419*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
420*61c4878aSAndroid Build Coastguard Worker    ],
421*61c4878aSAndroid Build Coastguard Worker)
422*61c4878aSAndroid Build Coastguard Worker
423*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
424*61c4878aSAndroid Build Coastguard Worker    name = "binary_semaphore_facade_test",
425*61c4878aSAndroid Build Coastguard Worker    srcs = [
426*61c4878aSAndroid Build Coastguard Worker        "binary_semaphore_facade_test.cc",
427*61c4878aSAndroid Build Coastguard Worker        "binary_semaphore_facade_test_c.c",
428*61c4878aSAndroid Build Coastguard Worker    ],
429*61c4878aSAndroid Build Coastguard Worker    deps = [
430*61c4878aSAndroid Build Coastguard Worker        ":binary_semaphore",
431*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
432*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
433*61c4878aSAndroid Build Coastguard Worker    ],
434*61c4878aSAndroid Build Coastguard Worker)
435*61c4878aSAndroid Build Coastguard Worker
436*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
437*61c4878aSAndroid Build Coastguard Worker    name = "counting_semaphore_facade_test",
438*61c4878aSAndroid Build Coastguard Worker    srcs = [
439*61c4878aSAndroid Build Coastguard Worker        "counting_semaphore_facade_test.cc",
440*61c4878aSAndroid Build Coastguard Worker        "counting_semaphore_facade_test_c.c",
441*61c4878aSAndroid Build Coastguard Worker    ],
442*61c4878aSAndroid Build Coastguard Worker    deps = [
443*61c4878aSAndroid Build Coastguard Worker        ":counting_semaphore",
444*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
445*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
446*61c4878aSAndroid Build Coastguard Worker    ],
447*61c4878aSAndroid Build Coastguard Worker)
448*61c4878aSAndroid Build Coastguard Worker
449*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
450*61c4878aSAndroid Build Coastguard Worker    name = "mutex_facade_test",
451*61c4878aSAndroid Build Coastguard Worker    srcs = [
452*61c4878aSAndroid Build Coastguard Worker        "mutex_facade_test.cc",
453*61c4878aSAndroid Build Coastguard Worker        "mutex_facade_test_c.c",
454*61c4878aSAndroid Build Coastguard Worker    ],
455*61c4878aSAndroid Build Coastguard Worker    deps = [
456*61c4878aSAndroid Build Coastguard Worker        ":borrow_lockable_tests",
457*61c4878aSAndroid Build Coastguard Worker        ":mutex",
458*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
459*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
460*61c4878aSAndroid Build Coastguard Worker    ],
461*61c4878aSAndroid Build Coastguard Worker)
462*61c4878aSAndroid Build Coastguard Worker
463*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
464*61c4878aSAndroid Build Coastguard Worker    name = "timed_mutex_facade_test",
465*61c4878aSAndroid Build Coastguard Worker    srcs = [
466*61c4878aSAndroid Build Coastguard Worker        "timed_mutex_facade_test.cc",
467*61c4878aSAndroid Build Coastguard Worker        "timed_mutex_facade_test_c.c",
468*61c4878aSAndroid Build Coastguard Worker    ],
469*61c4878aSAndroid Build Coastguard Worker    deps = [
470*61c4878aSAndroid Build Coastguard Worker        ":borrow_lockable_tests",
471*61c4878aSAndroid Build Coastguard Worker        ":timed_mutex",
472*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
473*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
474*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
475*61c4878aSAndroid Build Coastguard Worker    ],
476*61c4878aSAndroid Build Coastguard Worker)
477*61c4878aSAndroid Build Coastguard Worker
478*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
479*61c4878aSAndroid Build Coastguard Worker    name = "recursive_mutex_facade_test",
480*61c4878aSAndroid Build Coastguard Worker    srcs = [
481*61c4878aSAndroid Build Coastguard Worker        "recursive_mutex_facade_test.cc",
482*61c4878aSAndroid Build Coastguard Worker        "recursive_mutex_facade_test_c.c",
483*61c4878aSAndroid Build Coastguard Worker    ],
484*61c4878aSAndroid Build Coastguard Worker    deps = [
485*61c4878aSAndroid Build Coastguard Worker        ":recursive_mutex",
486*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
487*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
488*61c4878aSAndroid Build Coastguard Worker    ],
489*61c4878aSAndroid Build Coastguard Worker)
490*61c4878aSAndroid Build Coastguard Worker
491*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
492*61c4878aSAndroid Build Coastguard Worker    name = "interrupt_spin_lock_facade_test",
493*61c4878aSAndroid Build Coastguard Worker    srcs = [
494*61c4878aSAndroid Build Coastguard Worker        "interrupt_spin_lock_facade_test.cc",
495*61c4878aSAndroid Build Coastguard Worker        "interrupt_spin_lock_facade_test_c.c",
496*61c4878aSAndroid Build Coastguard Worker    ],
497*61c4878aSAndroid Build Coastguard Worker    # TODO: https://pwbug.dev/325509758 - Doesn't work on the Pico yet; hangs
498*61c4878aSAndroid Build Coastguard Worker    # indefinitely.
499*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = select({
500*61c4878aSAndroid Build Coastguard Worker        "//pw_build/constraints/chipset:rp2040": ["@platforms//:incompatible"],
501*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
502*61c4878aSAndroid Build Coastguard Worker    }),
503*61c4878aSAndroid Build Coastguard Worker    deps = [
504*61c4878aSAndroid Build Coastguard Worker        ":borrow_lockable_tests",
505*61c4878aSAndroid Build Coastguard Worker        ":interrupt_spin_lock",
506*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
507*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
508*61c4878aSAndroid Build Coastguard Worker    ],
509*61c4878aSAndroid Build Coastguard Worker)
510*61c4878aSAndroid Build Coastguard Worker
511*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
512*61c4878aSAndroid Build Coastguard Worker    name = "thread_notification_facade_test",
513*61c4878aSAndroid Build Coastguard Worker    srcs = [
514*61c4878aSAndroid Build Coastguard Worker        "thread_notification_facade_test.cc",
515*61c4878aSAndroid Build Coastguard Worker    ],
516*61c4878aSAndroid Build Coastguard Worker    deps = [
517*61c4878aSAndroid Build Coastguard Worker        ":thread_notification",
518*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
519*61c4878aSAndroid Build Coastguard Worker    ],
520*61c4878aSAndroid Build Coastguard Worker)
521*61c4878aSAndroid Build Coastguard Worker
522*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
523*61c4878aSAndroid Build Coastguard Worker    name = "timed_thread_notification_facade_test",
524*61c4878aSAndroid Build Coastguard Worker    srcs = [
525*61c4878aSAndroid Build Coastguard Worker        "timed_thread_notification_facade_test.cc",
526*61c4878aSAndroid Build Coastguard Worker    ],
527*61c4878aSAndroid Build Coastguard Worker    deps = [
528*61c4878aSAndroid Build Coastguard Worker        ":timed_thread_notification",
529*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
530*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
531*61c4878aSAndroid Build Coastguard Worker    ],
532*61c4878aSAndroid Build Coastguard Worker)
533*61c4878aSAndroid Build Coastguard Worker
534*61c4878aSAndroid Build Coastguard Workerfilegroup(
535*61c4878aSAndroid Build Coastguard Worker    name = "doxygen",
536*61c4878aSAndroid Build Coastguard Worker    srcs = [
537*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/binary_semaphore.h",
538*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/borrow.h",
539*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/counting_semaphore.h",
540*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/inline_borrowable.h",
541*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/interrupt_spin_lock.h",
542*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/lock_annotations.h",
543*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/mutex.h",
544*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/thread_notification.h",
545*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/timed_mutex.h",
546*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/timed_thread_notification.h",
547*61c4878aSAndroid Build Coastguard Worker        "public/pw_sync/virtual_basic_lockable.h",
548*61c4878aSAndroid Build Coastguard Worker    ],
549*61c4878aSAndroid Build Coastguard Worker)
550