blob: b2f3f2cac541865c54fb8743092c01a3453b71bf [file] [log] [blame]
Alexei Frolov26e3ae62020-05-04 17:06:17 -07001# 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
15load(
16 "//pw_build:pigweed.bzl",
17 "pw_cc_library",
18 "pw_cc_test",
19)
20
21package(default_visibility = ["//visibility:public"])
22
23licenses(["notice"]) # Apache License 2.0
24
25pw_cc_library(
26 name = "pw_rpc",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070027 srcs = [
Wyatt Heplercb9d9572020-06-01 11:25:58 -070028 "base_server_writer.cc",
29 "public/pw_rpc/internal/base_server_writer.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070030 "public/pw_rpc/internal/service.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070031 "server.cc",
32 "service.cc",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070033 ],
34 hdrs = [
35 "public/pw_rpc/server.h",
36 "public/pw_rpc/server_context.h",
Wyatt Hepler671946e2020-06-09 14:39:33 -070037 "public/pw_rpc/internal/channel.h",
38 "public/pw_rpc/internal/server.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070039 # TODO(hepler): Only building the test version of the server for now.
Wyatt Hepler948f5472020-06-02 16:52:28 -070040 "test_impl/public_overrides/pw_rpc/internal/method.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070041 ],
42 includes = [
43 "public",
Wyatt Hepler948f5472020-06-02 16:52:28 -070044 "test_impl/public_overrides/",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070045 ],
46 deps = [
47 ":common",
48 "//pw_assert",
49 "//pw_log",
50 "//pw_span",
51 "//pw_status",
52 ],
53)
54
55pw_cc_library(
56 name = "common",
57 srcs = [
58 "channel.cc",
59 "packet.cc",
60 ],
Alexei Frolov26e3ae62020-05-04 17:06:17 -070061 hdrs = [
62 "public/pw_rpc/channel.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070063 "public/pw_rpc/internal/base_method.h",
Wyatt Hepler7da973a2020-06-09 10:04:48 -070064 "public/pw_rpc/internal/call.h",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070065 "public/pw_rpc/internal/packet.h",
Alexei Frolov26e3ae62020-05-04 17:06:17 -070066 "public/pw_rpc/server.h",
67 ],
68 includes = ["public"],
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070069 visibility = ["//visibility:private"],
Alexei Frolov26e3ae62020-05-04 17:06:17 -070070 deps = [
71 "//pw_assert",
Alexei Frolov5d6d3922020-05-08 13:57:02 -070072 "//pw_log",
Alexei Frolov26e3ae62020-05-04 17:06:17 -070073 "//pw_span",
Alexei Frolov5d6d3922020-05-08 13:57:02 -070074 "//pw_status",
75 ],
Wyatt Hepler80f26ff2020-06-01 09:30:17 -070076)
77
Wyatt Heplercb9d9572020-06-01 11:25:58 -070078pw_cc_library(
79 name = "test_utils",
80 hdrs = ["pw_rpc_private/test_utils.h"],
81 visibility = ["//visibility:private"],
82 deps = [
83 ":common",
84 "//pw_span",
85 ],
86)
87
Wyatt Hepler948f5472020-06-02 16:52:28 -070088# TODO(hepler): Cannot build nanopb-dependent code in Bazel at the moment. Need
89# to determine how best to support Nanopb builds and protobuf generation.
90filegroup(
91 name = "nanopb",
92 srcs = [
93 "nanopb/method.cc",
94 "nanopb/method_test.cc",
95 "nanopb/public_overrides/pw_rpc/internal/method.h",
96 ],
97)
98
Wyatt Heplercb9d9572020-06-01 11:25:58 -070099pw_cc_test(
100 name = "base_server_writer_test",
101 srcs = [
102 "base_server_writer_test.cc",
103 ],
104 deps = [
105 ":pw_rpc",
106 ":test_utils",
107 ],
108)
109
Wyatt Hepler80f26ff2020-06-01 09:30:17 -0700110pw_cc_test(
Wyatt Hepler671946e2020-06-09 14:39:33 -0700111 name = "channel_test",
112 srcs = ["channel_test.cc"],
113 deps = [
114 ":common",
115 ":test_utils_test_server",
116 ],
117)
118
119pw_cc_test(
Wyatt Hepler80f26ff2020-06-01 09:30:17 -0700120 name = "packet_test",
Alexei Frolov5d6d3922020-05-08 13:57:02 -0700121 srcs = [
Wyatt Hepler80f26ff2020-06-01 09:30:17 -0700122 "packet_test.cc",
123 ],
124 deps = [
125 ":common",
Alexei Frolov26e3ae62020-05-04 17:06:17 -0700126 ],
127)
128
Alexei Frolov6560ec82020-06-03 11:03:05 -0700129proto_library(
130 name = "packet_proto",
131 srcs = [
132 "pw_rpc_protos/packet.proto",
Wyatt Hepler948f5472020-06-02 16:52:28 -0700133 ],
Alexei Frolov6560ec82020-06-03 11:03:05 -0700134)
135
Alexei Frolov26e3ae62020-05-04 17:06:17 -0700136pw_cc_test(
137 name = "server_test",
138 srcs = [
139 "server_test.cc",
140 ],
141 deps = [
142 ":pw_rpc",
Wyatt Heplercb9d9572020-06-01 11:25:58 -0700143 ":test_utils",
Wyatt Hepler80f26ff2020-06-01 09:30:17 -0700144 "//pw_assert",
Alexei Frolov5d6d3922020-05-08 13:57:02 -0700145 ],
146)