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