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