diff options
Diffstat (limited to 'pw_rpc_transport/BUILD.gn')
-rw-r--r-- | pw_rpc_transport/BUILD.gn | 314 |
1 files changed, 314 insertions, 0 deletions
diff --git a/pw_rpc_transport/BUILD.gn b/pw_rpc_transport/BUILD.gn new file mode 100644 index 000000000..575bc51fe --- /dev/null +++ b/pw_rpc_transport/BUILD.gn @@ -0,0 +1,314 @@ +# Copyright 2023 The Pigweed Authors +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. + +import("//build_overrides/pigweed.gni") + +import("$dir_pw_build/target_types.gni") +import("$dir_pw_chrono/backend.gni") +import("$dir_pw_docgen/docs.gni") +import("$dir_pw_protobuf_compiler/proto.gni") +import("$dir_pw_sync/backend.gni") +import("$dir_pw_thread/backend.gni") +import("$dir_pw_unit_test/test.gni") + +config("public_include_path") { + include_dirs = [ "public" ] + visibility = [ ":*" ] +} + +pw_doc_group("docs") { + sources = [ "docs.rst" ] +} + +pw_test_group("tests") { + tests = [ + ":egress_ingress_test", + ":hdlc_framing_test", + ":local_rpc_egress_test", + ":packet_buffer_queue_test", + ":rpc_integration_test", + ":simple_framing_test", + ":socket_rpc_transport_test", + ":stream_rpc_dispatcher_test", + ] +} + +pw_source_set("rpc_transport") { + public = [ "public/pw_rpc_transport/rpc_transport.h" ] + public_configs = [ ":public_include_path" ] + public_deps = [ + "$dir_pw_bytes", + "$dir_pw_function", + "$dir_pw_status", + ] +} + +pw_source_set("service_registry") { + public = [ "public/pw_rpc_transport/service_registry.h" ] + public_deps = [ + ":rpc_transport", + "$dir_pw_rpc:client_server", + "$dir_pw_span", + "$dir_pw_status", + ] +} + +pw_source_set("test_loopback_service_registry") { + public = [ "public/pw_rpc_transport/test_loopback_service_registry.h" ] + public_deps = [ + ":egress_ingress", + ":service_registry", + "$dir_pw_work_queue:pw_work_queue", + "$dir_pw_work_queue:test_thread", + ] +} + +pw_source_set("packet_buffer_queue") { + public = [ "public/pw_rpc_transport/internal/packet_buffer_queue.h" ] + public_configs = [ ":public_include_path" ] + public_deps = [ + "$dir_pw_bytes", + "$dir_pw_containers", + "$dir_pw_result", + "$dir_pw_status", + "$dir_pw_sync:lock_annotations", + "$dir_pw_sync:mutex", + ] + deps = [ + "$dir_pw_assert:check", + "$dir_pw_log", + ] + visibility = [ ":*" ] +} + +pw_test("packet_buffer_queue_test") { + sources = [ "internal/packet_buffer_queue_test.cc" ] + deps = [ + ":packet_buffer_queue", + "$dir_pw_bytes", + "$dir_pw_containers", + "$dir_pw_result", + "$dir_pw_status", + "$dir_pw_sync:lock_annotations", + "$dir_pw_sync:mutex", + ] +} + +pw_source_set("local_rpc_egress") { + public = [ "public/pw_rpc_transport/local_rpc_egress.h" ] + sources = [ "local_rpc_egress.cc" ] + public_deps = [ + ":packet_buffer_queue", + ":rpc_transport", + "$dir_pw_bytes", + "$dir_pw_result", + "$dir_pw_rpc:client", + "$dir_pw_status", + "$dir_pw_sync:thread_notification", + "$dir_pw_thread:thread_core", + ] + deps = [ "$dir_pw_log" ] +} + +pw_test("local_rpc_egress_test") { + sources = [ "local_rpc_egress_test.cc" ] + enable_if = pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread" + deps = [ + ":local_rpc_egress", + ":rpc_transport", + ":service_registry", + ":test_protos.pwpb_rpc", + "$dir_pw_bytes", + "$dir_pw_chrono:system_clock", + "$dir_pw_rpc:client_server", + "$dir_pw_status", + "$dir_pw_sync:counting_semaphore", + "$dir_pw_sync:thread_notification", + "$dir_pw_thread:sleep", + "$dir_pw_thread:thread", + "$dir_pw_thread_stl:thread", + ] +} + +pw_source_set("hdlc_framing") { + public = [ "public/pw_rpc_transport/hdlc_framing.h" ] + public_configs = [ ":public_include_path" ] + public_deps = [ + ":rpc_transport", + "$dir_pw_bytes", + "$dir_pw_hdlc:decoder", + "$dir_pw_hdlc:encoder", + "$dir_pw_hdlc:pw_rpc", + "$dir_pw_result", + "$dir_pw_status", + "$dir_pw_stream:pw_stream", + ] +} + +pw_test("hdlc_framing_test") { + sources = [ "hdlc_framing_test.cc" ] + deps = [ + ":hdlc_framing", + "$dir_pw_bytes", + "$dir_pw_status", + ] +} + +pw_source_set("simple_framing") { + public = [ "public/pw_rpc_transport/simple_framing.h" ] + public_configs = [ ":public_include_path" ] + sources = [ "simple_framing.cc" ] + public_deps = [ + ":rpc_transport", + "$dir_pw_assert", + "$dir_pw_bytes", + "$dir_pw_status", + ] + deps = [ "$dir_pw_log" ] +} + +pw_test("simple_framing_test") { + sources = [ "simple_framing_test.cc" ] + deps = [ + ":simple_framing", + "$dir_pw_bytes", + "$dir_pw_log", + "$dir_pw_status", + ] +} + +pw_source_set("egress_ingress") { + public = [ "public/pw_rpc_transport/egress_ingress.h" ] + sources = [ "egress_ingress.cc" ] + public_deps = [ + ":hdlc_framing", + ":rpc_transport", + ":simple_framing", + "$dir_pw_bytes", + "$dir_pw_metric", + "$dir_pw_rpc:client", + "$dir_pw_status", + "$dir_pw_sync:mutex", + ] + deps = [ "$dir_pw_log" ] +} + +pw_test("egress_ingress_test") { + sources = [ "egress_ingress_test.cc" ] + enable_if = pw_thread_THREAD_BACKEND != "" + deps = [ + ":egress_ingress", + ":service_registry", + ":test_protos.pwpb_rpc", + "$dir_pw_bytes", + "$dir_pw_metric", + "$dir_pw_status", + "$dir_pw_sync:thread_notification", + ] +} + +pw_source_set("socket_rpc_transport") { + public = [ "public/pw_rpc_transport/socket_rpc_transport.h" ] + sources = [ "socket_rpc_transport.cc" ] + public_deps = [ + ":rpc_transport", + "$dir_pw_assert", + "$dir_pw_chrono:system_clock", + "$dir_pw_status", + "$dir_pw_stream:pw_stream", + "$dir_pw_stream:socket_stream", + "$dir_pw_sync:condition_variable", + "$dir_pw_sync:lock_annotations", + "$dir_pw_sync:mutex", + "$dir_pw_sync:thread_notification", + "$dir_pw_thread:sleep", + "$dir_pw_thread:thread_core", + ] + deps = [ "$dir_pw_log" ] +} + +pw_source_set("stream_rpc_frame_sender") { + public = [ "public/pw_rpc_transport/stream_rpc_frame_sender.h" ] + public_deps = [ + ":rpc_transport", + "$dir_pw_status", + "$dir_pw_stream:pw_stream", + ] +} + +pw_source_set("stream_rpc_dispatcher") { + public = [ "public/pw_rpc_transport/stream_rpc_dispatcher.h" ] + public_deps = [ + ":egress_ingress", + "$dir_pw_status", + "$dir_pw_stream:pw_stream", + ] +} + +pw_test("socket_rpc_transport_test") { + sources = [ "socket_rpc_transport_test.cc" ] + enable_if = pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread" && + host_os != "win" && pw_sync_CONDITION_VARIABLE_BACKEND != "" + deps = [ + ":socket_rpc_transport", + "$dir_pw_bytes", + "$dir_pw_log", + "$dir_pw_status", + "$dir_pw_sync:thread_notification", + "$dir_pw_thread:sleep", + "$dir_pw_thread:thread", + "$dir_pw_thread_stl:thread", + ] +} + +pw_test("stream_rpc_dispatcher_test") { + sources = [ "stream_rpc_dispatcher_test.cc" ] + enable_if = pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread" + deps = [ + ":stream_rpc_dispatcher", + "$dir_pw_bytes", + "$dir_pw_log", + "$dir_pw_status", + "$dir_pw_sync:mutex", + "$dir_pw_sync:thread_notification", + "$dir_pw_thread:thread", + "$dir_pw_thread_stl:thread", + ] +} + +pw_test("rpc_integration_test") { + sources = [ "rpc_integration_test.cc" ] + enable_if = pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread" && + host_os != "win" && pw_sync_CONDITION_VARIABLE_BACKEND != "" + deps = [ + ":egress_ingress", + ":local_rpc_egress", + ":service_registry", + ":socket_rpc_transport", + ":test_protos.pwpb_rpc", + "$dir_pw_chrono:system_clock", + "$dir_pw_log", + "$dir_pw_rpc:client_server", + "$dir_pw_rpc:synchronous_client_api", + "$dir_pw_string", + "$dir_pw_thread:thread", + "$dir_pw_thread_stl:thread", + ] +} + +pw_proto_library("test_protos") { + sources = [ "internal/test.proto" ] + inputs = [ "internal/test.options" ] + prefix = "pw_rpc_transport" +} |