• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16include($ENV{PW_ROOT}/pw_protobuf_compiler/proto.cmake)
17
18pw_add_module_config(pw_protobuf_CONFIG)
19
20pw_add_library(pw_protobuf.config INTERFACE
21  HEADERS
22    public/pw_protobuf/config.h
23  PUBLIC_INCLUDES
24    public
25  PUBLIC_DEPS
26    ${pw_protobuf_CONFIG}
27)
28
29pw_add_library(pw_protobuf STATIC
30  HEADERS
31    public/pw_protobuf/decoder.h
32    public/pw_protobuf/encoder.h
33    public/pw_protobuf/find.h
34    public/pw_protobuf/internal/codegen.h
35    public/pw_protobuf/internal/proto_integer_base.h
36    public/pw_protobuf/map_utils.h
37    public/pw_protobuf/message.h
38    public/pw_protobuf/serialized_size.h
39    public/pw_protobuf/stream_decoder.h
40    public/pw_protobuf/wire_format.h
41  PUBLIC_INCLUDES
42    public
43  PUBLIC_DEPS
44    pw_assert
45    pw_bytes
46    pw_bytes.bit
47    pw_containers.vector
48    pw_function
49    pw_preprocessor
50    pw_protobuf.config
51    pw_result
52    pw_span
53    pw_status
54    pw_stream
55    pw_stream.interval_reader
56    pw_string.string
57    pw_varint
58    pw_varint.stream
59  SOURCES
60    decoder.cc
61    encoder.cc
62    find.cc
63    map_utils.cc
64    message.cc
65    stream_decoder.cc
66)
67
68pw_add_library(pw_protobuf.bytes_utils INTERFACE
69  HEADERS
70    public/pw_protobuf/bytes_utils.h
71  PUBLIC_INCLUDES
72    public
73  PUBLIC_DEPS
74    pw_protobuf
75    pw_bytes
76    pw_result
77    pw_status
78)
79
80pw_add_test(pw_protobuf.decoder_test
81  SOURCES
82    decoder_test.cc
83  PRIVATE_DEPS
84    pw_fuzzer.fuzztest
85    pw_fuzzer.libfuzzer
86    pw_protobuf
87  GROUPS
88    modules
89    pw_protobuf
90)
91
92pw_add_test(pw_protobuf.encoder_test
93  SOURCES
94    encoder_test.cc
95  PRIVATE_DEPS
96    pw_protobuf
97  GROUPS
98    modules
99    pw_protobuf
100)
101
102pw_add_test(pw_protobuf.find_test
103  SOURCES
104    find_test.cc
105  PRIVATE_DEPS
106    pw_protobuf
107  GROUPS
108    modules
109    pw_protobuf
110)
111
112pw_add_test(pw_protobuf.codegen_decoder_test
113  SOURCES
114    codegen_decoder_test.cc
115  PRIVATE_DEPS
116    pw_protobuf
117    pw_protobuf.codegen_test_protos.pwpb
118  GROUPS
119    modules
120    pw_protobuf
121)
122
123pw_add_test(pw_protobuf.codegen_encoder_test
124  SOURCES
125    codegen_encoder_test.cc
126  PRIVATE_DEPS
127    pw_bytes
128    pw_protobuf
129    pw_protobuf.codegen_test_protos.pwpb
130  GROUPS
131    modules
132    pw_protobuf
133)
134
135pw_add_test(pw_protobuf.codegen_message_test
136  SOURCES
137    codegen_message_test.cc
138  PRIVATE_DEPS
139    pw_protobuf
140    pw_protobuf.codegen_test_protos.pwpb
141    pw_string
142  GROUPS
143    modules
144    pw_protobuf
145)
146
147pw_add_test(pw_protobuf.serialized_size_test
148  SOURCES
149    serialized_size_test.cc
150  PRIVATE_DEPS
151    pw_protobuf
152  GROUPS
153    modules
154    pw_protobuf
155)
156
157pw_add_test(pw_protobuf.stream_decoder_test
158  SOURCES
159    stream_decoder_test.cc
160  PRIVATE_DEPS
161    pw_protobuf
162  GROUPS
163    modules
164    pw_protobuf
165)
166
167pw_add_test(pw_protobuf.map_utils_test
168  SOURCES
169    map_utils_test.cc
170  PRIVATE_DEPS
171    pw_protobuf
172  GROUPS
173    modules
174    pw_protobuf
175)
176
177pw_add_test(pw_protobuf.message_test
178  SOURCES
179    message_test.cc
180  PRIVATE_DEPS
181    pw_protobuf
182  GROUPS
183    modules
184    pw_protobuf
185)
186
187pw_proto_library(pw_protobuf.common_proto
188  SOURCES
189    pw_protobuf_protos/common.proto
190)
191
192pw_proto_library(pw_protobuf.status_proto
193  SOURCES
194    pw_protobuf_protos/status.proto
195)
196
197pw_proto_library(pw_protobuf.field_options_proto
198  SOURCES
199    pw_protobuf_protos/field_options.proto
200)
201
202pw_proto_library(pw_protobuf.codegen_protos
203  SOURCES
204    pw_protobuf_codegen_protos/codegen_options.proto
205)
206
207pw_proto_library(pw_protobuf.codegen_test_deps_protos
208  SOURCES
209    pw_protobuf_test_deps_protos/imported.proto
210  INPUTS
211    pw_protobuf_test_deps_protos/imported.pwpb_options
212)
213
214pw_proto_library(pw_protobuf.codegen_test_deps_protos_prefix
215  SOURCES
216    pw_protobuf_test_deps_protos/test_prefix_imported.proto
217  INPUTS
218    pw_protobuf_test_deps_protos/test_prefix_imported.pwpb_options
219  STRIP_PREFIX
220    pw_protobuf_test_deps_protos
221  PREFIX
222    test_prefix
223)
224
225pw_proto_library(pw_protobuf.codegen_test_protos
226  SOURCES
227    pw_protobuf_test_protos/full_test.proto
228    pw_protobuf_test_protos/imported.proto
229    pw_protobuf_test_protos/importer.proto
230    pw_protobuf_test_protos/non_pw_package.proto
231    pw_protobuf_test_protos/optional.proto
232    pw_protobuf_test_protos/proto2.proto
233    pw_protobuf_test_protos/repeated.proto
234  INPUTS
235    pw_protobuf_test_protos/full_test.pwpb_options
236    pw_protobuf_test_protos/imported.pwpb_options
237    pw_protobuf_test_protos/optional.pwpb_options
238    pw_protobuf_test_protos/repeated.pwpb_options
239  DEPS
240    pw_protobuf.common_proto
241    pw_protobuf.status_proto
242    pw_protobuf.codegen_test_deps_protos
243    pw_protobuf.codegen_test_deps_protos_prefix
244)
245