xref: /aosp_15_r20/external/pigweed/pw_rpc_transport/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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