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