xref: /aosp_15_r20/external/pigweed/pw_rpc/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_proto//proto:defs.bzl", "proto_library")
16*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:proto.bzl", "py_proto_library")
17*61c4878aSAndroid Build Coastguard Workerload(
18*61c4878aSAndroid Build Coastguard Worker    "//pw_protobuf_compiler:pw_proto_library.bzl",
19*61c4878aSAndroid Build Coastguard Worker    "nanopb_proto_library",
20*61c4878aSAndroid Build Coastguard Worker    "nanopb_rpc_proto_library",
21*61c4878aSAndroid Build Coastguard Worker    "pw_proto_filegroup",
22*61c4878aSAndroid Build Coastguard Worker    "pwpb_proto_library",
23*61c4878aSAndroid Build Coastguard Worker    "pwpb_rpc_proto_library",
24*61c4878aSAndroid Build Coastguard Worker    "raw_rpc_proto_library",
25*61c4878aSAndroid Build Coastguard Worker)
26*61c4878aSAndroid Build Coastguard Workerload("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test")
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Workerpackage(default_visibility = ["//visibility:public"])
29*61c4878aSAndroid Build Coastguard Worker
30*61c4878aSAndroid Build Coastguard Workerlicenses(["notice"])
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Workerpw_proto_filegroup(
33*61c4878aSAndroid Build Coastguard Worker    name = "benchmark_proto_and_options",
34*61c4878aSAndroid Build Coastguard Worker    srcs = ["benchmark.proto"],
35*61c4878aSAndroid Build Coastguard Worker    options_files = [
36*61c4878aSAndroid Build Coastguard Worker        "benchmark.options",
37*61c4878aSAndroid Build Coastguard Worker        "benchmark.pwpb_options",
38*61c4878aSAndroid Build Coastguard Worker    ],
39*61c4878aSAndroid Build Coastguard Worker)
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Workerproto_library(
42*61c4878aSAndroid Build Coastguard Worker    name = "benchmark_proto",
43*61c4878aSAndroid Build Coastguard Worker    srcs = [":benchmark_proto_and_options"],
44*61c4878aSAndroid Build Coastguard Worker)
45*61c4878aSAndroid Build Coastguard Worker
46*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
47*61c4878aSAndroid Build Coastguard Worker    name = "benchmark_pwpb",
48*61c4878aSAndroid Build Coastguard Worker    deps = [":benchmark_proto"],
49*61c4878aSAndroid Build Coastguard Worker)
50*61c4878aSAndroid Build Coastguard Worker
51*61c4878aSAndroid Build Coastguard Workerraw_rpc_proto_library(
52*61c4878aSAndroid Build Coastguard Worker    name = "benchmark_raw_rpc",
53*61c4878aSAndroid Build Coastguard Worker    deps = [":benchmark_proto"],
54*61c4878aSAndroid Build Coastguard Worker)
55*61c4878aSAndroid Build Coastguard Worker
56*61c4878aSAndroid Build Coastguard Workercc_library(
57*61c4878aSAndroid Build Coastguard Worker    name = "benchmark",
58*61c4878aSAndroid Build Coastguard Worker    srcs = ["benchmark.cc"],
59*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/benchmark.h"],
60*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
61*61c4878aSAndroid Build Coastguard Worker    deps = [
62*61c4878aSAndroid Build Coastguard Worker        ":benchmark_pwpb",
63*61c4878aSAndroid Build Coastguard Worker        ":benchmark_raw_rpc",
64*61c4878aSAndroid Build Coastguard Worker    ],
65*61c4878aSAndroid Build Coastguard Worker)
66*61c4878aSAndroid Build Coastguard Worker
67*61c4878aSAndroid Build Coastguard Worker# TODO: b/242059613 - Build this as a cc_binary and use it in integration tests.
68*61c4878aSAndroid Build Coastguard Workerfilegroup(
69*61c4878aSAndroid Build Coastguard Worker    name = "test_rpc_server",
70*61c4878aSAndroid Build Coastguard Worker    srcs = ["test_rpc_server.cc"],
71*61c4878aSAndroid Build Coastguard Worker    # deps = [
72*61c4878aSAndroid Build Coastguard Worker    #     "system_server",
73*61c4878aSAndroid Build Coastguard Worker    #     ":benchmark",
74*61c4878aSAndroid Build Coastguard Worker    #     "//pw_log",
75*61c4878aSAndroid Build Coastguard Worker    # ],
76*61c4878aSAndroid Build Coastguard Worker)
77*61c4878aSAndroid Build Coastguard Worker
78*61c4878aSAndroid Build Coastguard Workercc_library(
79*61c4878aSAndroid Build Coastguard Worker    name = "client_server",
80*61c4878aSAndroid Build Coastguard Worker    srcs = ["client_server.cc"],
81*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/client_server.h"],
82*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
83*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc"],
84*61c4878aSAndroid Build Coastguard Worker)
85*61c4878aSAndroid Build Coastguard Worker
86*61c4878aSAndroid Build Coastguard Worker# See https://pigweed.dev/pw_rpc/cpp.html#c.PW_RPC_YIELD_MODE for documentation.
87*61c4878aSAndroid Build Coastguard Workerconstraint_setting(
88*61c4878aSAndroid Build Coastguard Worker    name = "yield_mode",
89*61c4878aSAndroid Build Coastguard Worker    default_constraint_value = ":yield_mode_sleep",
90*61c4878aSAndroid Build Coastguard Worker)
91*61c4878aSAndroid Build Coastguard Worker
92*61c4878aSAndroid Build Coastguard Workerconstraint_value(
93*61c4878aSAndroid Build Coastguard Worker    name = "yield_mode_busy_loop",
94*61c4878aSAndroid Build Coastguard Worker    constraint_setting = ":yield_mode",
95*61c4878aSAndroid Build Coastguard Worker)
96*61c4878aSAndroid Build Coastguard Worker
97*61c4878aSAndroid Build Coastguard Workerconstraint_value(
98*61c4878aSAndroid Build Coastguard Worker    name = "yield_mode_sleep",
99*61c4878aSAndroid Build Coastguard Worker    constraint_setting = ":yield_mode",
100*61c4878aSAndroid Build Coastguard Worker)
101*61c4878aSAndroid Build Coastguard Worker
102*61c4878aSAndroid Build Coastguard Workerconstraint_value(
103*61c4878aSAndroid Build Coastguard Worker    name = "yield_mode_yield",
104*61c4878aSAndroid Build Coastguard Worker    constraint_setting = ":yield_mode",
105*61c4878aSAndroid Build Coastguard Worker)
106*61c4878aSAndroid Build Coastguard Worker
107*61c4878aSAndroid Build Coastguard Workercc_library(
108*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc",
109*61c4878aSAndroid Build Coastguard Worker    srcs = [
110*61c4878aSAndroid Build Coastguard Worker        "call.cc",
111*61c4878aSAndroid Build Coastguard Worker        "channel.cc",
112*61c4878aSAndroid Build Coastguard Worker        "channel_list.cc",
113*61c4878aSAndroid Build Coastguard Worker        "client.cc",
114*61c4878aSAndroid Build Coastguard Worker        "client_call.cc",
115*61c4878aSAndroid Build Coastguard Worker        "endpoint.cc",
116*61c4878aSAndroid Build Coastguard Worker        "packet.cc",
117*61c4878aSAndroid Build Coastguard Worker        "packet_meta.cc",
118*61c4878aSAndroid Build Coastguard Worker        "server.cc",
119*61c4878aSAndroid Build Coastguard Worker        "server_call.cc",
120*61c4878aSAndroid Build Coastguard Worker        "service.cc",
121*61c4878aSAndroid Build Coastguard Worker    ],
122*61c4878aSAndroid Build Coastguard Worker    hdrs = [
123*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/channel.h",
124*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/client.h",
125*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/call.h",
126*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/call_context.h",
127*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/channel_list.h",
128*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/client_call.h",
129*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/config.h",
130*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/encoding_buffer.h",
131*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/endpoint.h",
132*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/grpc.h",
133*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/hash.h",
134*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/lock.h",
135*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/log_config.h",
136*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method.h",
137*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method_info.h",
138*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method_lookup.h",
139*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method_union.h",
140*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/packet.h",
141*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/server_call.h",
142*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/service_client.h",
143*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/method_id.h",
144*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/method_info.h",
145*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/method_type.h",
146*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/packet_meta.h",
147*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/server.h",
148*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/service.h",
149*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/service_id.h",
150*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/writer.h",
151*61c4878aSAndroid Build Coastguard Worker    ],
152*61c4878aSAndroid Build Coastguard Worker    # LINT.IfChange
153*61c4878aSAndroid Build Coastguard Worker    defines = select({
154*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_busy_loop": ["PW_RPC_YIELD_MODE=PW_RPC_YIELD_MODE_BUSY_LOOP"],
155*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_sleep": ["PW_RPC_YIELD_MODE=PW_RPC_YIELD_MODE_SLEEP"],
156*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_yield": ["PW_RPC_YIELD_MODE=PW_RPC_YIELD_MODE_YIELD"],
157*61c4878aSAndroid Build Coastguard Worker    }),
158*61c4878aSAndroid Build Coastguard Worker    # LINT.ThenChange(//pw_rpc/public/pw_rpc/internal/config.h)
159*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
160*61c4878aSAndroid Build Coastguard Worker    deps = [
161*61c4878aSAndroid Build Coastguard Worker        ":config_override",
162*61c4878aSAndroid Build Coastguard Worker        ":internal_packet_pwpb",
163*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
164*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
165*61c4878aSAndroid Build Coastguard Worker        "//pw_containers:intrusive_list",
166*61c4878aSAndroid Build Coastguard Worker        "//pw_function",
167*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
168*61c4878aSAndroid Build Coastguard Worker        "//pw_polyfill",
169*61c4878aSAndroid Build Coastguard Worker        "//pw_preprocessor",
170*61c4878aSAndroid Build Coastguard Worker        "//pw_result",
171*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
172*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
173*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
174*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
175*61c4878aSAndroid Build Coastguard Worker        "//pw_toolchain:no_destructor",
176*61c4878aSAndroid Build Coastguard Worker    ] + select({
177*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_busy_loop": [],
178*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_sleep": ["//pw_thread:sleep"],
179*61c4878aSAndroid Build Coastguard Worker        ":yield_mode_yield": ["//pw_thread:yield"],
180*61c4878aSAndroid Build Coastguard Worker    }),
181*61c4878aSAndroid Build Coastguard Worker)
182*61c4878aSAndroid Build Coastguard Worker
183*61c4878aSAndroid Build Coastguard Workerlabel_flag(
184*61c4878aSAndroid Build Coastguard Worker    name = "config_override",
185*61c4878aSAndroid Build Coastguard Worker    build_setting_default = "//pw_build:default_module_config",
186*61c4878aSAndroid Build Coastguard Worker)
187*61c4878aSAndroid Build Coastguard Worker
188*61c4878aSAndroid Build Coastguard Workercc_library(
189*61c4878aSAndroid Build Coastguard Worker    name = "completion_request_callback_config_enabled",
190*61c4878aSAndroid Build Coastguard Worker    defines = [
191*61c4878aSAndroid Build Coastguard Worker        "PW_RPC_COMPLETION_REQUEST_CALLBACK=1",
192*61c4878aSAndroid Build Coastguard Worker    ],
193*61c4878aSAndroid Build Coastguard Worker)
194*61c4878aSAndroid Build Coastguard Worker
195*61c4878aSAndroid Build Coastguard Workerconfig_setting(
196*61c4878aSAndroid Build Coastguard Worker    name = "completion_request_callback_config_setting",
197*61c4878aSAndroid Build Coastguard Worker    flag_values = {
198*61c4878aSAndroid Build Coastguard Worker        ":config_override": ":completion_request_callback_config_enabled",
199*61c4878aSAndroid Build Coastguard Worker    },
200*61c4878aSAndroid Build Coastguard Worker)
201*61c4878aSAndroid Build Coastguard Worker
202*61c4878aSAndroid Build Coastguard Workercc_library(
203*61c4878aSAndroid Build Coastguard Worker    name = "synchronous_client_api",
204*61c4878aSAndroid Build Coastguard Worker    hdrs = [
205*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/synchronous_call_impl.h",
206*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/synchronous_call.h",
207*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/synchronous_call_result.h",
208*61c4878aSAndroid Build Coastguard Worker    ],
209*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
210*61c4878aSAndroid Build Coastguard Worker    deps = [
211*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
212*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
213*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:timed_thread_notification",
214*61c4878aSAndroid Build Coastguard Worker    ],
215*61c4878aSAndroid Build Coastguard Worker)
216*61c4878aSAndroid Build Coastguard Worker
217*61c4878aSAndroid Build Coastguard Workercc_library(
218*61c4878aSAndroid Build Coastguard Worker    name = "client_server_testing",
219*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/internal/client_server_testing.h"],
220*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
221*61c4878aSAndroid Build Coastguard Worker    deps = [
222*61c4878aSAndroid Build Coastguard Worker        ":client_server",
223*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
224*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
225*61c4878aSAndroid Build Coastguard Worker        "//pw_result",
226*61c4878aSAndroid Build Coastguard Worker    ],
227*61c4878aSAndroid Build Coastguard Worker)
228*61c4878aSAndroid Build Coastguard Worker
229*61c4878aSAndroid Build Coastguard Workercc_library(
230*61c4878aSAndroid Build Coastguard Worker    name = "client_server_testing_threaded",
231*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/internal/client_server_testing_threaded.h"],
232*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
233*61c4878aSAndroid Build Coastguard Worker    deps = [
234*61c4878aSAndroid Build Coastguard Worker        ":client_server_testing",
235*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
236*61c4878aSAndroid Build Coastguard Worker        "//pw_result",
237*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:binary_semaphore",
238*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
239*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
240*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:thread",
241*61c4878aSAndroid Build Coastguard Worker    ],
242*61c4878aSAndroid Build Coastguard Worker)
243*61c4878aSAndroid Build Coastguard Worker
244*61c4878aSAndroid Build Coastguard Workercc_library(
245*61c4878aSAndroid Build Coastguard Worker    name = "test_helpers",
246*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/test_helpers.h"],
247*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
248*61c4878aSAndroid Build Coastguard Worker    deps = [
249*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
250*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
251*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
252*61c4878aSAndroid Build Coastguard Worker        "//pw_chrono:system_clock",
253*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
254*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:counting_semaphore",
255*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:yield",
256*61c4878aSAndroid Build Coastguard Worker    ],
257*61c4878aSAndroid Build Coastguard Worker)
258*61c4878aSAndroid Build Coastguard Worker
259*61c4878aSAndroid Build Coastguard Worker# thread_testing target is kept for backward compatibility.
260*61c4878aSAndroid Build Coastguard Worker# New code should use test_helpers instead.
261*61c4878aSAndroid Build Coastguard Workercc_library(
262*61c4878aSAndroid Build Coastguard Worker    name = "thread_testing",
263*61c4878aSAndroid Build Coastguard Worker    hdrs = ["public/pw_rpc/thread_testing.h"],
264*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
265*61c4878aSAndroid Build Coastguard Worker    deps = [":test_helpers"],
266*61c4878aSAndroid Build Coastguard Worker)
267*61c4878aSAndroid Build Coastguard Worker
268*61c4878aSAndroid Build Coastguard Workercc_library(
269*61c4878aSAndroid Build Coastguard Worker    name = "internal_test_utils",
270*61c4878aSAndroid Build Coastguard Worker    srcs = ["fake_channel_output.cc"],
271*61c4878aSAndroid Build Coastguard Worker    hdrs = [
272*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/fake_channel_output.h",
273*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method_impl_tester.h",
274*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/method_info_tester.h",
275*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/test_method_context.h",
276*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/test_utils.h",
277*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/payloads_view.h",
278*61c4878aSAndroid Build Coastguard Worker        "pw_rpc_private/fake_server_reader_writer.h",
279*61c4878aSAndroid Build Coastguard Worker        "pw_rpc_private/test_method.h",
280*61c4878aSAndroid Build Coastguard Worker    ],
281*61c4878aSAndroid Build Coastguard Worker    includes = [
282*61c4878aSAndroid Build Coastguard Worker        ".",
283*61c4878aSAndroid Build Coastguard Worker        "public",
284*61c4878aSAndroid Build Coastguard Worker    ],
285*61c4878aSAndroid Build Coastguard Worker    visibility = [":__subpackages__"],
286*61c4878aSAndroid Build Coastguard Worker    deps = [
287*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
288*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
289*61c4878aSAndroid Build Coastguard Worker        "//pw_bytes",
290*61c4878aSAndroid Build Coastguard Worker        "//pw_containers:filtered_view",
291*61c4878aSAndroid Build Coastguard Worker        "//pw_containers:vector",
292*61c4878aSAndroid Build Coastguard Worker        "//pw_containers:wrapped_iterator",
293*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:fake_channel_output",
294*61c4878aSAndroid Build Coastguard Worker        "//pw_span",
295*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:mutex",
296*61c4878aSAndroid Build Coastguard Worker    ],
297*61c4878aSAndroid Build Coastguard Worker)
298*61c4878aSAndroid Build Coastguard Worker
299*61c4878aSAndroid Build Coastguard Workercc_library(
300*61c4878aSAndroid Build Coastguard Worker    name = "integration_testing",
301*61c4878aSAndroid Build Coastguard Worker    testonly = True,
302*61c4878aSAndroid Build Coastguard Worker    srcs = [
303*61c4878aSAndroid Build Coastguard Worker        "integration_testing.cc",
304*61c4878aSAndroid Build Coastguard Worker    ],
305*61c4878aSAndroid Build Coastguard Worker    hdrs = [
306*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/integration_test_socket_client.h",
307*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/integration_testing.h",
308*61c4878aSAndroid Build Coastguard Worker    ],
309*61c4878aSAndroid Build Coastguard Worker    strip_include_prefix = "public",
310*61c4878aSAndroid Build Coastguard Worker    deps = [
311*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
312*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
313*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc",
314*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:default_addresses",
315*61c4878aSAndroid Build Coastguard Worker        "//pw_hdlc:rpc_channel_output",
316*61c4878aSAndroid Build Coastguard Worker        "//pw_log",
317*61c4878aSAndroid Build Coastguard Worker        "//pw_stream:socket_stream",
318*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test",
319*61c4878aSAndroid Build Coastguard Worker        "//pw_unit_test:logging",
320*61c4878aSAndroid Build Coastguard Worker    ],
321*61c4878aSAndroid Build Coastguard Worker)
322*61c4878aSAndroid Build Coastguard Worker
323*61c4878aSAndroid Build Coastguard Worker# TODO: b/242059613 - Add the client integration test to the build.
324*61c4878aSAndroid Build Coastguard Workerfilegroup(
325*61c4878aSAndroid Build Coastguard Worker    name = "client_integration_test",
326*61c4878aSAndroid Build Coastguard Worker    srcs = ["client_integration_test.cc"],
327*61c4878aSAndroid Build Coastguard Worker)
328*61c4878aSAndroid Build Coastguard Worker
329*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
330*61c4878aSAndroid Build Coastguard Worker    name = "call_test",
331*61c4878aSAndroid Build Coastguard Worker    srcs = [
332*61c4878aSAndroid Build Coastguard Worker        "call_test.cc",
333*61c4878aSAndroid Build Coastguard Worker    ],
334*61c4878aSAndroid Build Coastguard Worker    deps = [
335*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
336*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
337*61c4878aSAndroid Build Coastguard Worker    ],
338*61c4878aSAndroid Build Coastguard Worker)
339*61c4878aSAndroid Build Coastguard Worker
340*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
341*61c4878aSAndroid Build Coastguard Worker    name = "callback_test",
342*61c4878aSAndroid Build Coastguard Worker    srcs = ["callback_test.cc"],
343*61c4878aSAndroid Build Coastguard Worker    deps = [
344*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
345*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc_test_raw_rpc",
346*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:client_testing",
347*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:binary_semaphore",
348*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:non_portable_test_thread_options",
349*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:sleep",
350*61c4878aSAndroid Build Coastguard Worker        "//pw_thread:yield",
351*61c4878aSAndroid Build Coastguard Worker        "//pw_thread_stl:non_portable_test_thread_options",
352*61c4878aSAndroid Build Coastguard Worker    ],
353*61c4878aSAndroid Build Coastguard Worker)
354*61c4878aSAndroid Build Coastguard Worker
355*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
356*61c4878aSAndroid Build Coastguard Worker    name = "channel_test",
357*61c4878aSAndroid Build Coastguard Worker    srcs = ["channel_test.cc"],
358*61c4878aSAndroid Build Coastguard Worker    deps = [
359*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
360*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
361*61c4878aSAndroid Build Coastguard Worker    ],
362*61c4878aSAndroid Build Coastguard Worker)
363*61c4878aSAndroid Build Coastguard Worker
364*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
365*61c4878aSAndroid Build Coastguard Worker    name = "method_test",
366*61c4878aSAndroid Build Coastguard Worker    srcs = ["method_test.cc"],
367*61c4878aSAndroid Build Coastguard Worker    deps = [
368*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
369*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
370*61c4878aSAndroid Build Coastguard Worker    ],
371*61c4878aSAndroid Build Coastguard Worker)
372*61c4878aSAndroid Build Coastguard Worker
373*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
374*61c4878aSAndroid Build Coastguard Worker    name = "packet_test",
375*61c4878aSAndroid Build Coastguard Worker    srcs = [
376*61c4878aSAndroid Build Coastguard Worker        "packet_test.cc",
377*61c4878aSAndroid Build Coastguard Worker    ],
378*61c4878aSAndroid Build Coastguard Worker    deps = [
379*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
380*61c4878aSAndroid Build Coastguard Worker        "//pw_fuzzer:fuzztest",
381*61c4878aSAndroid Build Coastguard Worker    ],
382*61c4878aSAndroid Build Coastguard Worker)
383*61c4878aSAndroid Build Coastguard Worker
384*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
385*61c4878aSAndroid Build Coastguard Worker    name = "packet_meta_test",
386*61c4878aSAndroid Build Coastguard Worker    srcs = [
387*61c4878aSAndroid Build Coastguard Worker        "packet_meta_test.cc",
388*61c4878aSAndroid Build Coastguard Worker    ],
389*61c4878aSAndroid Build Coastguard Worker    deps = [
390*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
391*61c4878aSAndroid Build Coastguard Worker        "//pw_fuzzer:fuzztest",
392*61c4878aSAndroid Build Coastguard Worker    ],
393*61c4878aSAndroid Build Coastguard Worker)
394*61c4878aSAndroid Build Coastguard Worker
395*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
396*61c4878aSAndroid Build Coastguard Worker    name = "client_server_test",
397*61c4878aSAndroid Build Coastguard Worker    srcs = ["client_server_test.cc"],
398*61c4878aSAndroid Build Coastguard Worker    deps = [
399*61c4878aSAndroid Build Coastguard Worker        ":client_server",
400*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
401*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/raw:server_api",
402*61c4878aSAndroid Build Coastguard Worker    ],
403*61c4878aSAndroid Build Coastguard Worker)
404*61c4878aSAndroid Build Coastguard Worker
405*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
406*61c4878aSAndroid Build Coastguard Worker    name = "server_test",
407*61c4878aSAndroid Build Coastguard Worker    srcs = [
408*61c4878aSAndroid Build Coastguard Worker        "server_test.cc",
409*61c4878aSAndroid Build Coastguard Worker    ],
410*61c4878aSAndroid Build Coastguard Worker    deps = [
411*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
412*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
413*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
414*61c4878aSAndroid Build Coastguard Worker    ],
415*61c4878aSAndroid Build Coastguard Worker)
416*61c4878aSAndroid Build Coastguard Worker
417*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
418*61c4878aSAndroid Build Coastguard Worker    name = "service_test",
419*61c4878aSAndroid Build Coastguard Worker    srcs = [
420*61c4878aSAndroid Build Coastguard Worker        "service_test.cc",
421*61c4878aSAndroid Build Coastguard Worker    ],
422*61c4878aSAndroid Build Coastguard Worker    deps = [
423*61c4878aSAndroid Build Coastguard Worker        ":internal_test_utils",
424*61c4878aSAndroid Build Coastguard Worker        ":pw_rpc",
425*61c4878aSAndroid Build Coastguard Worker        "//pw_assert",
426*61c4878aSAndroid Build Coastguard Worker    ],
427*61c4878aSAndroid Build Coastguard Worker)
428*61c4878aSAndroid Build Coastguard Worker
429*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
430*61c4878aSAndroid Build Coastguard Worker    name = "fake_channel_output_test",
431*61c4878aSAndroid Build Coastguard Worker    srcs = ["fake_channel_output_test.cc"],
432*61c4878aSAndroid Build Coastguard Worker    deps = [":internal_test_utils"],
433*61c4878aSAndroid Build Coastguard Worker)
434*61c4878aSAndroid Build Coastguard Worker
435*61c4878aSAndroid Build Coastguard Workerpw_cc_test(
436*61c4878aSAndroid Build Coastguard Worker    name = "test_helpers_test",
437*61c4878aSAndroid Build Coastguard Worker    srcs = ["test_helpers_test.cc"],
438*61c4878aSAndroid Build Coastguard Worker    deps = [
439*61c4878aSAndroid Build Coastguard Worker        ":test_helpers",
440*61c4878aSAndroid Build Coastguard Worker        "//pw_result",
441*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:client_testing",
442*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:echo_service",
443*61c4878aSAndroid Build Coastguard Worker        "//pw_rpc/pwpb:server_api",
444*61c4878aSAndroid Build Coastguard Worker        "//pw_status",
445*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:interrupt_spin_lock",
446*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:lock_annotations",
447*61c4878aSAndroid Build Coastguard Worker        "//pw_sync:timed_thread_notification",
448*61c4878aSAndroid Build Coastguard Worker    ],
449*61c4878aSAndroid Build Coastguard Worker)
450*61c4878aSAndroid Build Coastguard Worker
451*61c4878aSAndroid Build Coastguard Workerproto_library(
452*61c4878aSAndroid Build Coastguard Worker    name = "internal_packet_proto",
453*61c4878aSAndroid Build Coastguard Worker    srcs = ["internal/packet.proto"],
454*61c4878aSAndroid Build Coastguard Worker)
455*61c4878aSAndroid Build Coastguard Worker
456*61c4878aSAndroid Build Coastguard Workerjava_proto_library(
457*61c4878aSAndroid Build Coastguard Worker    name = "packet_proto_java",
458*61c4878aSAndroid Build Coastguard Worker    deps = [":internal_packet_proto"],
459*61c4878aSAndroid Build Coastguard Worker)
460*61c4878aSAndroid Build Coastguard Worker
461*61c4878aSAndroid Build Coastguard Workerjava_lite_proto_library(
462*61c4878aSAndroid Build Coastguard Worker    name = "packet_proto_java_lite",
463*61c4878aSAndroid Build Coastguard Worker    deps = [":internal_packet_proto"],
464*61c4878aSAndroid Build Coastguard Worker)
465*61c4878aSAndroid Build Coastguard Worker
466*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
467*61c4878aSAndroid Build Coastguard Worker    name = "internal_packet_proto_pb2",
468*61c4878aSAndroid Build Coastguard Worker    deps = [":internal_packet_proto"],
469*61c4878aSAndroid Build Coastguard Worker)
470*61c4878aSAndroid Build Coastguard Worker
471*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
472*61c4878aSAndroid Build Coastguard Worker    name = "internal_packet_pwpb",
473*61c4878aSAndroid Build Coastguard Worker    deps = [":internal_packet_proto"],
474*61c4878aSAndroid Build Coastguard Worker)
475*61c4878aSAndroid Build Coastguard Worker
476*61c4878aSAndroid Build Coastguard Workerproto_library(
477*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_proto",
478*61c4878aSAndroid Build Coastguard Worker    srcs = [
479*61c4878aSAndroid Build Coastguard Worker        "pw_rpc_test_protos/no_package.proto",
480*61c4878aSAndroid Build Coastguard Worker        "pw_rpc_test_protos/test.proto",
481*61c4878aSAndroid Build Coastguard Worker    ],
482*61c4878aSAndroid Build Coastguard Worker    strip_import_prefix = "/pw_rpc",
483*61c4878aSAndroid Build Coastguard Worker)
484*61c4878aSAndroid Build Coastguard Worker
485*61c4878aSAndroid Build Coastguard Workernanopb_proto_library(
486*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_nanopb",
487*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc_test_proto"],
488*61c4878aSAndroid Build Coastguard Worker)
489*61c4878aSAndroid Build Coastguard Worker
490*61c4878aSAndroid Build Coastguard Workernanopb_rpc_proto_library(
491*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_nanopb_rpc",
492*61c4878aSAndroid Build Coastguard Worker    nanopb_proto_library_deps = [":pw_rpc_test_nanopb"],
493*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc_test_proto"],
494*61c4878aSAndroid Build Coastguard Worker)
495*61c4878aSAndroid Build Coastguard Worker
496*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
497*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_pwpb",
498*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc_test_proto"],
499*61c4878aSAndroid Build Coastguard Worker)
500*61c4878aSAndroid Build Coastguard Worker
501*61c4878aSAndroid Build Coastguard Workerpwpb_rpc_proto_library(
502*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_pwpb_rpc",
503*61c4878aSAndroid Build Coastguard Worker    pwpb_proto_library_deps = [":pw_rpc_test_pwpb"],
504*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc_test_proto"],
505*61c4878aSAndroid Build Coastguard Worker)
506*61c4878aSAndroid Build Coastguard Worker
507*61c4878aSAndroid Build Coastguard Workerraw_rpc_proto_library(
508*61c4878aSAndroid Build Coastguard Worker    name = "pw_rpc_test_raw_rpc",
509*61c4878aSAndroid Build Coastguard Worker    deps = [":pw_rpc_test_proto"],
510*61c4878aSAndroid Build Coastguard Worker)
511*61c4878aSAndroid Build Coastguard Worker
512*61c4878aSAndroid Build Coastguard Workerpw_proto_filegroup(
513*61c4878aSAndroid Build Coastguard Worker    name = "echo_proto_and_options",
514*61c4878aSAndroid Build Coastguard Worker    srcs = ["echo.proto"],
515*61c4878aSAndroid Build Coastguard Worker    options_files = [
516*61c4878aSAndroid Build Coastguard Worker        "echo.options",
517*61c4878aSAndroid Build Coastguard Worker        "echo.pwpb_options",
518*61c4878aSAndroid Build Coastguard Worker    ],
519*61c4878aSAndroid Build Coastguard Worker)
520*61c4878aSAndroid Build Coastguard Worker
521*61c4878aSAndroid Build Coastguard Workerproto_library(
522*61c4878aSAndroid Build Coastguard Worker    name = "echo_proto",
523*61c4878aSAndroid Build Coastguard Worker    srcs = [":echo_proto_and_options"],
524*61c4878aSAndroid Build Coastguard Worker)
525*61c4878aSAndroid Build Coastguard Worker
526*61c4878aSAndroid Build Coastguard Workerpy_proto_library(
527*61c4878aSAndroid Build Coastguard Worker    name = "echo_py_pb2",
528*61c4878aSAndroid Build Coastguard Worker    deps = [":echo_proto"],
529*61c4878aSAndroid Build Coastguard Worker)
530*61c4878aSAndroid Build Coastguard Worker
531*61c4878aSAndroid Build Coastguard Workernanopb_proto_library(
532*61c4878aSAndroid Build Coastguard Worker    name = "echo_nanopb",
533*61c4878aSAndroid Build Coastguard Worker    deps = [":echo_proto"],
534*61c4878aSAndroid Build Coastguard Worker)
535*61c4878aSAndroid Build Coastguard Worker
536*61c4878aSAndroid Build Coastguard Workernanopb_rpc_proto_library(
537*61c4878aSAndroid Build Coastguard Worker    name = "echo_nanopb_rpc",
538*61c4878aSAndroid Build Coastguard Worker    nanopb_proto_library_deps = [":echo_nanopb"],
539*61c4878aSAndroid Build Coastguard Worker    deps = [":echo_proto"],
540*61c4878aSAndroid Build Coastguard Worker)
541*61c4878aSAndroid Build Coastguard Worker
542*61c4878aSAndroid Build Coastguard Workerpwpb_proto_library(
543*61c4878aSAndroid Build Coastguard Worker    name = "echo_pwpb",
544*61c4878aSAndroid Build Coastguard Worker    deps = [":echo_proto"],
545*61c4878aSAndroid Build Coastguard Worker)
546*61c4878aSAndroid Build Coastguard Worker
547*61c4878aSAndroid Build Coastguard Workerpwpb_rpc_proto_library(
548*61c4878aSAndroid Build Coastguard Worker    name = "echo_pwpb_rpc",
549*61c4878aSAndroid Build Coastguard Worker    pwpb_proto_library_deps = [":echo_pwpb"],
550*61c4878aSAndroid Build Coastguard Worker    deps = [":echo_proto"],
551*61c4878aSAndroid Build Coastguard Worker)
552*61c4878aSAndroid Build Coastguard Worker
553*61c4878aSAndroid Build Coastguard Workerfilegroup(
554*61c4878aSAndroid Build Coastguard Worker    name = "doxygen",
555*61c4878aSAndroid Build Coastguard Worker    srcs = [
556*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/channel.h",
557*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/internal/config.h",
558*61c4878aSAndroid Build Coastguard Worker        "public/pw_rpc/synchronous_call.h",
559*61c4878aSAndroid Build Coastguard Worker    ],
560*61c4878aSAndroid Build Coastguard Worker)
561