• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2022 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15load(
16    "//pw_build:pigweed.bzl",
17    "pw_cc_library",
18    "pw_cc_test",
19)
20load(
21    "//pw_build:selects.bzl",
22    "TARGET_COMPATIBLE_WITH_HOST_SELECT",
23)
24
25package(default_visibility = ["//visibility:public"])
26
27licenses(["notice"])
28
29pw_cc_library(
30    name = "server_api",
31    srcs = [
32        "server_reader_writer.cc",
33    ],
34    hdrs = [
35        "public/pw_rpc/pwpb/internal/method.h",
36        "public/pw_rpc/pwpb/internal/method_union.h",
37        "public/pw_rpc/pwpb/server_reader_writer.h",
38    ],
39    includes = ["public"],
40    deps = [
41        ":common",
42        "//pw_rpc/raw:server_api",
43    ],
44)
45
46pw_cc_library(
47    name = "client_api",
48    hdrs = [
49        "public/pw_rpc/pwpb/client_reader_writer.h",
50    ],
51    includes = ["public"],
52    deps = [
53        ":common",
54    ],
55)
56
57pw_cc_library(
58    name = "common",
59    hdrs = [
60        "public/pw_rpc/pwpb/internal/common.h",
61        "public/pw_rpc/pwpb/serde.h",
62        "public/pw_rpc/pwpb/server_reader_writer.h",
63    ],
64    includes = ["public"],
65    deps = [
66        "//pw_rpc",
67    ],
68)
69
70pw_cc_library(
71    name = "test_method_context",
72    hdrs = [
73        "public/pw_rpc/pwpb/fake_channel_output.h",
74        "public/pw_rpc/pwpb/test_method_context.h",
75    ],
76    includes = ["public"],
77    deps = [
78        ":common",
79        ":server_api",
80        "//pw_assert",
81        "//pw_containers",
82        "//pw_rpc:internal_test_utils",
83        "//pw_span",
84    ],
85)
86
87pw_cc_library(
88    name = "client_testing",
89    hdrs = [
90        "public/pw_rpc/pwpb/client_testing.h",
91    ],
92    includes = ["public"],
93    deps = [
94        ":test_method_context",
95        "//pw_rpc",
96        "//pw_rpc/raw:client_testing",
97    ],
98)
99
100pw_cc_library(
101    name = "client_server_testing",
102    hdrs = [
103        "public/pw_rpc/pwpb/client_server_testing.h",
104    ],
105    includes = ["public"],
106    deps = [
107        ":test_method_context",
108        "//pw_rpc:client_server_testing",
109    ],
110)
111
112pw_cc_library(
113    name = "client_server_testing_threaded",
114    hdrs = [
115        "public/pw_rpc/pwpb/client_server_testing_threaded.h",
116    ],
117    includes = ["public"],
118    deps = [
119        ":test_method_context",
120        "//pw_rpc:client_server_testing_threaded",
121    ],
122)
123
124pw_cc_library(
125    name = "internal_test_utils",
126    hdrs = ["pw_rpc_pwpb_private/internal_test_utils.h"],
127    deps = ["//pw_rpc:internal_test_utils"],
128)
129
130pw_cc_library(
131    name = "echo_service",
132    hdrs = ["public/pw_rpc/echo_service_pwpb.h"],
133    deps = [
134        "//pw_rpc:echo_cc.pwpb_rpc",
135    ],
136)
137
138# TODO(b/242059613): Enable this library when logging_event_handler can be used.
139filegroup(
140    name = "client_integration_test",
141    srcs = [
142        "client_integration_test.cc",
143    ],
144    #deps = [
145    #    "//pw_rpc:integration_testing",
146    #    "//pw_sync:binary_semaphore",
147    #    "//pw_rpc:benchmark_cc.pwpb_rpc",
148    #]
149)
150
151pw_cc_test(
152    name = "client_call_test",
153    srcs = [
154        "client_call_test.cc",
155    ],
156    deps = [
157        ":client_api",
158        ":internal_test_utils",
159        "//pw_rpc",
160        "//pw_rpc:pw_rpc_test_cc.pwpb",
161    ],
162)
163
164pw_cc_test(
165    name = "client_reader_writer_test",
166    srcs = [
167        "client_reader_writer_test.cc",
168    ],
169    deps = [
170        ":client_api",
171        ":client_testing",
172        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
173    ],
174)
175
176pw_cc_test(
177    name = "client_server_context_test",
178    srcs = [
179        "client_server_context_test.cc",
180    ],
181    deps = [
182        ":client_api",
183        ":client_server_testing",
184        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
185    ],
186)
187
188pw_cc_test(
189    name = "client_server_context_threaded_test",
190    srcs = [
191        "client_server_context_threaded_test.cc",
192    ],
193    target_compatible_with = select(TARGET_COMPATIBLE_WITH_HOST_SELECT),
194    deps = [
195        ":client_api",
196        ":client_server_testing_threaded",
197        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
198        "//pw_sync:binary_semaphore",
199        "//pw_thread:test_threads_header",
200        "//pw_thread_stl:test_threads",
201    ],
202)
203
204pw_cc_test(
205    name = "codegen_test",
206    srcs = [
207        "codegen_test.cc",
208    ],
209    deps = [
210        ":internal_test_utils",
211        ":test_method_context",
212        "//pw_preprocessor",
213        "//pw_rpc:internal_test_utils",
214        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
215    ],
216)
217
218pw_cc_test(
219    name = "fake_channel_output_test",
220    srcs = ["fake_channel_output_test.cc"],
221    deps = [
222        ":common",
223        ":server_api",
224        ":test_method_context",
225        "//pw_rpc:internal_test_utils",
226        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
227    ],
228)
229
230pw_cc_test(
231    name = "method_test",
232    srcs = ["method_test.cc"],
233    deps = [
234        ":internal_test_utils",
235        ":server_api",
236        "//pw_containers",
237        "//pw_rpc",
238        "//pw_rpc:internal_test_utils",
239        "//pw_rpc:pw_rpc_test_cc.pwpb",
240    ],
241)
242
243pw_cc_test(
244    name = "method_info_test",
245    srcs = ["method_info_test.cc"],
246    deps = [
247        "//pw_rpc",
248        "//pw_rpc:internal_test_utils",
249        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
250    ],
251)
252
253pw_cc_test(
254    name = "method_lookup_test",
255    srcs = ["method_lookup_test.cc"],
256    deps = [
257        ":test_method_context",
258        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
259        "//pw_rpc/raw:test_method_context",
260    ],
261)
262
263pw_cc_test(
264    name = "method_union_test",
265    srcs = ["method_union_test.cc"],
266    deps = [
267        ":internal_test_utils",
268        ":server_api",
269        "//pw_rpc:internal_test_utils",
270        "//pw_rpc:pw_rpc_test_cc.pwpb",
271    ],
272)
273
274# TODO(b/234874064): Requires pwpb options file support to compile.
275filegroup(
276    name = "echo_service_test",
277    srcs = ["echo_service_test.cc"],
278    #     deps = [
279    #       ":echo_service",
280    #       ":test_method_context",
281    #     ],
282)
283
284pw_cc_test(
285    name = "server_reader_writer_test",
286    srcs = ["server_reader_writer_test.cc"],
287    deps = [
288        ":server_api",
289        ":test_method_context",
290        "//pw_rpc",
291        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
292    ],
293)
294
295pw_cc_test(
296    name = "serde_test",
297    srcs = ["serde_test.cc"],
298    deps = [
299        ":common",
300        "//pw_rpc:pw_rpc_test_cc.pwpb",
301    ],
302)
303
304pw_cc_test(
305    name = "server_callback_test",
306    srcs = ["server_callback_test.cc"],
307    deps = [
308        ":test_method_context",
309        "//pw_rpc",
310        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
311    ],
312)
313
314pw_cc_test(
315    name = "stub_generation_test",
316    srcs = ["stub_generation_test.cc"],
317    deps = [
318        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
319    ],
320)
321
322pw_cc_test(
323    name = "synchronous_call_test",
324    srcs = ["synchronous_call_test.cc"],
325    deps = [
326        ":test_method_context",
327        "//pw_rpc:pw_rpc_test_cc.pwpb_rpc",
328        "//pw_rpc:synchronous_client_api",
329        "//pw_work_queue",
330        "//pw_work_queue:stl_test_thread",
331        "//pw_work_queue:test_thread_header",
332    ],
333)
334