xref: /aosp_15_r20/external/pigweed/pw_rpc/pwpb/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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
165if(NOT "${pw_sync.mutex_BACKEND}" STREQUAL "")
166  pw_add_test(pw_rpc.pwpb.client_server_context_test
167    SOURCES
168      client_server_context_test.cc
169    PRIVATE_DEPS
170      pw_rpc.pwpb.client_api
171      pw_rpc.pwpb.client_server_testing
172      pw_rpc.test_protos.pwpb_rpc
173      pw_sync.mutex
174    GROUPS
175      modules
176      pw_rpc.pwpb
177  )
178endif()
179
180if(("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND
181   (NOT "${pw_sync.binary_semaphore_BACKEND}" STREQUAL "") AND
182   (NOT "${pw_sync.mutex_BACKEND}" STREQUAL ""))
183  pw_add_test(pw_rpc.pwpb.client_server_context_threaded_test
184    SOURCES
185      client_server_context_threaded_test.cc
186    PRIVATE_DEPS
187      pw_rpc.pwpb.client_api
188      pw_rpc.pwpb.client_server_testing_threaded
189      pw_rpc.test_protos.pwpb_rpc
190      pw_sync.binary_semaphore
191      pw_sync.mutex
192      pw_thread.non_portable_test_thread_options
193      pw_thread.thread
194      pw_thread_stl.test_threads
195    GROUPS
196      modules
197      pw_rpc.pwpb
198  )
199endif()
200
201pw_add_test(pw_rpc.pwpb.codegen_test
202  SOURCES
203    codegen_test.cc
204  PRIVATE_DEPS
205    pw_rpc.pwpb.client_api
206    pw_rpc.pwpb.internal_test_utils
207    pw_rpc.pwpb.server_api
208    pw_rpc.pwpb.test_method_context
209    pw_rpc.test_protos.pwpb_rpc
210    pw_rpc.test_utils
211  GROUPS
212    modules
213    pw_rpc.pwpb
214)
215
216pw_add_test(pw_rpc.pwpb.echo_service_test
217  SOURCES
218    echo_service_test.cc
219  PRIVATE_DEPS
220    pw_rpc.pwpb.echo_service
221    pw_rpc.pwpb.server_api
222    pw_rpc.pwpb.test_method_context
223  GROUPS
224    modules
225    pw_rpc.pwpb
226)
227
228pw_add_test(pw_rpc.pwpb.fake_channel_output_test
229  SOURCES
230    fake_channel_output_test.cc
231  PRIVATE_DEPS
232    pw_rpc.pwpb.server_api
233    pw_rpc.pwpb.test_method_context
234    pw_rpc.test_protos.pwpb_rpc
235  GROUPS
236    modules
237    pw_rpc.pwpb
238)
239
240pw_add_test(pw_rpc.pwpb.method_test
241  SOURCES
242    method_test.cc
243  PRIVATE_DEPS
244    pw_containers
245    pw_rpc.pwpb.internal_test_utils
246    pw_rpc.pwpb.server_api
247    pw_rpc.test_protos.pwpb
248    pw_rpc.test_utils
249  GROUPS
250    modules
251    pw_rpc.pwpb
252)
253
254pw_add_test(pw_rpc.pwpb.method_info_test
255  SOURCES
256    method_info_test.cc
257  PRIVATE_DEPS
258    pw_rpc.common
259    pw_rpc.test_protos.pwpb_rpc
260    pw_rpc.test_utils
261  GROUPS
262    modules
263    pw_rpc.pwpb
264)
265
266pw_add_test(pw_rpc.pwpb.method_lookup_test
267  SOURCES
268    method_lookup_test.cc
269  PRIVATE_DEPS
270    pw_rpc.pwpb.server_api
271    pw_rpc.pwpb.test_method_context
272    pw_rpc.raw.test_method_context
273    pw_rpc.test_protos.pwpb_rpc
274    pw_rpc.test_utils
275  GROUPS
276    modules
277    pw_rpc.pwpb
278)
279
280pw_add_test(pw_rpc.pwpb.method_union_test
281  SOURCES
282    method_union_test.cc
283  PRIVATE_DEPS
284    pw_rpc.pwpb.internal_test_utils
285    pw_rpc.pwpb.server_api
286    pw_rpc.test_protos.pwpb
287    pw_rpc.test_utils
288  GROUPS
289    modules
290    pw_rpc.pwpb
291)
292
293pw_add_test(pw_rpc.pwpb.serde_test
294  SOURCES
295    serde_test.cc
296  PRIVATE_DEPS
297    pw_rpc.pwpb.server_api
298    pw_rpc.test_protos.pwpb
299  GROUPS
300    modules
301    pw_rpc.pwpb
302)
303
304pw_add_test(pw_rpc.pwpb.server_callback_test
305  SOURCES
306    server_callback_test.cc
307  PRIVATE_DEPS
308    pw_rpc.pwpb.server_api
309    pw_rpc.pwpb.test_method_context
310    pw_rpc.test_protos.pwpb_rpc
311  GROUPS
312    modules
313    pw_rpc.pwpb
314)
315
316pw_add_test(pw_rpc.pwpb.server_reader_writer_test
317  SOURCES
318    server_reader_writer_test.cc
319  PRIVATE_DEPS
320    pw_rpc.pwpb.server_api
321    pw_rpc.pwpb.test_method_context
322    pw_rpc.test_protos.pwpb_rpc
323  GROUPS
324    modules
325    pw_rpc.pwpb
326)
327
328pw_add_test(pw_rpc.pwpb.stub_generation_test
329  SOURCES
330    stub_generation_test.cc
331  PRIVATE_DEPS
332    pw_rpc.test_protos.pwpb_rpc
333  GROUPS
334    modules
335    pw_rpc.pwpb
336)
337
338# TODO: b/231950909 - Test disabled as pw_work_queue lacks CMakeLists.txt
339if((TARGET pw_work_queue.pw_work_queue) AND
340   ("${pw_thread.thread_BACKEND}" STREQUAL "pw_thread_stl.thread") AND
341   (NOT "${pw_sync.timed_thread_notification_BACKEND}" STREQUAL
342   "pw_sync.timed_thread_notification.NO_BACKEND_SET"))
343  pw_add_test(pw_rpc.pwpb.synchronous_call_test
344    SOURCES
345      synchronous_call_test.cc
346    PRIVATE_DEPS
347      pw_rpc.pwpb.test_method_context
348      pw_rpc.synchronous_client_api
349      pw_rpc.test_protos.pwpb_rpc
350      pw_rpc_transport.test_loopback_service_registry
351      pw_thread.thread
352      pw_work_queue.pw_work_queue
353      pw_work_queue.stl_test_thread
354      pw_work_queue.test_thread
355    GROUPS
356      modules
357      pw_rpc.pwpb
358  )
359endif()
360