blob: 0492731bfcad4007b963a821eb4a775c6cf665bb [file] [log] [blame]
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +08001# Copyright 2021 The Pigweed Authors
Alexei Frolovbbf164c2019-12-16 12:51:59 -08002#
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
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +080015load("@rules_proto//proto:defs.bzl", "proto_library")
Alexei Frolovbbf164c2019-12-16 12:51:59 -080016load(
17 "//pw_build:pigweed.bzl",
18 "pw_cc_library",
19 "pw_cc_test",
20)
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +080021load("@rules_proto_grpc//:plugin.bzl", "proto_plugin")
22load("//pw_protobuf_compiler:proto.bzl", "pw_proto_library")
Alexei Frolovbbf164c2019-12-16 12:51:59 -080023
24package(default_visibility = ["//visibility:public"])
25
26licenses(["notice"]) # Apache License 2.0
27
28pw_cc_library(
Alexei Frolovf9ae1892021-04-01 18:24:27 -070029 name = "config",
30 hdrs = ["public/pw_protobuf/config.h"],
31 includes = ["public"],
32)
33
34pw_cc_library(
Alexei Frolovbbf164c2019-12-16 12:51:59 -080035 name = "pw_protobuf",
36 srcs = [
Alexei Frolovdea46f72020-01-07 13:28:24 -080037 "decoder.cc",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080038 "encoder.cc",
Alexei Frolovbbbedff2020-03-11 14:21:38 -070039 "find.cc",
Armando Montanez0ed221c2021-04-02 18:33:01 -070040 "streaming_encoder.cc",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080041 ],
42 hdrs = [
43 "public/pw_protobuf/codegen.h",
Alexei Frolovdea46f72020-01-07 13:28:24 -080044 "public/pw_protobuf/decoder.h",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080045 "public/pw_protobuf/encoder.h",
Alexei Frolovbbbedff2020-03-11 14:21:38 -070046 "public/pw_protobuf/find.h",
Ewout van Bekkumc76aa402020-09-23 10:58:27 -070047 "public/pw_protobuf/serialized_size.h",
Armando Montanez0ed221c2021-04-02 18:33:01 -070048 "public/pw_protobuf/streaming_encoder.h",
Alexei Frolovdea46f72020-01-07 13:28:24 -080049 "public/pw_protobuf/wire_format.h",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080050 ],
Wyatt Hepler61def0a2020-01-06 10:30:14 -080051 includes = ["public"],
Alexei Frolovbbf164c2019-12-16 12:51:59 -080052 deps = [
Alexei Frolovf9ae1892021-04-01 18:24:27 -070053 ":config",
Armando Montanez0ed221c2021-04-02 18:33:01 -070054 "//pw_assert",
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +080055 "//pw_bytes",
56 "//pw_result",
Rob Mohree8ce082019-12-20 10:32:16 -080057 "//pw_span",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080058 "//pw_status",
Armando Montanez0ed221c2021-04-02 18:33:01 -070059 "//pw_stream",
Alexei Frolovbbf164c2019-12-16 12:51:59 -080060 "//pw_varint",
61 ],
62)
63
64pw_cc_test(
Alexei Frolovdea46f72020-01-07 13:28:24 -080065 name = "decoder_test",
66 srcs = ["decoder_test.cc"],
Rob Mohr06819482020-04-06 13:25:43 -070067 deps = [
68 ":pw_protobuf",
69 "//pw_preprocessor",
70 "//pw_unit_test",
71 ],
Alexei Frolovdea46f72020-01-07 13:28:24 -080072)
73
74pw_cc_test(
Alexei Frolovbbf164c2019-12-16 12:51:59 -080075 name = "encoder_test",
76 srcs = ["encoder_test.cc"],
Rob Mohr06819482020-04-06 13:25:43 -070077 deps = [
78 ":pw_protobuf",
79 "//pw_unit_test",
80 ],
Alexei Frolovbbf164c2019-12-16 12:51:59 -080081)
82
Alexei Frolovbbbedff2020-03-11 14:21:38 -070083pw_cc_test(
Armando Montanez0ed221c2021-04-02 18:33:01 -070084 name = "streaming_encoder_test",
85 srcs = ["streaming_encoder_test.cc"],
86 deps = [
87 ":pw_protobuf",
88 "//pw_unit_test",
89 ],
90)
91
92pw_cc_test(
Alexei Frolovbbbedff2020-03-11 14:21:38 -070093 name = "find_test",
94 srcs = ["find_test.cc"],
Rob Mohr06819482020-04-06 13:25:43 -070095 deps = [
96 ":pw_protobuf",
97 "//pw_unit_test",
98 ],
Alexei Frolovbbbedff2020-03-11 14:21:38 -070099)
100
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +0800101proto_library(
102 name = "codegen_test_proto",
103 srcs = [
104 "pw_protobuf_protos/common.proto",
105 "pw_protobuf_test_protos/full_test.proto",
106 "pw_protobuf_test_protos/imported.proto",
107 "pw_protobuf_test_protos/importer.proto",
108 "pw_protobuf_test_protos/non_pw_package.proto",
109 "pw_protobuf_test_protos/proto2.proto",
110 "pw_protobuf_test_protos/repeated.proto",
111 ],
112 strip_import_prefix = "//pw_protobuf",
113)
114
115pw_proto_library(
116 name = "codegen_test_protos_pwpb",
117 deps = [":codegen_test_proto"],
118)
119
120pw_cc_test(
Alexei Frolovbbf164c2019-12-16 12:51:59 -0800121 name = "codegen_test",
122 srcs = [
123 "codegen_test.cc",
124 ],
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +0800125 deps = [
126 ":codegen_test_protos_pwpb",
127 ":pw_protobuf",
128 "//pw_span",
129 "//pw_unit_test",
130 ],
Alexei Frolovbbf164c2019-12-16 12:51:59 -0800131)
Alexei Frolov9c2ed462020-01-13 15:35:42 -0800132
Alexei Frolovf9ae1892021-04-01 18:24:27 -0700133# TODO(frolv): Figure out how to add facade tests to Bazel.
134filegroup(
135 name = "varint_size_test",
136 srcs = [
137 "varint_size_test.cc",
138 ],
139)
140
Alexei Frolov9c2ed462020-01-13 15:35:42 -0800141# TODO(frolv): Figure out what to do about size reports in Bazel.
142filegroup(
143 name = "size_reports",
144 srcs = glob([
145 "size_report/*.cc",
146 ]),
147)
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +0800148
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +0800149proto_plugin(
150 name = "pw_cc_plugin",
151 outputs = [
152 "{protopath}.pwpb.h",
153 ],
154 protoc_plugin_name = "pwpb",
Nathaniel Broughb4f4e7a2021-05-06 14:49:55 +0800155 tool = "@pigweed//pw_protobuf/py:plugin",
Nathaniel Brough9d9a20d2020-08-04 16:46:56 +0800156 visibility = ["//visibility:public"],
157)