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