xref: /aosp_15_r20/external/pigweed/pw_system/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("@rules_python//python:proto.bzl", "py_proto_library")
16*61c4878aSAndroid Build Coastguard Workerload("//pw_build:pw_cc_binary.bzl", "pw_cc_binary")
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    "pw_proto_filegroup",
21*61c4878aSAndroid Build Coastguard Worker    "pwpb_proto_library",
22*61c4878aSAndroid Build Coastguard Worker    "pwpb_rpc_proto_library",
23*61c4878aSAndroid Build Coastguard Worker)
24*61c4878aSAndroid Build Coastguard Workerload("//pw_system/py:console.bzl", "device_console", "device_simulator_console")
25*61c4878aSAndroid Build Coastguard Workerload("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
26*61c4878aSAndroid Build Coastguard Workerload("//targets/host_device_simulator:transition.bzl", "host_device_simulator_binary")
27*61c4878aSAndroid Build Coastguard Workerload("//targets/rp2040:flash.bzl", "flash_rp2040", "flash_rp2350")
28*61c4878aSAndroid Build Coastguard Workerload("//targets/rp2040:transition.bzl", "rp2040_binary", "rp2350_binary")
29*61c4878aSAndroid Build Coastguard Worker
30*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
33*61c4878aSAndroid Build Coastguard Worker
34*61c4878aSAndroid Build Coastguard Workercc_library(
35*61c4878aSAndroid Build Coastguard Worker    name = "config",
36*61c4878aSAndroid Build Coastguard Worker    hdrs = [
37*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/config.h",
38*61c4878aSAndroid Build Coastguard Worker    ],
39*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
40*61c4878aSAndroid Build Coastguard Worker    visibility = ["//visibility:private"],
41*61c4878aSAndroid Build Coastguard Worker    deps = [":config_override"],
42*61c4878aSAndroid Build Coastguard Worker)
43*61c4878aSAndroid Build Coastguard Worker
44*61c4878aSAndroid Build Coastguard Workerlabel_flag(
45*61c4878aSAndroid Build Coastguard Worker    name = "config_override",
46*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":default_config",
47*61c4878aSAndroid Build Coastguard Worker)
48*61c4878aSAndroid Build Coastguard Worker
49*61c4878aSAndroid Build Coastguard Workercc_library(
50*61c4878aSAndroid Build Coastguard Worker    name = "default_config",
51*61c4878aSAndroid Build Coastguard Worker    defines = select({
52*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:enabled": [],
53*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [
54*61c4878aSAndroid Build Coastguard Worker            "PW_SYSTEM_ENABLE_CRASH_HANDLER=0",
55*61c4878aSAndroid Build Coastguard Worker        ],
56*61c4878aSAndroid Build Coastguard Worker    }),
57*61c4878aSAndroid Build Coastguard Worker)
58*61c4878aSAndroid Build Coastguard Worker
59*61c4878aSAndroid Build Coastguard Workercc_library(
60*61c4878aSAndroid Build Coastguard Worker    name = "pw_system",
61*61c4878aSAndroid Build Coastguard Worker    deps = [
62*61c4878aSAndroid Build Coastguard Worker        ":init",
63*61c4878aSAndroid Build Coastguard Worker        ":io",
64*61c4878aSAndroid Build Coastguard Worker        ":extra_platform_libs",
65*61c4878aSAndroid Build Coastguard Worker        ":target_hooks",
66*61c4878aSAndroid Build Coastguard Worker        ":work_queue",
67*61c4878aSAndroid Build Coastguard Worker        # pw_system has (transitive) dependencies on pw_assert and pw_log. So,
68*61c4878aSAndroid Build Coastguard Worker        # we add deps on the backend_impl here, saving the user from having to
69*61c4878aSAndroid Build Coastguard Worker        # add them manually to their cc_binary target.
70*61c4878aSAndroid Build Coastguard Worker        #
71*61c4878aSAndroid Build Coastguard Worker        # When implementing a backend for pw_assert or pw_log, *do not* depend
72*61c4878aSAndroid Build Coastguard Worker        # on //pw_system:pw_system. Instead, depend on the appropriate
73*61c4878aSAndroid Build Coastguard Worker        # component library. See :log_backend, below, for an examples.
74*61c4878aSAndroid Build Coastguard Worker        "//pw_assert:check_backend_impl",
75*61c4878aSAndroid Build Coastguard Worker        "//pw_assert:assert_backend_impl",
76*61c4878aSAndroid Build Coastguard Worker        "//pw_log:backend_impl",
77*61c4878aSAndroid Build Coastguard Worker    ],
78*61c4878aSAndroid Build Coastguard Worker)
79*61c4878aSAndroid Build Coastguard Worker
80*61c4878aSAndroid Build Coastguard Worker# Any platform-specific pw_system components. At the very least, this should
81*61c4878aSAndroid Build Coastguard Worker# include platform-specific initialization code. It may also include linker
82*61c4878aSAndroid Build Coastguard Worker# scripts.
83*61c4878aSAndroid Build Coastguard Worker#
84*61c4878aSAndroid Build Coastguard Worker# TODO: https://github.com/bazelbuild/bazel/issues/22457 - Recommend using
85*61c4878aSAndroid Build Coastguard Worker# @bazel_tool//tools/cpp:link_extra_libs instead, once they're not propagated
86*61c4878aSAndroid Build Coastguard Worker# to the exec configuration.
87*61c4878aSAndroid Build Coastguard Workerlabel_flag(
88*61c4878aSAndroid Build Coastguard Worker    name = "extra_platform_libs",
89*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//targets/host_device_simulator:boot",
90*61c4878aSAndroid Build Coastguard Worker)
91*61c4878aSAndroid Build Coastguard Worker
92*61c4878aSAndroid Build Coastguard Workercc_library(
93*61c4878aSAndroid Build Coastguard Worker    name = "log",
94*61c4878aSAndroid Build Coastguard Worker    srcs = [
95*61c4878aSAndroid Build Coastguard Worker        "log.cc",
96*61c4878aSAndroid Build Coastguard Worker    ],
97*61c4878aSAndroid Build Coastguard Worker    hdrs = [
98*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/log.h",
99*61c4878aSAndroid Build Coastguard Worker    ],
100*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
101*61c4878aSAndroid Build Coastguard Worker    deps = [
102*61c4878aSAndroid Build Coastguard Worker        ":config",
103*61c4878aSAndroid Build Coastguard Worker        ":rpc_server",
104*61c4878aSAndroid Build Coastguard Worker        "//pw_log_rpc:log_service",
105*61c4878aSAndroid Build Coastguard Worker        "//pw_log_rpc:rpc_log_drain",
106*61c4878aSAndroid Build Coastguard Worker        "//pw_log_rpc:rpc_log_drain_thread",
107*61c4878aSAndroid Build Coastguard Worker        "//pw_multisink",
108*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
109*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
110*61c4878aSAndroid Build Coastguard Worker    ],
111*61c4878aSAndroid Build Coastguard Worker)
112*61c4878aSAndroid Build Coastguard Worker
113*61c4878aSAndroid Build Coastguard Workercc_library(
114*61c4878aSAndroid Build Coastguard Worker    name = "log_backend",
115*61c4878aSAndroid Build Coastguard Worker    srcs = [
116*61c4878aSAndroid Build Coastguard Worker        "log_backend.cc",
117*61c4878aSAndroid Build Coastguard Worker    ],
118*61c4878aSAndroid Build Coastguard Worker    deps = [
119*61c4878aSAndroid Build Coastguard Worker        ":config",
120*61c4878aSAndroid Build Coastguard Worker        ":log",
121*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
122*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
123*61c4878aSAndroid Build Coastguard Worker        "//pw_log:proto_utils",
124*61c4878aSAndroid Build Coastguard Worker        "//pw_log:pw_log.facade",
125*61c4878aSAndroid Build Coastguard Worker        "//pw_log_string:handler.facade",
126*61c4878aSAndroid Build Coastguard Worker        "//pw_log_tokenized:handler.facade",
127*61c4878aSAndroid Build Coastguard Worker        "//pw_log_tokenized:headers",
128*61c4878aSAndroid Build Coastguard Worker        "//pw_metric:global",
129*61c4878aSAndroid Build Coastguard Worker        "//pw_multisink",
130*61c4878aSAndroid Build Coastguard Worker        "//pw_result",
131*61c4878aSAndroid Build Coastguard Worker        "//pw_string",
132*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:interrupt_spin_lock",
133*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
134*61c4878aSAndroid Build Coastguard Worker        "//pw_tokenizer",
135*61c4878aSAndroid Build Coastguard Worker    ],
136*61c4878aSAndroid Build Coastguard Worker    # Log backends, like assert backends, generally need to be alwayslink'ed
137*61c4878aSAndroid Build Coastguard Worker    # because we don't inform Bazel correctly about dependencies on them. We
138*61c4878aSAndroid Build Coastguard Worker    # only add them as deps of binary targets, not intermediate library targets,
139*61c4878aSAndroid Build Coastguard Worker    # to avoid circular dependencies. But this may lead the linker to eagerly
140*61c4878aSAndroid Build Coastguard Worker    # remove some symbols defined here as unused.
141*61c4878aSAndroid Build Coastguard Worker    alwayslink = 1,
142*61c4878aSAndroid Build Coastguard Worker)
143*61c4878aSAndroid Build Coastguard Worker
144*61c4878aSAndroid Build Coastguard Workerpw_facade(
145*61c4878aSAndroid Build Coastguard Worker    name = "rpc_server",
146*61c4878aSAndroid Build Coastguard Worker    hdrs = [
147*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/rpc_server.h",
148*61c4878aSAndroid Build Coastguard Worker    ],
149*61c4878aSAndroid Build Coastguard Worker    backend = ":rpc_server_backend",
150*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
151*61c4878aSAndroid Build Coastguard Worker    deps = [
152*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread_core",
153*61c4878aSAndroid Build Coastguard Worker    ],
154*61c4878aSAndroid Build Coastguard Worker)
155*61c4878aSAndroid Build Coastguard Worker
156*61c4878aSAndroid Build Coastguard Workerlabel_flag(
157*61c4878aSAndroid Build Coastguard Worker    name = "rpc_server_backend",
158*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//pw_system:hdlc_rpc_server",
159*61c4878aSAndroid Build Coastguard Worker)
160*61c4878aSAndroid Build Coastguard Worker
161*61c4878aSAndroid Build Coastguard Workercc_library(
162*61c4878aSAndroid Build Coastguard Worker    name = "hdlc_rpc_server",
163*61c4878aSAndroid Build Coastguard Worker    srcs = [
164*61c4878aSAndroid Build Coastguard Worker        "hdlc_rpc_server.cc",
165*61c4878aSAndroid Build Coastguard Worker    ],
166*61c4878aSAndroid Build Coastguard Worker    deps = [
167*61c4878aSAndroid Build Coastguard Worker        ":config",
168*61c4878aSAndroid Build Coastguard Worker        ":io",
169*61c4878aSAndroid Build Coastguard Worker        ":rpc_server.facade",
170*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
171*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc",
172*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:default_addresses",
173*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:rpc_channel_output",
174*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
175*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread_core",
176*61c4878aSAndroid Build Coastguard Worker        "//pw_trace",
177*61c4878aSAndroid Build Coastguard Worker    ],
178*61c4878aSAndroid Build Coastguard Worker)
179*61c4878aSAndroid Build Coastguard Worker
180*61c4878aSAndroid Build Coastguard Workercc_library(
181*61c4878aSAndroid Build Coastguard Worker    name = "thread_snapshot_service",
182*61c4878aSAndroid Build Coastguard Worker    srcs = [
183*61c4878aSAndroid Build Coastguard Worker        "thread_snapshot_service.cc",
184*61c4878aSAndroid Build Coastguard Worker    ],
185*61c4878aSAndroid Build Coastguard Worker    hdrs = [
186*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/thread_snapshot_service.h",
187*61c4878aSAndroid Build Coastguard Worker    ],
188*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
189*61c4878aSAndroid Build Coastguard Worker    deps = [
190*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc",
191*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread_snapshot_service",
192*61c4878aSAndroid Build Coastguard Worker    ],
193*61c4878aSAndroid Build Coastguard Worker)
194*61c4878aSAndroid Build Coastguard Worker
195*61c4878aSAndroid Build Coastguard Workerpw_facade(
196*61c4878aSAndroid Build Coastguard Worker    name = "io",
197*61c4878aSAndroid Build Coastguard Worker    hdrs = [
198*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/io.h",
199*61c4878aSAndroid Build Coastguard Worker    ],
200*61c4878aSAndroid Build Coastguard Worker    backend = ":io_backend",
201*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
202*61c4878aSAndroid Build Coastguard Worker    deps = [
203*61c4878aSAndroid Build Coastguard Worker        "//pw_stream",
204*61c4878aSAndroid Build Coastguard Worker    ],
205*61c4878aSAndroid Build Coastguard Worker)
206*61c4878aSAndroid Build Coastguard Worker
207*61c4878aSAndroid Build Coastguard Workerlabel_flag(
208*61c4878aSAndroid Build Coastguard Worker    name = "io_backend",
209*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//pw_system:sys_io_target_io",
210*61c4878aSAndroid Build Coastguard Worker)
211*61c4878aSAndroid Build Coastguard Worker
212*61c4878aSAndroid Build Coastguard Workerpw_facade(
213*61c4878aSAndroid Build Coastguard Worker    name = "device_handler",
214*61c4878aSAndroid Build Coastguard Worker    hdrs = [
215*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/device_handler.h",
216*61c4878aSAndroid Build Coastguard Worker    ],
217*61c4878aSAndroid Build Coastguard Worker    backend = ":device_handler_backend",
218*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
219*61c4878aSAndroid Build Coastguard Worker    deps = [
220*61c4878aSAndroid Build Coastguard Worker        "//pw_snapshot:snapshot_proto_pwpb",
221*61c4878aSAndroid Build Coastguard Worker    ],
222*61c4878aSAndroid Build Coastguard Worker)
223*61c4878aSAndroid Build Coastguard Worker
224*61c4878aSAndroid Build Coastguard Workerlabel_flag(
225*61c4878aSAndroid Build Coastguard Worker    name = "device_handler_backend",
226*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//pw_system:unknown_device_handler",
227*61c4878aSAndroid Build Coastguard Worker)
228*61c4878aSAndroid Build Coastguard Worker
229*61c4878aSAndroid Build Coastguard Workercc_library(
230*61c4878aSAndroid Build Coastguard Worker    name = "unknown_device_handler",
231*61c4878aSAndroid Build Coastguard Worker    srcs = [
232*61c4878aSAndroid Build Coastguard Worker        "unknown_device_handler.cc",
233*61c4878aSAndroid Build Coastguard Worker    ],
234*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
235*61c4878aSAndroid Build Coastguard Worker    deps = [
236*61c4878aSAndroid Build Coastguard Worker        ":device_handler.facade",
237*61c4878aSAndroid Build Coastguard Worker    ],
238*61c4878aSAndroid Build Coastguard Worker)
239*61c4878aSAndroid Build Coastguard Worker
240*61c4878aSAndroid Build Coastguard Workercc_library(
241*61c4878aSAndroid Build Coastguard Worker    name = "init",
242*61c4878aSAndroid Build Coastguard Worker    srcs = [
243*61c4878aSAndroid Build Coastguard Worker        "init.cc",
244*61c4878aSAndroid Build Coastguard Worker    ],
245*61c4878aSAndroid Build Coastguard Worker    hdrs = [
246*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/init.h",
247*61c4878aSAndroid Build Coastguard Worker    ],
248*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
249*61c4878aSAndroid Build Coastguard Worker    deps = [
250*61c4878aSAndroid Build Coastguard Worker        ":device_service",
251*61c4878aSAndroid Build Coastguard Worker        ":file_manager",
252*61c4878aSAndroid Build Coastguard Worker        ":file_service",
253*61c4878aSAndroid Build Coastguard Worker        ":log",
254*61c4878aSAndroid Build Coastguard Worker        ":rpc_server",
255*61c4878aSAndroid Build Coastguard Worker        ":target_hooks",
256*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service",
257*61c4878aSAndroid Build Coastguard Worker        ":trace_service",
258*61c4878aSAndroid Build Coastguard Worker        ":transfer_service",
259*61c4878aSAndroid Build Coastguard Worker        ":work_queue",
260*61c4878aSAndroid Build Coastguard Worker        "//pw_metric:global",
261*61c4878aSAndroid Build Coastguard Worker        "//pw_metric:metric_service_pwpb",
262*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:echo_service",
263*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
264*61c4878aSAndroid Build Coastguard Worker    ] + select({
265*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:enabled": [
266*61c4878aSAndroid Build Coastguard Worker            ":crash_handler",
267*61c4878aSAndroid Build Coastguard Worker            ":crash_snapshot",
268*61c4878aSAndroid Build Coastguard Worker        ],
269*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
270*61c4878aSAndroid Build Coastguard Worker    }),
271*61c4878aSAndroid Build Coastguard Worker)
272*61c4878aSAndroid Build Coastguard Worker
273*61c4878aSAndroid Build Coastguard Workercc_library(
274*61c4878aSAndroid Build Coastguard Worker    name = "work_queue",
275*61c4878aSAndroid Build Coastguard Worker    srcs = [
276*61c4878aSAndroid Build Coastguard Worker        "work_queue.cc",
277*61c4878aSAndroid Build Coastguard Worker    ],
278*61c4878aSAndroid Build Coastguard Worker    hdrs = [
279*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/work_queue.h",
280*61c4878aSAndroid Build Coastguard Worker    ],
281*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
282*61c4878aSAndroid Build Coastguard Worker    deps = [
283*61c4878aSAndroid Build Coastguard Worker        ":config",
284*61c4878aSAndroid Build Coastguard Worker        "//pw_work_queue",
285*61c4878aSAndroid Build Coastguard Worker    ],
286*61c4878aSAndroid Build Coastguard Worker)
287*61c4878aSAndroid Build Coastguard Worker
288*61c4878aSAndroid Build Coastguard Workercc_library(
289*61c4878aSAndroid Build Coastguard Worker    name = "sys_io_target_io",
290*61c4878aSAndroid Build Coastguard Worker    srcs = [
291*61c4878aSAndroid Build Coastguard Worker        "sys_io_target_io.cc",
292*61c4878aSAndroid Build Coastguard Worker    ],
293*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
294*61c4878aSAndroid Build Coastguard Worker    deps = [
295*61c4878aSAndroid Build Coastguard Worker        ":io.facade",
296*61c4878aSAndroid Build Coastguard Worker        "//pw_stream",
297*61c4878aSAndroid Build Coastguard Worker        "//pw_stream:sys_io_stream",
298*61c4878aSAndroid Build Coastguard Worker    ],
299*61c4878aSAndroid Build Coastguard Worker)
300*61c4878aSAndroid Build Coastguard Worker
301*61c4878aSAndroid Build Coastguard Workercc_library(
302*61c4878aSAndroid Build Coastguard Worker    name = "socket_target_io",
303*61c4878aSAndroid Build Coastguard Worker    srcs = [
304*61c4878aSAndroid Build Coastguard Worker        "socket_target_io.cc",
305*61c4878aSAndroid Build Coastguard Worker    ],
306*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
307*61c4878aSAndroid Build Coastguard Worker    deps = [
308*61c4878aSAndroid Build Coastguard Worker        ":config",
309*61c4878aSAndroid Build Coastguard Worker        ":io.facade",
310*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
311*61c4878aSAndroid Build Coastguard Worker        "//pw_stream",
312*61c4878aSAndroid Build Coastguard Worker        "//pw_stream:socket_stream",
313*61c4878aSAndroid Build Coastguard Worker    ],
314*61c4878aSAndroid Build Coastguard Worker)
315*61c4878aSAndroid Build Coastguard Worker
316*61c4878aSAndroid Build Coastguard Workercc_library(
317*61c4878aSAndroid Build Coastguard Worker    name = "transfer_handlers",
318*61c4878aSAndroid Build Coastguard Worker    srcs = [
319*61c4878aSAndroid Build Coastguard Worker        "transfer_handlers.cc",
320*61c4878aSAndroid Build Coastguard Worker    ],
321*61c4878aSAndroid Build Coastguard Worker    hdrs = [
322*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/transfer_handlers.h",
323*61c4878aSAndroid Build Coastguard Worker    ],
324*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
325*61c4878aSAndroid Build Coastguard Worker    deps = [
326*61c4878aSAndroid Build Coastguard Worker        ":config",
327*61c4878aSAndroid Build Coastguard Worker        "//pw_persistent_ram",
328*61c4878aSAndroid Build Coastguard Worker        "//pw_trace_tokenized:config",
329*61c4878aSAndroid Build Coastguard Worker        "//pw_transfer",
330*61c4878aSAndroid Build Coastguard Worker    ],
331*61c4878aSAndroid Build Coastguard Worker)
332*61c4878aSAndroid Build Coastguard Worker
333*61c4878aSAndroid Build Coastguard Workercc_library(
334*61c4878aSAndroid Build Coastguard Worker    name = "file_manager",
335*61c4878aSAndroid Build Coastguard Worker    srcs = [
336*61c4878aSAndroid Build Coastguard Worker        "file_manager.cc",
337*61c4878aSAndroid Build Coastguard Worker    ],
338*61c4878aSAndroid Build Coastguard Worker    hdrs = [
339*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/file_manager.h",
340*61c4878aSAndroid Build Coastguard Worker    ],
341*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
342*61c4878aSAndroid Build Coastguard Worker    deps = [
343*61c4878aSAndroid Build Coastguard Worker        ":config",
344*61c4878aSAndroid Build Coastguard Worker        ":trace_service",
345*61c4878aSAndroid Build Coastguard Worker        ":transfer_handlers",
346*61c4878aSAndroid Build Coastguard Worker        "//pw_file:flat_file_system",
347*61c4878aSAndroid Build Coastguard Worker        "//pw_persistent_ram:flat_file_system_entry",
348*61c4878aSAndroid Build Coastguard Worker    ] + select({
349*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:enabled": [
350*61c4878aSAndroid Build Coastguard Worker            ":crash_snapshot",
351*61c4878aSAndroid Build Coastguard Worker        ],
352*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
353*61c4878aSAndroid Build Coastguard Worker    }),
354*61c4878aSAndroid Build Coastguard Worker)
355*61c4878aSAndroid Build Coastguard Worker
356*61c4878aSAndroid Build Coastguard Workercc_library(
357*61c4878aSAndroid Build Coastguard Worker    name = "transfer_service",
358*61c4878aSAndroid Build Coastguard Worker    srcs = [
359*61c4878aSAndroid Build Coastguard Worker        "transfer_service.cc",
360*61c4878aSAndroid Build Coastguard Worker    ],
361*61c4878aSAndroid Build Coastguard Worker    hdrs = [
362*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/transfer_service.h",
363*61c4878aSAndroid Build Coastguard Worker    ],
364*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
365*61c4878aSAndroid Build Coastguard Worker    deps = [
366*61c4878aSAndroid Build Coastguard Worker        ":file_manager",
367*61c4878aSAndroid Build Coastguard Worker        "//pw_transfer",
368*61c4878aSAndroid Build Coastguard Worker    ],
369*61c4878aSAndroid Build Coastguard Worker)
370*61c4878aSAndroid Build Coastguard Worker
371*61c4878aSAndroid Build Coastguard Workercc_library(
372*61c4878aSAndroid Build Coastguard Worker    name = "file_service",
373*61c4878aSAndroid Build Coastguard Worker    srcs = [
374*61c4878aSAndroid Build Coastguard Worker        "file_service.cc",
375*61c4878aSAndroid Build Coastguard Worker    ],
376*61c4878aSAndroid Build Coastguard Worker    hdrs = [
377*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/file_service.h",
378*61c4878aSAndroid Build Coastguard Worker    ],
379*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
380*61c4878aSAndroid Build Coastguard Worker    deps = [
381*61c4878aSAndroid Build Coastguard Worker        ":file_manager",
382*61c4878aSAndroid Build Coastguard Worker    ],
383*61c4878aSAndroid Build Coastguard Worker)
384*61c4878aSAndroid Build Coastguard Worker
385*61c4878aSAndroid Build Coastguard Workercc_library(
386*61c4878aSAndroid Build Coastguard Worker    name = "trace_service",
387*61c4878aSAndroid Build Coastguard Worker    srcs = [
388*61c4878aSAndroid Build Coastguard Worker        "trace_service.cc",
389*61c4878aSAndroid Build Coastguard Worker    ],
390*61c4878aSAndroid Build Coastguard Worker    hdrs = [
391*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/trace_service.h",
392*61c4878aSAndroid Build Coastguard Worker    ],
393*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
394*61c4878aSAndroid Build Coastguard Worker    deps = [
395*61c4878aSAndroid Build Coastguard Worker        ":transfer_handlers",
396*61c4878aSAndroid Build Coastguard Worker        "//pw_persistent_ram",
397*61c4878aSAndroid Build Coastguard Worker        "//pw_trace_tokenized:trace_service_pwpb",
398*61c4878aSAndroid Build Coastguard Worker    ],
399*61c4878aSAndroid Build Coastguard Worker)
400*61c4878aSAndroid Build Coastguard Worker
401*61c4878aSAndroid Build Coastguard Workercc_library(
402*61c4878aSAndroid Build Coastguard Worker    name = "crash_handler",
403*61c4878aSAndroid Build Coastguard Worker    srcs = [
404*61c4878aSAndroid Build Coastguard Worker        "crash_handler.cc",
405*61c4878aSAndroid Build Coastguard Worker    ],
406*61c4878aSAndroid Build Coastguard Worker    hdrs = [
407*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/crash_handler.h",
408*61c4878aSAndroid Build Coastguard Worker    ],
409*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
410*61c4878aSAndroid Build Coastguard Worker    deps = [
411*61c4878aSAndroid Build Coastguard Worker        ":crash_snapshot",
412*61c4878aSAndroid Build Coastguard Worker        ":device_handler",
413*61c4878aSAndroid Build Coastguard Worker        ":log",
414*61c4878aSAndroid Build Coastguard Worker        "//pw_assert_trap:message",
415*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:handler",
416*61c4878aSAndroid Build Coastguard Worker    ],
417*61c4878aSAndroid Build Coastguard Worker)
418*61c4878aSAndroid Build Coastguard Worker
419*61c4878aSAndroid Build Coastguard Workercc_library(
420*61c4878aSAndroid Build Coastguard Worker    name = "crash_snapshot",
421*61c4878aSAndroid Build Coastguard Worker    srcs = [
422*61c4878aSAndroid Build Coastguard Worker        "crash_snapshot.cc",
423*61c4878aSAndroid Build Coastguard Worker    ],
424*61c4878aSAndroid Build Coastguard Worker    hdrs = [
425*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/crash_snapshot.h",
426*61c4878aSAndroid Build Coastguard Worker    ],
427*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
428*61c4878aSAndroid Build Coastguard Worker    deps = [
429*61c4878aSAndroid Build Coastguard Worker        ":device_handler",
430*61c4878aSAndroid Build Coastguard Worker        ":log",
431*61c4878aSAndroid Build Coastguard Worker        ":transfer_handlers",
432*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:entry",
433*61c4878aSAndroid Build Coastguard Worker        "//pw_multisink:util",
434*61c4878aSAndroid Build Coastguard Worker        "//pw_persistent_ram",
435*61c4878aSAndroid Build Coastguard Worker        "//pw_snapshot:snapshot_proto_pwpb",
436*61c4878aSAndroid Build Coastguard Worker        "//pw_snapshot:uuid",
437*61c4878aSAndroid Build Coastguard Worker    ],
438*61c4878aSAndroid Build Coastguard Worker)
439*61c4878aSAndroid Build Coastguard Worker
440*61c4878aSAndroid Build Coastguard Workerpw_proto_filegroup(
441*61c4878aSAndroid Build Coastguard Worker    name = "device_service_proto_and_options",
442*61c4878aSAndroid Build Coastguard Worker    srcs = ["pw_system_protos/device_service.proto"],
443*61c4878aSAndroid Build Coastguard Worker    options_files = ["pw_system_protos/device_service.options"],
444*61c4878aSAndroid Build Coastguard Worker)
445*61c4878aSAndroid Build Coastguard Worker
446*61c4878aSAndroid Build Coastguard Workerproto_library(
447*61c4878aSAndroid Build Coastguard Worker    name = "device_service_proto",
448*61c4878aSAndroid Build Coastguard Worker    srcs = [":device_service_proto_and_options"],
449*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_system",
450*61c4878aSAndroid Build Coastguard Worker)
451*61c4878aSAndroid Build Coastguard Worker
452*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
453*61c4878aSAndroid Build Coastguard Worker    name = "device_service_proto_pwpb",
454*61c4878aSAndroid Build Coastguard Worker    deps = [":device_service_proto"],
455*61c4878aSAndroid Build Coastguard Worker)
456*61c4878aSAndroid Build Coastguard Worker
457*61c4878aSAndroid Build Coastguard Workerpwpb_rpc_proto_library(
458*61c4878aSAndroid Build Coastguard Worker    name = "device_service_pwpb_rpc",
459*61c4878aSAndroid Build Coastguard Worker    pwpb_proto_library_deps = [":device_service_proto_pwpb"],
460*61c4878aSAndroid Build Coastguard Worker    deps = [":device_service_proto"],
461*61c4878aSAndroid Build Coastguard Worker)
462*61c4878aSAndroid Build Coastguard Worker
463*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
464*61c4878aSAndroid Build Coastguard Worker    name = "device_service_py_pb2",
465*61c4878aSAndroid Build Coastguard Worker    deps = [":device_service_proto"],
466*61c4878aSAndroid Build Coastguard Worker)
467*61c4878aSAndroid Build Coastguard Worker
468*61c4878aSAndroid Build Coastguard Workercc_library(
469*61c4878aSAndroid Build Coastguard Worker    name = "device_service_pwpb",
470*61c4878aSAndroid Build Coastguard Worker    srcs = [
471*61c4878aSAndroid Build Coastguard Worker        "device_service_pwpb.cc",
472*61c4878aSAndroid Build Coastguard Worker    ],
473*61c4878aSAndroid Build Coastguard Worker    hdrs = [
474*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/device_service_pwpb.h",
475*61c4878aSAndroid Build Coastguard Worker    ],
476*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
477*61c4878aSAndroid Build Coastguard Worker    deps = [
478*61c4878aSAndroid Build Coastguard Worker        ":device_handler",
479*61c4878aSAndroid Build Coastguard Worker        ":device_service_pwpb_rpc",
480*61c4878aSAndroid Build Coastguard Worker    ],
481*61c4878aSAndroid Build Coastguard Worker)
482*61c4878aSAndroid Build Coastguard Worker
483*61c4878aSAndroid Build Coastguard Workercc_library(
484*61c4878aSAndroid Build Coastguard Worker    name = "device_service",
485*61c4878aSAndroid Build Coastguard Worker    srcs = [
486*61c4878aSAndroid Build Coastguard Worker        "device_service.cc",
487*61c4878aSAndroid Build Coastguard Worker    ],
488*61c4878aSAndroid Build Coastguard Worker    hdrs = [
489*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/device_service.h",
490*61c4878aSAndroid Build Coastguard Worker    ],
491*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
492*61c4878aSAndroid Build Coastguard Worker    deps = [
493*61c4878aSAndroid Build Coastguard Worker        ":device_service_pwpb",
494*61c4878aSAndroid Build Coastguard Worker    ],
495*61c4878aSAndroid Build Coastguard Worker)
496*61c4878aSAndroid Build Coastguard Worker
497*61c4878aSAndroid Build Coastguard Workercc_library(
498*61c4878aSAndroid Build Coastguard Worker    name = "target_hooks",
499*61c4878aSAndroid Build Coastguard Worker    hdrs = [
500*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/target_hooks.h",
501*61c4878aSAndroid Build Coastguard Worker    ],
502*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
503*61c4878aSAndroid Build Coastguard Worker    deps = [
504*61c4878aSAndroid Build Coastguard Worker        ":target_hooks_backend",
505*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
506*61c4878aSAndroid Build Coastguard Worker    ],
507*61c4878aSAndroid Build Coastguard Worker)
508*61c4878aSAndroid Build Coastguard Worker
509*61c4878aSAndroid Build Coastguard Workerlabel_flag(
510*61c4878aSAndroid Build Coastguard Worker    name = "target_hooks_backend",
511*61c4878aSAndroid Build Coastguard Worker    build_setting_default = ":target_hooks_multiplexer",
512*61c4878aSAndroid Build Coastguard Worker)
513*61c4878aSAndroid Build Coastguard Worker
514*61c4878aSAndroid Build Coastguard Worker# This isn't the best solution, but it's close enough for now. Target hooks are
515*61c4878aSAndroid Build Coastguard Worker# not generically related to an OS, and should be inject-able by downstream
516*61c4878aSAndroid Build Coastguard Worker# projects. For now, assume the pre-baked OS-specific hooks are good enough.
517*61c4878aSAndroid Build Coastguard Workercc_library(
518*61c4878aSAndroid Build Coastguard Worker    name = "target_hooks_multiplexer",
519*61c4878aSAndroid Build Coastguard Worker    visibility = ["//targets:__pkg__"],
520*61c4878aSAndroid Build Coastguard Worker    deps = select({
521*61c4878aSAndroid Build Coastguard Worker        "//pw_build/constraints/rtos:freertos": [":freertos_target_hooks"],
522*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [":stl_target_hooks"],
523*61c4878aSAndroid Build Coastguard Worker    }),
524*61c4878aSAndroid Build Coastguard Worker)
525*61c4878aSAndroid Build Coastguard Worker
526*61c4878aSAndroid Build Coastguard Workercc_library(
527*61c4878aSAndroid Build Coastguard Worker    name = "stl_target_hooks",
528*61c4878aSAndroid Build Coastguard Worker    srcs = [
529*61c4878aSAndroid Build Coastguard Worker        "stl_target_hooks.cc",
530*61c4878aSAndroid Build Coastguard Worker    ],
531*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
532*61c4878aSAndroid Build Coastguard Worker    deps = [
533*61c4878aSAndroid Build Coastguard Worker        ":config",
534*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
535*61c4878aSAndroid Build Coastguard Worker        "//pw_thread_stl:thread",
536*61c4878aSAndroid Build Coastguard Worker    ],
537*61c4878aSAndroid Build Coastguard Worker)
538*61c4878aSAndroid Build Coastguard Worker
539*61c4878aSAndroid Build Coastguard Workercc_library(
540*61c4878aSAndroid Build Coastguard Worker    name = "freertos_target_hooks",
541*61c4878aSAndroid Build Coastguard Worker    srcs = [
542*61c4878aSAndroid Build Coastguard Worker        "freertos_target_hooks.cc",
543*61c4878aSAndroid Build Coastguard Worker    ],
544*61c4878aSAndroid Build Coastguard Worker    hdrs = [
545*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/target_hooks.h",
546*61c4878aSAndroid Build Coastguard Worker    ],
547*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
548*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = [
549*61c4878aSAndroid Build Coastguard Worker        "//pw_build/constraints/rtos:freertos",
550*61c4878aSAndroid Build Coastguard Worker    ],
551*61c4878aSAndroid Build Coastguard Worker    deps = [
552*61c4878aSAndroid Build Coastguard Worker        ":config",
553*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
554*61c4878aSAndroid Build Coastguard Worker        "//pw_thread_freertos:thread",
555*61c4878aSAndroid Build Coastguard Worker    ],
556*61c4878aSAndroid Build Coastguard Worker)
557*61c4878aSAndroid Build Coastguard Worker
558*61c4878aSAndroid Build Coastguard Workerpw_cc_binary(
559*61c4878aSAndroid Build Coastguard Worker    name = "system_example",
560*61c4878aSAndroid Build Coastguard Worker    # This is marked as testonly because the example app pulls in the RPC unit
561*61c4878aSAndroid Build Coastguard Worker    # test runner. In a real production binary, you wouldn't want to have any
562*61c4878aSAndroid Build Coastguard Worker    # testonly dependencies.
563*61c4878aSAndroid Build Coastguard Worker    testonly = True,
564*61c4878aSAndroid Build Coastguard Worker    srcs = ["example_user_app_init.cc"],
565*61c4878aSAndroid Build Coastguard Worker    # TODO(b/365184562): This target does not build with asan and fuzztest.
566*61c4878aSAndroid Build Coastguard Worker    target_compatible_with = select({
567*61c4878aSAndroid Build Coastguard Worker        "//pw_fuzzer:use_fuzztest": ["@platforms//:incompatible"],
568*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
569*61c4878aSAndroid Build Coastguard Worker    }),
570*61c4878aSAndroid Build Coastguard Worker    deps = [
571*61c4878aSAndroid Build Coastguard Worker        ":pw_system",
572*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test:rpc_service",
573*61c4878aSAndroid Build Coastguard Worker    ],
574*61c4878aSAndroid Build Coastguard Worker)
575*61c4878aSAndroid Build Coastguard Worker
576*61c4878aSAndroid Build Coastguard Workercc_library(
577*61c4878aSAndroid Build Coastguard Worker    name = "async",
578*61c4878aSAndroid Build Coastguard Worker    srcs = [
579*61c4878aSAndroid Build Coastguard Worker        "pw_system_private/threads.h",
580*61c4878aSAndroid Build Coastguard Worker        "system.cc",
581*61c4878aSAndroid Build Coastguard Worker        "threads.cc",
582*61c4878aSAndroid Build Coastguard Worker    ],
583*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_system/system.h"],
584*61c4878aSAndroid Build Coastguard Worker    implementation_deps = [
585*61c4878aSAndroid Build Coastguard Worker        ":async_packet_io",
586*61c4878aSAndroid Build Coastguard Worker        ":device_service",
587*61c4878aSAndroid Build Coastguard Worker        ":file_manager",
588*61c4878aSAndroid Build Coastguard Worker        ":file_service",
589*61c4878aSAndroid Build Coastguard Worker        ":log",
590*61c4878aSAndroid Build Coastguard Worker        ":thread_snapshot_service",
591*61c4878aSAndroid Build Coastguard Worker        ":transfer_service",
592*61c4878aSAndroid Build Coastguard Worker        ":work_queue",
593*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:best_fit_block_allocator",
594*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:synchronized_allocator",
595*61c4878aSAndroid Build Coastguard Worker        "//pw_async2:allocate_task",
596*61c4878aSAndroid Build Coastguard Worker        "//pw_async2:pend_func_task",
597*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:router",
598*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf:simple_allocator",
599*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:echo_service",
600*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:interrupt_spin_lock",
601*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
602*61c4878aSAndroid Build Coastguard Worker    ] + select({
603*61c4878aSAndroid Build Coastguard Worker        "//pw_cpu_exception:enabled": [
604*61c4878aSAndroid Build Coastguard Worker            ":crash_handler",
605*61c4878aSAndroid Build Coastguard Worker            ":crash_snapshot",
606*61c4878aSAndroid Build Coastguard Worker        ],
607*61c4878aSAndroid Build Coastguard Worker        "//conditions:default": [],
608*61c4878aSAndroid Build Coastguard Worker    }),
609*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
610*61c4878aSAndroid Build Coastguard Worker    deps = [
611*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:allocator",
612*61c4878aSAndroid Build Coastguard Worker        "//pw_async2:dispatcher",
613*61c4878aSAndroid Build Coastguard Worker        "//pw_channel",
614*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc",
615*61c4878aSAndroid Build Coastguard Worker    ],
616*61c4878aSAndroid Build Coastguard Worker)
617*61c4878aSAndroid Build Coastguard Worker
618*61c4878aSAndroid Build Coastguard Workercc_library(
619*61c4878aSAndroid Build Coastguard Worker    name = "async_packet_io",
620*61c4878aSAndroid Build Coastguard Worker    srcs = ["async_packet_io.cc"],
621*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_system/internal/async_packet_io.h"],
622*61c4878aSAndroid Build Coastguard Worker    implementation_deps = [
623*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
624*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
625*61c4878aSAndroid Build Coastguard Worker    ],
626*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
627*61c4878aSAndroid Build Coastguard Worker    visibility = ["//visibility:private"],
628*61c4878aSAndroid Build Coastguard Worker    deps = [
629*61c4878aSAndroid Build Coastguard Worker        ":config",
630*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:allocator",
631*61c4878aSAndroid Build Coastguard Worker        "//pw_async2:dispatcher",
632*61c4878aSAndroid Build Coastguard Worker        "//pw_channel",
633*61c4878aSAndroid Build Coastguard Worker        "//pw_channel:forwarding_channel",
634*61c4878aSAndroid Build Coastguard Worker        "//pw_containers:inline_var_len_entry_queue",
635*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:router",
636*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf",
637*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf:simple_allocator",
638*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc",
639*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
640*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
641*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:thread_notification",
642*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
643*61c4878aSAndroid Build Coastguard Worker    ],
644*61c4878aSAndroid Build Coastguard Worker)
645*61c4878aSAndroid Build Coastguard Worker
646*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
647*61c4878aSAndroid Build Coastguard Worker    name = "async_packet_io_test",
648*61c4878aSAndroid Build Coastguard Worker    srcs = ["async_packet_io_test.cc"],
649*61c4878aSAndroid Build Coastguard Worker    deps = [
650*61c4878aSAndroid Build Coastguard Worker        ":async_packet_io",
651*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:testing",
652*61c4878aSAndroid Build Coastguard Worker        "//pw_channel:loopback_channel",
653*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf:testing",
654*61c4878aSAndroid Build Coastguard Worker    ],
655*61c4878aSAndroid Build Coastguard Worker)
656*61c4878aSAndroid Build Coastguard Worker
657*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
658*61c4878aSAndroid Build Coastguard Worker    name = "system_async_test",
659*61c4878aSAndroid Build Coastguard Worker    srcs = ["system_async_test.cc"],
660*61c4878aSAndroid Build Coastguard Worker    deps = [
661*61c4878aSAndroid Build Coastguard Worker        ":async",
662*61c4878aSAndroid Build Coastguard Worker        "//pw_allocator:testing",
663*61c4878aSAndroid Build Coastguard Worker        "//pw_channel:loopback_channel",
664*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf:testing",
665*61c4878aSAndroid Build Coastguard Worker    ],
666*61c4878aSAndroid Build Coastguard Worker)
667*61c4878aSAndroid Build Coastguard Worker
668*61c4878aSAndroid Build Coastguard Workerpw_cc_binary(
669*61c4878aSAndroid Build Coastguard Worker    name = "system_async_host_example",
670*61c4878aSAndroid Build Coastguard Worker    testonly = True,
671*61c4878aSAndroid Build Coastguard Worker    srcs = ["system_async_host_example.cc"],
672*61c4878aSAndroid Build Coastguard Worker    deps = [
673*61c4878aSAndroid Build Coastguard Worker        ":async",
674*61c4878aSAndroid Build Coastguard Worker        "//pw_channel:epoll_channel",
675*61c4878aSAndroid Build Coastguard Worker        "//pw_multibuf:testing",
676*61c4878aSAndroid Build Coastguard Worker    ],
677*61c4878aSAndroid Build Coastguard Worker)
678*61c4878aSAndroid Build Coastguard Worker
679*61c4878aSAndroid Build Coastguard Workerhost_device_simulator_binary(
680*61c4878aSAndroid Build Coastguard Worker    name = "system_async_host_simulator_example",
681*61c4878aSAndroid Build Coastguard Worker    testonly = True,
682*61c4878aSAndroid Build Coastguard Worker    binary = ":system_async_host_example",
683*61c4878aSAndroid Build Coastguard Worker)
684*61c4878aSAndroid Build Coastguard Worker
685*61c4878aSAndroid Build Coastguard Workerhost_device_simulator_binary(
686*61c4878aSAndroid Build Coastguard Worker    name = "simulator_system_example",
687*61c4878aSAndroid Build Coastguard Worker    testonly = True,
688*61c4878aSAndroid Build Coastguard Worker    binary = ":system_example",
689*61c4878aSAndroid Build Coastguard Worker)
690*61c4878aSAndroid Build Coastguard Worker
691*61c4878aSAndroid Build Coastguard Workerrp2040_binary(
692*61c4878aSAndroid Build Coastguard Worker    name = "rp2040_system_example",
693*61c4878aSAndroid Build Coastguard Worker    testonly = True,
694*61c4878aSAndroid Build Coastguard Worker    binary = ":system_example",
695*61c4878aSAndroid Build Coastguard Worker)
696*61c4878aSAndroid Build Coastguard Worker
697*61c4878aSAndroid Build Coastguard Workerrp2350_binary(
698*61c4878aSAndroid Build Coastguard Worker    name = "rp2350_system_example",
699*61c4878aSAndroid Build Coastguard Worker    testonly = True,
700*61c4878aSAndroid Build Coastguard Worker    binary = ":system_example",
701*61c4878aSAndroid Build Coastguard Worker)
702*61c4878aSAndroid Build Coastguard Worker
703*61c4878aSAndroid Build Coastguard Workerflash_rp2040(
704*61c4878aSAndroid Build Coastguard Worker    name = "flash_rp2040_system_example",
705*61c4878aSAndroid Build Coastguard Worker    testonly = True,
706*61c4878aSAndroid Build Coastguard Worker    rp2040_binary = ":rp2040_system_example",
707*61c4878aSAndroid Build Coastguard Worker)
708*61c4878aSAndroid Build Coastguard Worker
709*61c4878aSAndroid Build Coastguard Workerflash_rp2350(
710*61c4878aSAndroid Build Coastguard Worker    name = "flash_rp2350_system_example",
711*61c4878aSAndroid Build Coastguard Worker    testonly = True,
712*61c4878aSAndroid Build Coastguard Worker    rp2350_binary = ":rp2350_system_example",
713*61c4878aSAndroid Build Coastguard Worker)
714*61c4878aSAndroid Build Coastguard Worker
715*61c4878aSAndroid Build Coastguard Worker# Start :simulator_system_example and connect to it with pw console.
716*61c4878aSAndroid Build Coastguard Workerdevice_simulator_console(
717*61c4878aSAndroid Build Coastguard Worker    name = "simulator_system_example_console",
718*61c4878aSAndroid Build Coastguard Worker    testonly = True,
719*61c4878aSAndroid Build Coastguard Worker    host_binary = ":simulator_system_example",
720*61c4878aSAndroid Build Coastguard Worker    script = "//pw_system/py:device_sim",
721*61c4878aSAndroid Build Coastguard Worker)
722*61c4878aSAndroid Build Coastguard Worker
723*61c4878aSAndroid Build Coastguard Worker# Conect to a Pico running :system_example over serial with the
724*61c4878aSAndroid Build Coastguard Worker# pw-system-console.
725*61c4878aSAndroid Build Coastguard Workerdevice_console(
726*61c4878aSAndroid Build Coastguard Worker    name = "rp2040_system_example_console",
727*61c4878aSAndroid Build Coastguard Worker    testonly = True,
728*61c4878aSAndroid Build Coastguard Worker    binary = ":rp2040_system_example",
729*61c4878aSAndroid Build Coastguard Worker    script = "//pw_system/py:pw_system_console",
730*61c4878aSAndroid Build Coastguard Worker)
731*61c4878aSAndroid Build Coastguard Worker
732*61c4878aSAndroid Build Coastguard Workerdevice_console(
733*61c4878aSAndroid Build Coastguard Worker    name = "rp2350_system_example_console",
734*61c4878aSAndroid Build Coastguard Worker    testonly = True,
735*61c4878aSAndroid Build Coastguard Worker    binary = ":rp2350_system_example",
736*61c4878aSAndroid Build Coastguard Worker    script = "//pw_system/py:pw_system_console",
737*61c4878aSAndroid Build Coastguard Worker)
738*61c4878aSAndroid Build Coastguard Worker
739*61c4878aSAndroid Build Coastguard Workerfilegroup(
740*61c4878aSAndroid Build Coastguard Worker    name = "doxygen",
741*61c4878aSAndroid Build Coastguard Worker    srcs = [
742*61c4878aSAndroid Build Coastguard Worker        "public/pw_system/system.h",
743*61c4878aSAndroid Build Coastguard Worker    ],
744*61c4878aSAndroid Build Coastguard Worker)
745