• 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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16
17pw_add_library(pw_rpc.pwpb.server_api STATIC
18  HEADERS
19    public/pw_rpc/pwpb/internal/method.h
20    public/pw_rpc/pwpb/internal/method_union.h
21    public/pw_rpc/pwpb/server_reader_writer.h
22  PUBLIC_INCLUDES
23    public
24  PUBLIC_DEPS
25    pw_bytes
26    pw_rpc.config
27    pw_rpc.pwpb.common
28    pw_rpc.raw.server_api
29    pw_rpc.server
30  SOURCES
31    server_reader_writer.cc
32  PRIVATE_DEPS
33    pw_log
34    pw_rpc.log_config
35)
36
37pw_add_library(pw_rpc.pwpb.client_api INTERFACE
38  HEADERS
39    public/pw_rpc/pwpb/client_reader_writer.h
40  PUBLIC_INCLUDES
41    public
42  PUBLIC_DEPS
43    pw_function
44    pw_rpc.pwpb.common
45    pw_rpc.common
46)
47
48pw_add_library(pw_rpc.pwpb.common INTERFACE
49  HEADERS
50    public/pw_rpc/pwpb/internal/common.h
51    public/pw_rpc/pwpb/serde.h
52  PUBLIC_INCLUDES
53    public
54  PUBLIC_DEPS
55    pw_assert.assert
56    pw_bytes
57    pw_log
58    pw_protobuf
59    pw_rpc.client
60    pw_rpc.common
61    pw_rpc.log_config
62    pw_rpc.server
63    pw_span
64    pw_status
65)
66
67pw_add_library(pw_rpc.pwpb.test_method_context INTERFACE
68  HEADERS
69    public/pw_rpc/pwpb/fake_channel_output.h
70    public/pw_rpc/pwpb/test_method_context.h
71  PUBLIC_INCLUDES
72    public
73  PUBLIC_DEPS
74    pw_assert
75    pw_containers
76    pw_rpc.pwpb.server_api
77    pw_rpc.test_utils
78    pw_span
79)
80
81pw_add_library(pw_rpc.pwpb.client_testing INTERFACE
82  HEADERS
83    public/pw_rpc/pwpb/client_testing.h
84  PUBLIC_INCLUDES
85    public
86  PUBLIC_DEPS
87    pw_rpc.client
88    pw_rpc.pwpb.test_method_context
89    pw_rpc.raw.client_testing
90)
91
92pw_add_library(pw_rpc.pwpb.client_server_testing INTERFACE
93  HEADERS
94    public/pw_rpc/pwpb/client_server_testing.h
95  PUBLIC_INCLUDES
96    public
97  PUBLIC_DEPS
98    pw_rpc.pwpb.test_method_context
99    pw_rpc.client_server_testing
100)
101
102pw_add_library(pw_rpc.pwpb.client_server_testing_threaded INTERFACE
103  HEADERS
104    public/pw_rpc/pwpb/client_server_testing_threaded.h
105  PUBLIC_INCLUDES
106    public
107  PUBLIC_DEPS
108    pw_rpc.pwpb.test_method_context
109    pw_rpc.client_server_testing_threaded
110)
111
112pw_add_library(pw_rpc.pwpb.internal_test_utils INTERFACE
113  HEADERS
114    pw_rpc_pwpb_private/internal_test_utils.h
115  PUBLIC_DEPS
116    pw_status
117    pw_stream
118)
119
120pw_add_library(pw_rpc.pwpb.echo_service INTERFACE
121  HEADERS
122    public/pw_rpc/echo_service_pwpb.h
123  PUBLIC_INCLUDES
124    public
125  PUBLIC_DEPS
126    pw_rpc.protos.pwpb_rpc
127)
128
129pw_add_library(pw_rpc.pwpb.client_integration_test STATIC
130  SOURCES
131    client_integration_test.cc
132  PRIVATE_DEPS
133    pw_assert
134    pw_rpc.integration_testing
135    pw_rpc.protos.pwpb_rpc
136    pw_sync.binary_semaphore
137    pw_unit_test
138)
139
140pw_add_test(pw_rpc.pwpb.client_call_test
141  SOURCES
142    client_call_test.cc
143  PRIVATE_DEPS
144    pw_rpc.pwpb.client_api
145    pw_rpc.pwpb.internal_test_utils
146    pw_rpc.test_protos.pwpb
147    pw_rpc.test_utils
148  GROUPS
149    modules
150    pw_rpc.pwpb
151)
152
153pw_add_test(pw_rpc.pwpb.client_reader_writer_test
154  SOURCES
155    client_reader_writer_test.cc
156  PRIVATE_DEPS
157    pw_rpc.pwpb.client_api
158    pw_rpc.pwpb.client_testing
159    pw_rpc.test_protos.pwpb_rpc
160  GROUPS
161    modules
162    pw_rpc.pwpb
163)
164
165pw_add_test(pw_rpc.pwpb.client_server_context_test
166  SOURCES
167    client_server_context_test.cc
168  PRIVATE_DEPS
169    pw_rpc.pwpb.client_api
170    pw_rpc.pwpb.client_server_testing
171    pw_rpc.test_protos.pwpb_rpc
172  GROUPS
173    modules
174    pw_rpc.pwpb
175)
176
177if(("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND
178   (NOT "${pw_sync.binary_semaphore_BACKEND}" STREQUAL "") AND
179   (NOT "${pw_sync.mutex_BACKEND}" STREQUAL ""))
180  pw_add_test(pw_rpc.pwpb.client_server_context_threaded_test
181    SOURCES
182      client_server_context_threaded_test.cc
183    PRIVATE_DEPS
184      pw_rpc.pwpb.client_api
185      pw_rpc.pwpb.client_server_testing_threaded
186      pw_rpc.test_protos.pwpb_rpc
187      pw_sync.binary_semaphore
188      pw_thread.test_threads
189      pw_thread.thread
190      pw_thread_stl.test_threads
191    GROUPS
192      modules
193      pw_rpc.pwpb
194  )
195endif()
196
197pw_add_test(pw_rpc.pwpb.codegen_test
198  SOURCES
199    codegen_test.cc
200  PRIVATE_DEPS
201    pw_rpc.pwpb.client_api
202    pw_rpc.pwpb.internal_test_utils
203    pw_rpc.pwpb.server_api
204    pw_rpc.pwpb.test_method_context
205    pw_rpc.test_protos.pwpb_rpc
206    pw_rpc.test_utils
207  GROUPS
208    modules
209    pw_rpc.pwpb
210)
211
212pw_add_test(pw_rpc.pwpb.echo_service_test
213  SOURCES
214    echo_service_test.cc
215  PRIVATE_DEPS
216    pw_rpc.pwpb.echo_service
217    pw_rpc.pwpb.server_api
218    pw_rpc.pwpb.test_method_context
219  GROUPS
220    modules
221    pw_rpc.pwpb
222)
223
224pw_add_test(pw_rpc.pwpb.fake_channel_output_test
225  SOURCES
226    fake_channel_output_test.cc
227  PRIVATE_DEPS
228    pw_rpc.pwpb.server_api
229    pw_rpc.pwpb.test_method_context
230    pw_rpc.test_protos.pwpb_rpc
231  GROUPS
232    modules
233    pw_rpc.pwpb
234)
235
236pw_add_test(pw_rpc.pwpb.method_test
237  SOURCES
238    method_test.cc
239  PRIVATE_DEPS
240    pw_containers
241    pw_rpc.pwpb.internal_test_utils
242    pw_rpc.pwpb.server_api
243    pw_rpc.test_protos.pwpb
244    pw_rpc.test_utils
245  GROUPS
246    modules
247    pw_rpc.pwpb
248)
249
250pw_add_test(pw_rpc.pwpb.method_info_test
251  SOURCES
252    method_info_test.cc
253  PRIVATE_DEPS
254    pw_rpc.common
255    pw_rpc.test_protos.pwpb_rpc
256    pw_rpc.test_utils
257  GROUPS
258    modules
259    pw_rpc.pwpb
260)
261
262pw_add_test(pw_rpc.pwpb.method_lookup_test
263  SOURCES
264    method_lookup_test.cc
265  PRIVATE_DEPS
266    pw_rpc.pwpb.server_api
267    pw_rpc.pwpb.test_method_context
268    pw_rpc.raw.test_method_context
269    pw_rpc.test_protos.pwpb_rpc
270    pw_rpc.test_utils
271  GROUPS
272    modules
273    pw_rpc.pwpb
274)
275
276pw_add_test(pw_rpc.pwpb.method_union_test
277  SOURCES
278    method_union_test.cc
279  PRIVATE_DEPS
280    pw_rpc.pwpb.internal_test_utils
281    pw_rpc.pwpb.server_api
282    pw_rpc.test_protos.pwpb
283    pw_rpc.test_utils
284  GROUPS
285    modules
286    pw_rpc.pwpb
287)
288
289pw_add_test(pw_rpc.pwpb.serde_test
290  SOURCES
291    serde_test.cc
292  PRIVATE_DEPS
293    pw_rpc.pwpb.server_api
294    pw_rpc.test_protos.pwpb
295  GROUPS
296    modules
297    pw_rpc.pwpb
298)
299
300pw_add_test(pw_rpc.pwpb.server_callback_test
301  SOURCES
302    server_callback_test.cc
303  PRIVATE_DEPS
304    pw_rpc.pwpb.server_api
305    pw_rpc.pwpb.test_method_context
306    pw_rpc.test_protos.pwpb_rpc
307  GROUPS
308    modules
309    pw_rpc.pwpb
310)
311
312pw_add_test(pw_rpc.pwpb.server_reader_writer_test
313  SOURCES
314    server_reader_writer_test.cc
315  PRIVATE_DEPS
316    pw_rpc.pwpb.server_api
317    pw_rpc.pwpb.test_method_context
318    pw_rpc.test_protos.pwpb_rpc
319  GROUPS
320    modules
321    pw_rpc.pwpb
322)
323
324pw_add_test(pw_rpc.pwpb.stub_generation_test
325  SOURCES
326    stub_generation_test.cc
327  PRIVATE_DEPS
328    pw_rpc.test_protos.pwpb_rpc
329  GROUPS
330    modules
331    pw_rpc.pwpb
332)
333
334# TODO(b/231950909) Test disabled as pw_work_queue lacks CMakeLists.txt
335if((TARGET pw_work_queue.pw_work_queue) AND
336   ("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND
337   (NOT "${pw_sync.timed_thread_notification_BACKEND}" STREQUAL
338   "pw_sync.timed_thread_notification.NO_BACKEND_SET"))
339  pw_add_test(pw_rpc.pwpb.synchronous_call_test
340    SOURCES
341      synchronous_call_test.cc
342    PRIVATE_DEPS
343      pw_rpc.pwpb.test_method_context
344      pw_rpc.synchronous_client_api
345      pw_rpc.test_protos.pwpb_rpc
346      pw_thread.thread
347      pw_work_queue.pw_work_queue
348      pw_work_queue.stl_test_thread
349      pw_work_queue.test_thread
350    GROUPS
351      modules
352      pw_rpc.pwpb
353  )
354endif()
355