xref: /aosp_15_r20/external/pigweed/pw_thread/BUILD.bazel (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 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("@rules_python//python:proto.bzl", "py_proto_library")
16*61c4878aSAndroid Build Coastguard Workerload("//pw_build:compatibility.bzl", "host_backend_alias")
17*61c4878aSAndroid Build Coastguard Workerload("//pw_build:pw_facade.bzl", "pw_facade")
18*61c4878aSAndroid Build Coastguard Workerload(
19*61c4878aSAndroid Build Coastguard Worker    "//pw_protobuf_compiler:pw_proto_library.bzl",
20*61c4878aSAndroid Build Coastguard Worker    "pwpb_proto_library",
21*61c4878aSAndroid Build Coastguard Worker    "raw_rpc_proto_library",
22*61c4878aSAndroid Build Coastguard Worker)
23*61c4878aSAndroid Build Coastguard Workerload("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
24*61c4878aSAndroid Build Coastguard Worker
25*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
26*61c4878aSAndroid Build Coastguard Worker
27*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
28*61c4878aSAndroid Build Coastguard Worker
29*61c4878aSAndroid Build Coastguard Workerpw_facade(
30*61c4878aSAndroid Build Coastguard Worker    name = "id",
31*61c4878aSAndroid Build Coastguard Worker    hdrs = [
32*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/id.h",
33*61c4878aSAndroid Build Coastguard Worker    ],
34*61c4878aSAndroid Build Coastguard Worker    backend = ":id_backend",
35*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
36*61c4878aSAndroid Build Coastguard Worker)
37*61c4878aSAndroid Build Coastguard Worker
38*61c4878aSAndroid Build Coastguard Workerlabel_flag(
39*61c4878aSAndroid Build Coastguard Worker    name = "id_backend",
40*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":id_unspecified_backend",
41*61c4878aSAndroid Build Coastguard Worker)
42*61c4878aSAndroid Build Coastguard Worker
43*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
44*61c4878aSAndroid Build Coastguard Worker    name = "id_unspecified_backend",
45*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:id",
46*61c4878aSAndroid Build Coastguard Worker)
47*61c4878aSAndroid Build Coastguard Worker
48*61c4878aSAndroid Build Coastguard Workercc_library(
49*61c4878aSAndroid Build Coastguard Worker    name = "config",
50*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_thread/config.h"],
51*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
52*61c4878aSAndroid Build Coastguard Worker    deps = [":config_override"],
53*61c4878aSAndroid Build Coastguard Worker)
54*61c4878aSAndroid Build Coastguard Worker
55*61c4878aSAndroid Build Coastguard Workerlabel_flag(
56*61c4878aSAndroid Build Coastguard Worker    name = "config_override",
57*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//pw_build:default_module_config",
58*61c4878aSAndroid Build Coastguard Worker)
59*61c4878aSAndroid Build Coastguard Worker
60*61c4878aSAndroid Build Coastguard Workercc_library(
61*61c4878aSAndroid Build Coastguard Worker    name = "thread_info",
62*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_thread/thread_info.h"],
63*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
64*61c4878aSAndroid Build Coastguard Worker    deps = ["//pw_span"],
65*61c4878aSAndroid Build Coastguard Worker)
66*61c4878aSAndroid Build Coastguard Worker
67*61c4878aSAndroid Build Coastguard Workerpw_facade(
68*61c4878aSAndroid Build Coastguard Worker    name = "thread_iteration",
69*61c4878aSAndroid Build Coastguard Worker    hdrs = [
70*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/thread_iteration.h",
71*61c4878aSAndroid Build Coastguard Worker    ],
72*61c4878aSAndroid Build Coastguard Worker    backend = ":iteration_backend",
73*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
74*61c4878aSAndroid Build Coastguard Worker    deps = [
75*61c4878aSAndroid Build Coastguard Worker        ":thread_info",
76*61c4878aSAndroid Build Coastguard Worker        "//pw_function",
77*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
78*61c4878aSAndroid Build Coastguard Worker    ],
79*61c4878aSAndroid Build Coastguard Worker)
80*61c4878aSAndroid Build Coastguard Worker
81*61c4878aSAndroid Build Coastguard Workerlabel_flag(
82*61c4878aSAndroid Build Coastguard Worker    name = "iteration_backend",
83*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":iteration_unspecified_backend",
84*61c4878aSAndroid Build Coastguard Worker)
85*61c4878aSAndroid Build Coastguard Worker
86*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
87*61c4878aSAndroid Build Coastguard Worker    name = "iteration_unspecified_backend",
88*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:thread_iteration",
89*61c4878aSAndroid Build Coastguard Worker)
90*61c4878aSAndroid Build Coastguard Worker
91*61c4878aSAndroid Build Coastguard Workerpw_facade(
92*61c4878aSAndroid Build Coastguard Worker    name = "sleep",
93*61c4878aSAndroid Build Coastguard Worker    srcs = [
94*61c4878aSAndroid Build Coastguard Worker        "sleep.cc",
95*61c4878aSAndroid Build Coastguard Worker    ],
96*61c4878aSAndroid Build Coastguard Worker    hdrs = [
97*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/sleep.h",
98*61c4878aSAndroid Build Coastguard Worker    ],
99*61c4878aSAndroid Build Coastguard Worker    backend = ":sleep_backend",
100*61c4878aSAndroid Build Coastguard Worker    implementation_deps = [
101*61c4878aSAndroid Build Coastguard Worker        ":thread",
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        "//pw_chrono:system_clock",
106*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
107*61c4878aSAndroid Build Coastguard Worker    ],
108*61c4878aSAndroid Build Coastguard Worker)
109*61c4878aSAndroid Build Coastguard Worker
110*61c4878aSAndroid Build Coastguard Workerlabel_flag(
111*61c4878aSAndroid Build Coastguard Worker    name = "sleep_backend",
112*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":sleep_unspecified_backend",
113*61c4878aSAndroid Build Coastguard Worker)
114*61c4878aSAndroid Build Coastguard Worker
115*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
116*61c4878aSAndroid Build Coastguard Worker    name = "sleep_unspecified_backend",
117*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:sleep",
118*61c4878aSAndroid Build Coastguard Worker)
119*61c4878aSAndroid Build Coastguard Worker
120*61c4878aSAndroid Build Coastguard Workerpw_facade(
121*61c4878aSAndroid Build Coastguard Worker    name = "thread",
122*61c4878aSAndroid Build Coastguard Worker    srcs = [
123*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/config.h",
124*61c4878aSAndroid Build Coastguard Worker        "thread.cc",
125*61c4878aSAndroid Build Coastguard Worker    ],
126*61c4878aSAndroid Build Coastguard Worker    hdrs = [
127*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/detached_thread.h",
128*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/thread.h",
129*61c4878aSAndroid Build Coastguard Worker    ],
130*61c4878aSAndroid Build Coastguard Worker    backend = ":thread_backend",
131*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
132*61c4878aSAndroid Build Coastguard Worker    deps = [
133*61c4878aSAndroid Build Coastguard Worker        ":id",
134*61c4878aSAndroid Build Coastguard Worker        ":options",
135*61c4878aSAndroid Build Coastguard Worker        ":thread_core",
136*61c4878aSAndroid Build Coastguard Worker        "//pw_function",
137*61c4878aSAndroid Build Coastguard Worker    ],
138*61c4878aSAndroid Build Coastguard Worker)
139*61c4878aSAndroid Build Coastguard Worker
140*61c4878aSAndroid Build Coastguard Workercc_library(
141*61c4878aSAndroid Build Coastguard Worker    name = "options",
142*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_thread/options.h"],
143*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
144*61c4878aSAndroid Build Coastguard Worker)
145*61c4878aSAndroid Build Coastguard Worker
146*61c4878aSAndroid Build Coastguard Workerlabel_flag(
147*61c4878aSAndroid Build Coastguard Worker    name = "thread_backend",
148*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":thread_unspecified_backend",
149*61c4878aSAndroid Build Coastguard Worker)
150*61c4878aSAndroid Build Coastguard Worker
151*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
152*61c4878aSAndroid Build Coastguard Worker    name = "thread_unspecified_backend",
153*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:thread",
154*61c4878aSAndroid Build Coastguard Worker)
155*61c4878aSAndroid Build Coastguard Worker
156*61c4878aSAndroid Build Coastguard Workercc_library(
157*61c4878aSAndroid Build Coastguard Worker    name = "thread_core",
158*61c4878aSAndroid Build Coastguard Worker    hdrs = [
159*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/thread_core.h",
160*61c4878aSAndroid Build Coastguard Worker    ],
161*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
162*61c4878aSAndroid Build Coastguard Worker    deps = [
163*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
164*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
165*61c4878aSAndroid Build Coastguard Worker    ],
166*61c4878aSAndroid Build Coastguard Worker)
167*61c4878aSAndroid Build Coastguard Worker
168*61c4878aSAndroid Build Coastguard Workercc_library(
169*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service",
170*61c4878aSAndroid Build Coastguard Worker    srcs = [
171*61c4878aSAndroid Build Coastguard Worker        "pw_thread_private/thread_snapshot_service.h",
172*61c4878aSAndroid Build Coastguard Worker        "thread_snapshot_service.cc",
173*61c4878aSAndroid Build Coastguard Worker    ],
174*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_thread/thread_snapshot_service.h"],
175*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
176*61c4878aSAndroid Build Coastguard Worker    deps = [
177*61c4878aSAndroid Build Coastguard Worker        "//pw_protobuf",
178*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:server_api",
179*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
180*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
181*61c4878aSAndroid Build Coastguard Worker        ":config",
182*61c4878aSAndroid Build Coastguard Worker        ":thread_pwpb",
183*61c4878aSAndroid Build Coastguard Worker        ":thread_info",
184*61c4878aSAndroid Build Coastguard Worker        ":thread_iteration",
185*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service_pwpb",
186*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service_raw_rpc",
187*61c4878aSAndroid Build Coastguard Worker        # TODO(amontanez): This should depend on FreeRTOS but our third parties
188*61c4878aSAndroid Build Coastguard Worker        # currently do not have Bazel support.
189*61c4878aSAndroid Build Coastguard Worker    ],
190*61c4878aSAndroid Build Coastguard Worker)
191*61c4878aSAndroid Build Coastguard Worker
192*61c4878aSAndroid Build Coastguard Workerpw_facade(
193*61c4878aSAndroid Build Coastguard Worker    name = "test_thread_context",
194*61c4878aSAndroid Build Coastguard Worker    hdrs = [
195*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/test_thread_context.h",
196*61c4878aSAndroid Build Coastguard Worker    ],
197*61c4878aSAndroid Build Coastguard Worker    backend = ":test_thread_context_backend",
198*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
199*61c4878aSAndroid Build Coastguard Worker)
200*61c4878aSAndroid Build Coastguard Worker
201*61c4878aSAndroid Build Coastguard Workerlabel_flag(
202*61c4878aSAndroid Build Coastguard Worker    name = "test_thread_context_backend",
203*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":test_thread_context_unspecified_backend",
204*61c4878aSAndroid Build Coastguard Worker)
205*61c4878aSAndroid Build Coastguard Worker
206*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
207*61c4878aSAndroid Build Coastguard Worker    name = "test_thread_context_unspecified_backend",
208*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:test_thread_context",
209*61c4878aSAndroid Build Coastguard Worker)
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Workerpw_facade(
212*61c4878aSAndroid Build Coastguard Worker    name = "yield",
213*61c4878aSAndroid Build Coastguard Worker    srcs = [
214*61c4878aSAndroid Build Coastguard Worker        "yield.cc",
215*61c4878aSAndroid Build Coastguard Worker    ],
216*61c4878aSAndroid Build Coastguard Worker    hdrs = [
217*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/yield.h",
218*61c4878aSAndroid Build Coastguard Worker    ],
219*61c4878aSAndroid Build Coastguard Worker    backend = ":yield_backend",
220*61c4878aSAndroid Build Coastguard Worker    implementation_deps = [
221*61c4878aSAndroid Build Coastguard Worker        ":thread",
222*61c4878aSAndroid Build Coastguard Worker    ],
223*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
224*61c4878aSAndroid Build Coastguard Worker    deps = [
225*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
226*61c4878aSAndroid Build Coastguard Worker    ],
227*61c4878aSAndroid Build Coastguard Worker)
228*61c4878aSAndroid Build Coastguard Worker
229*61c4878aSAndroid Build Coastguard Workerlabel_flag(
230*61c4878aSAndroid Build Coastguard Worker    name = "yield_backend",
231*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":yield_unspecified_backend",
232*61c4878aSAndroid Build Coastguard Worker)
233*61c4878aSAndroid Build Coastguard Worker
234*61c4878aSAndroid Build Coastguard Workerhost_backend_alias(
235*61c4878aSAndroid Build Coastguard Worker    name = "yield_unspecified_backend",
236*61c4878aSAndroid Build Coastguard Worker    backend = "//pw_thread_stl:yield",
237*61c4878aSAndroid Build Coastguard Worker)
238*61c4878aSAndroid Build Coastguard Worker
239*61c4878aSAndroid Build Coastguard Workercc_library(
240*61c4878aSAndroid Build Coastguard Worker    name = "snapshot",
241*61c4878aSAndroid Build Coastguard Worker    srcs = [
242*61c4878aSAndroid Build Coastguard Worker        "snapshot.cc",
243*61c4878aSAndroid Build Coastguard Worker    ],
244*61c4878aSAndroid Build Coastguard Worker    hdrs = [
245*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/snapshot.h",
246*61c4878aSAndroid Build Coastguard Worker    ],
247*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
248*61c4878aSAndroid Build Coastguard Worker    deps = [
249*61c4878aSAndroid Build Coastguard Worker        ":config",
250*61c4878aSAndroid Build Coastguard Worker        ":thread",
251*61c4878aSAndroid Build Coastguard Worker        ":thread_pwpb",
252*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
253*61c4878aSAndroid Build Coastguard Worker        "//pw_function",
254*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
255*61c4878aSAndroid Build Coastguard Worker        "//pw_protobuf",
256*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
257*61c4878aSAndroid Build Coastguard Worker    ],
258*61c4878aSAndroid Build Coastguard Worker)
259*61c4878aSAndroid Build Coastguard Worker
260*61c4878aSAndroid Build Coastguard Workercc_library(
261*61c4878aSAndroid Build Coastguard Worker    name = "non_portable_test_thread_options",
262*61c4878aSAndroid Build Coastguard Worker    hdrs = [
263*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/non_portable_test_thread_options.h",
264*61c4878aSAndroid Build Coastguard Worker    ],
265*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
266*61c4878aSAndroid Build Coastguard Worker    deps = [
267*61c4878aSAndroid Build Coastguard Worker        ":thread",
268*61c4878aSAndroid Build Coastguard Worker    ],
269*61c4878aSAndroid Build Coastguard Worker)
270*61c4878aSAndroid Build Coastguard Worker
271*61c4878aSAndroid Build Coastguard Worker# To instantiate this as a pw_cc_test, depend on this pw_cc_library and the
272*61c4878aSAndroid Build Coastguard Worker# pw_cc_library which implements the backend for non_portable_test_thread_options. See
273*61c4878aSAndroid Build Coastguard Worker# //pw_thread_stl:thread_backend_test as an example.
274*61c4878aSAndroid Build Coastguard Workercc_library(
275*61c4878aSAndroid Build Coastguard Worker    name = "thread_facade_test",
276*61c4878aSAndroid Build Coastguard Worker    testonly = True,
277*61c4878aSAndroid Build Coastguard Worker    srcs = [
278*61c4878aSAndroid Build Coastguard Worker        "thread_facade_test.cc",
279*61c4878aSAndroid Build Coastguard Worker    ],
280*61c4878aSAndroid Build Coastguard Worker    deps = [
281*61c4878aSAndroid Build Coastguard Worker        ":non_portable_test_thread_options",
282*61c4878aSAndroid Build Coastguard Worker        ":thread",
283*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
284*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:binary_semaphore",
285*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
286*61c4878aSAndroid Build Coastguard Worker    ],
287*61c4878aSAndroid Build Coastguard Worker    alwayslink = True,
288*61c4878aSAndroid Build Coastguard Worker)
289*61c4878aSAndroid Build Coastguard Worker
290*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
291*61c4878aSAndroid Build Coastguard Worker    name = "test_thread_context_facade_test",
292*61c4878aSAndroid Build Coastguard Worker    srcs = [
293*61c4878aSAndroid Build Coastguard Worker        "test_thread_context_facade_test.cc",
294*61c4878aSAndroid Build Coastguard Worker    ],
295*61c4878aSAndroid Build Coastguard Worker    # TODO: b/317922402 - On Windows, this test can easily hang indefinitely.
296*61c4878aSAndroid Build Coastguard Worker    # Disable on Windows until we can test with the native Windows SDK libraries
297*61c4878aSAndroid Build Coastguard Worker    # for threading.
298*61c4878aSAndroid Build Coastguard Worker    # TODO: b/361369192 - This test behaves unusually on rp2.
299*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = select({
300*61c4878aSAndroid Build Coastguard Worker        "@pico-sdk//bazel/constraint:rp2040": ["@platforms//:incompatible"],
301*61c4878aSAndroid Build Coastguard Worker        "@pico-sdk//bazel/constraint:rp2350": ["@platforms//:incompatible"],
302*61c4878aSAndroid Build Coastguard Worker        "@platforms//os:windows": ["@platforms//:incompatible"],
303*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
304*61c4878aSAndroid Build Coastguard Worker    }),
305*61c4878aSAndroid Build Coastguard Worker    deps = [
306*61c4878aSAndroid Build Coastguard Worker        ":test_thread_context",
307*61c4878aSAndroid Build Coastguard Worker        ":thread",
308*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:binary_semaphore",
309*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
310*61c4878aSAndroid Build Coastguard Worker    ],
311*61c4878aSAndroid Build Coastguard Worker)
312*61c4878aSAndroid Build Coastguard Worker
313*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
314*61c4878aSAndroid Build Coastguard Worker    name = "id_facade_test",
315*61c4878aSAndroid Build Coastguard Worker    srcs = [
316*61c4878aSAndroid Build Coastguard Worker        "id_facade_test.cc",
317*61c4878aSAndroid Build Coastguard Worker    ],
318*61c4878aSAndroid Build Coastguard Worker    deps = [
319*61c4878aSAndroid Build Coastguard Worker        ":thread",
320*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
321*61c4878aSAndroid Build Coastguard Worker    ],
322*61c4878aSAndroid Build Coastguard Worker)
323*61c4878aSAndroid Build Coastguard Worker
324*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
325*61c4878aSAndroid Build Coastguard Worker    name = "options_test",
326*61c4878aSAndroid Build Coastguard Worker    srcs = ["options_test.cc"],
327*61c4878aSAndroid Build Coastguard Worker    deps = [
328*61c4878aSAndroid Build Coastguard Worker        ":options",
329*61c4878aSAndroid Build Coastguard Worker        "//pw_compilation_testing:negative_compilation_testing",
330*61c4878aSAndroid Build Coastguard Worker    ],
331*61c4878aSAndroid Build Coastguard Worker)
332*61c4878aSAndroid Build Coastguard Worker
333*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
334*61c4878aSAndroid Build Coastguard Worker    name = "sleep_facade_test",
335*61c4878aSAndroid Build Coastguard Worker    srcs = [
336*61c4878aSAndroid Build Coastguard Worker        "sleep_facade_test.cc",
337*61c4878aSAndroid Build Coastguard Worker        "sleep_facade_test_c.c",
338*61c4878aSAndroid Build Coastguard Worker    ],
339*61c4878aSAndroid Build Coastguard Worker    deps = [
340*61c4878aSAndroid Build Coastguard Worker        ":sleep",
341*61c4878aSAndroid Build Coastguard Worker        ":thread",
342*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
343*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
344*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
345*61c4878aSAndroid Build Coastguard Worker    ],
346*61c4878aSAndroid Build Coastguard Worker)
347*61c4878aSAndroid Build Coastguard Worker
348*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
349*61c4878aSAndroid Build Coastguard Worker    name = "thread_info_test",
350*61c4878aSAndroid Build Coastguard Worker    srcs = [
351*61c4878aSAndroid Build Coastguard Worker        "thread_info_test.cc",
352*61c4878aSAndroid Build Coastguard Worker    ],
353*61c4878aSAndroid Build Coastguard Worker    deps = [
354*61c4878aSAndroid Build Coastguard Worker        ":thread_info",
355*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
356*61c4878aSAndroid Build Coastguard Worker    ],
357*61c4878aSAndroid Build Coastguard Worker)
358*61c4878aSAndroid Build Coastguard Worker
359*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
360*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service_test",
361*61c4878aSAndroid Build Coastguard Worker    srcs = [
362*61c4878aSAndroid Build Coastguard Worker        "pw_thread_private/thread_snapshot_service.h",
363*61c4878aSAndroid Build Coastguard Worker        "thread_snapshot_service_test.cc",
364*61c4878aSAndroid Build Coastguard Worker    ],
365*61c4878aSAndroid Build Coastguard Worker    # TODO: https://pwbug.dev/342662853 - This test fails under ASAN.
366*61c4878aSAndroid Build Coastguard Worker    tags = ["noasan"],
367*61c4878aSAndroid Build Coastguard Worker    deps = [
368*61c4878aSAndroid Build Coastguard Worker        ":thread_info",
369*61c4878aSAndroid Build Coastguard Worker        ":thread_iteration",
370*61c4878aSAndroid Build Coastguard Worker        ":thread_pwpb",
371*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service",
372*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service_pwpb",
373*61c4878aSAndroid Build Coastguard Worker        "//pw_protobuf",
374*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
375*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:thread_notification",
376*61c4878aSAndroid Build Coastguard Worker    ],
377*61c4878aSAndroid Build Coastguard Worker)
378*61c4878aSAndroid Build Coastguard Worker
379*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
380*61c4878aSAndroid Build Coastguard Worker    name = "yield_facade_test",
381*61c4878aSAndroid Build Coastguard Worker    srcs = [
382*61c4878aSAndroid Build Coastguard Worker        "yield_facade_test.cc",
383*61c4878aSAndroid Build Coastguard Worker        "yield_facade_test_c.c",
384*61c4878aSAndroid Build Coastguard Worker    ],
385*61c4878aSAndroid Build Coastguard Worker    deps = [
386*61c4878aSAndroid Build Coastguard Worker        ":thread",
387*61c4878aSAndroid Build Coastguard Worker        ":yield",
388*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
389*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
390*61c4878aSAndroid Build Coastguard Worker    ],
391*61c4878aSAndroid Build Coastguard Worker)
392*61c4878aSAndroid Build Coastguard Worker
393*61c4878aSAndroid Build Coastguard Workerproto_library(
394*61c4878aSAndroid Build Coastguard Worker    name = "thread_proto",
395*61c4878aSAndroid Build Coastguard Worker    srcs = ["pw_thread_protos/thread.proto"],
396*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_thread",
397*61c4878aSAndroid Build Coastguard Worker    deps = [
398*61c4878aSAndroid Build Coastguard Worker        "//pw_tokenizer:tokenizer_proto",
399*61c4878aSAndroid Build Coastguard Worker    ],
400*61c4878aSAndroid Build Coastguard Worker)
401*61c4878aSAndroid Build Coastguard Worker
402*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
403*61c4878aSAndroid Build Coastguard Worker    name = "thread_proto_py_pb2",
404*61c4878aSAndroid Build Coastguard Worker    deps = [":thread_proto"],
405*61c4878aSAndroid Build Coastguard Worker)
406*61c4878aSAndroid Build Coastguard Worker
407*61c4878aSAndroid Build Coastguard Workerproto_library(
408*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service_proto",
409*61c4878aSAndroid Build Coastguard Worker    srcs = ["pw_thread_protos/thread_snapshot_service.proto"],
410*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_thread",
411*61c4878aSAndroid Build Coastguard Worker    deps = [
412*61c4878aSAndroid Build Coastguard Worker        ":thread_proto",
413*61c4878aSAndroid Build Coastguard Worker    ],
414*61c4878aSAndroid Build Coastguard Worker)
415*61c4878aSAndroid Build Coastguard Worker
416*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
417*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service_pwpb",
418*61c4878aSAndroid Build Coastguard Worker    deps = [":thread_snapshot_service_proto"],
419*61c4878aSAndroid Build Coastguard Worker)
420*61c4878aSAndroid Build Coastguard Worker
421*61c4878aSAndroid Build Coastguard Workerraw_rpc_proto_library(
422*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service_raw_rpc",
423*61c4878aSAndroid Build Coastguard Worker    deps = [":thread_snapshot_service_proto"],
424*61c4878aSAndroid Build Coastguard Worker)
425*61c4878aSAndroid Build Coastguard Worker
426*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
427*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service_py_pb2",
428*61c4878aSAndroid Build Coastguard Worker    deps = [":thread_snapshot_service_proto"],
429*61c4878aSAndroid Build Coastguard Worker)
430*61c4878aSAndroid Build Coastguard Worker
431*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
432*61c4878aSAndroid Build Coastguard Worker    name = "thread_pwpb",
433*61c4878aSAndroid Build Coastguard Worker    deps = [":thread_proto"],
434*61c4878aSAndroid Build Coastguard Worker)
435*61c4878aSAndroid Build Coastguard Worker
436*61c4878aSAndroid Build Coastguard Workerfilegroup(
437*61c4878aSAndroid Build Coastguard Worker    name = "doxygen",
438*61c4878aSAndroid Build Coastguard Worker    srcs = [
439*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/options.h",
440*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/test_thread_context.h",
441*61c4878aSAndroid Build Coastguard Worker        "public/pw_thread/thread.h",
442*61c4878aSAndroid Build Coastguard Worker    ],
443*61c4878aSAndroid Build Coastguard Worker)
444