1# Copyright 2023 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) 16include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake) 17 18pw_add_library(pw_rpc_transport.rpc_transport INTERFACE 19 HEADERS 20 public/pw_rpc_transport/rpc_transport.h 21 PUBLIC_INCLUDES 22 public 23 PUBLIC_DEPS 24 pw_bytes 25 pw_function 26 pw_status 27) 28 29pw_add_library(pw_rpc_transport.service_registry INTERFACE 30 HEADERS 31 public/pw_rpc_transport/service_registry.h 32 PUBLIC_INCLUDES 33 public 34 PUBLIC_DEPS 35 pw_rpc_transport.rpc_transport 36 pw_rpc.client_server 37 pw_span 38 pw_status 39) 40 41pw_add_library(pw_rpc_transport.test_loopback_service_registry INTERFACE 42 HEADERS 43 public/pw_rpc_transport/test_loopback_service_registry.h 44 PUBLIC_INCLUDES 45 public 46 PUBLIC_DEPS 47 pw_rpc_transport.egress_ingress 48 pw_rpc_transport.service_registry 49 pw_work_queue 50 pw_work_queue.test_thread 51) 52 53pw_add_library(pw_rpc_transport.packet_buffer_queue INTERFACE 54 HEADERS 55 public/pw_rpc_transport/internal/packet_buffer_queue.h 56 PUBLIC_INCLUDES 57 public 58 PUBLIC_DEPS 59 pw_bytes 60 pw_containers 61 pw_result 62 pw_status 63 pw_sync.lock_annotations 64 pw_sync.mutex 65) 66 67pw_add_test(pw_rpc_transport.packet_buffer_queue_test 68 SOURCES 69 internal/packet_buffer_queue_test.cc 70 PRIVATE_DEPS 71 pw_rpc_transport.packet_buffer_queue 72 pw_bytes 73 pw_containers 74 pw_result 75 pw_status 76 pw_sync.lock_annotations 77 pw_sync.mutex 78 GROUPS 79 modules 80 pw_rpc_transport 81) 82 83pw_add_library(pw_rpc_transport.local_rpc_egress STATIC 84 HEADERS 85 public/pw_rpc_transport/local_rpc_egress.h 86 SOURCES 87 local_rpc_egress.cc 88 PUBLIC_INCLUDES 89 public 90 PUBLIC_DEPS 91 pw_rpc_transport.packet_buffer_queue 92 pw_rpc_transport.rpc_transport 93 pw_bytes 94 pw_result 95 pw_rpc.client 96 pw_status 97 pw_sync.thread_notification 98 pw_thread.thread_core 99 PRIVATE_DEPS 100 pw_log 101) 102 103pw_add_test(pw_rpc_transport.local_rpc_egress_test 104 SOURCES 105 local_rpc_egress_test.cc 106 PRIVATE_DEPS 107 pw_rpc_transport.local_rpc_egress 108 pw_rpc_transport.rpc_transport 109 pw_rpc_transport.service_registry 110 pw_rpc_transport.test_protos.pwpb_rpc 111 pw_bytes 112 pw_chrono.system_clock 113 pw_rpc.client_server 114 pw_status 115 pw_sync.counting_semaphore 116 pw_sync.thread_notification 117 pw_thread.sleep 118 pw_thread.thread 119 GROUPS 120 modules 121 pw_rpc_transport 122) 123 124pw_add_library(pw_rpc_transport.hdlc_framing INTERFACE 125 HEADERS 126 public/pw_rpc_transport/hdlc_framing.h 127 PUBLIC_INCLUDES 128 public 129 PUBLIC_DEPS 130 pw_rpc_transport.rpc_transport 131 pw_bytes 132 pw_hdlc.decoder 133 pw_hdlc.encoder 134 pw_hdlc.default_addresses 135 pw_result 136 pw_status 137 pw_stream 138) 139 140pw_add_test(pw_rpc_transport.hdlc_framing_test 141 SOURCES 142 hdlc_framing_test.cc 143 PRIVATE_DEPS 144 pw_rpc_transport.hdlc_framing 145 pw_bytes 146 pw_status 147 GROUPS 148 modules 149 pw_rpc_transport 150) 151 152pw_add_library(pw_rpc_transport.simple_framing STATIC 153 HEADERS 154 public/pw_rpc_transport/simple_framing.h 155 SOURCES 156 simple_framing.cc 157 PUBLIC_INCLUDES 158 public 159 PUBLIC_DEPS 160 pw_rpc_transport.rpc_transport 161 pw_assert 162 pw_bytes 163 pw_status 164 PRIVATE_DEPS 165 pw_log 166) 167 168pw_add_test(pw_rpc_transport.simple_framing_test 169 SOURCES 170 simple_framing_test.cc 171 PRIVATE_DEPS 172 pw_rpc_transport.simple_framing 173 pw_bytes 174 pw_log 175 pw_status 176 GROUPS 177 modules 178 pw_rpc_transport 179) 180 181pw_add_library(pw_rpc_transport.egress_ingress STATIC 182 HEADERS 183 public/pw_rpc_transport/egress_ingress.h 184 SOURCES 185 egress_ingress.cc 186 PUBLIC_DEPS 187 pw_rpc_transport.hdlc_framing 188 pw_rpc_transport.simple_framing 189 pw_bytes 190 pw_metric 191 pw_rpc.client 192 pw_status 193 pw_sync.mutex 194 PRIVATE_DEPS 195 pw_log 196) 197 198pw_add_test(pw_rpc_transport.egress_ingress_test 199 SOURCES 200 egress_ingress_test.cc 201 PRIVATE_DEPS 202 pw_rpc_transport.egress_ingress 203 pw_rpc_transport.service_registry 204 pw_rpc_transport.test_protos.pwpb_rpc 205 pw_bytes 206 pw_metric 207 pw_status 208 pw_sync.thread_notification 209 GROUPS 210 modules 211 pw_rpc_transport 212) 213 214pw_proto_library(pw_rpc_transport.test_protos 215 SOURCES 216 internal/test.proto 217 INPUTS 218 internal/test.pwpb_options 219 PREFIX 220 pw_rpc_transport 221) 222