xref: /aosp_15_r20/external/pigweed/pw_protobuf/CMakeLists.txt (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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_protobuf
85  GROUPS
86    modules
87    pw_protobuf
88)
89
90pw_add_test(pw_protobuf.encoder_test
91  SOURCES
92    encoder_test.cc
93  PRIVATE_DEPS
94    pw_protobuf
95  GROUPS
96    modules
97    pw_protobuf
98)
99
100pw_add_test(pw_protobuf.find_test
101  SOURCES
102    find_test.cc
103  PRIVATE_DEPS
104    pw_protobuf
105  GROUPS
106    modules
107    pw_protobuf
108)
109
110pw_add_test(pw_protobuf.codegen_decoder_test
111  SOURCES
112    codegen_decoder_test.cc
113  PRIVATE_DEPS
114    pw_protobuf
115    pw_protobuf.codegen_test_protos.pwpb
116  GROUPS
117    modules
118    pw_protobuf
119)
120
121pw_add_test(pw_protobuf.codegen_encoder_test
122  SOURCES
123    codegen_encoder_test.cc
124  PRIVATE_DEPS
125    pw_bytes
126    pw_protobuf
127    pw_protobuf.codegen_test_protos.pwpb
128  GROUPS
129    modules
130    pw_protobuf
131)
132
133pw_add_test(pw_protobuf.codegen_message_test
134  SOURCES
135    codegen_message_test.cc
136  PRIVATE_DEPS
137    pw_protobuf
138    pw_protobuf.codegen_test_protos.pwpb
139    pw_string
140  GROUPS
141    modules
142    pw_protobuf
143)
144
145pw_add_test(pw_protobuf.serialized_size_test
146  SOURCES
147    serialized_size_test.cc
148  PRIVATE_DEPS
149    pw_protobuf
150  GROUPS
151    modules
152    pw_protobuf
153)
154
155pw_add_test(pw_protobuf.stream_decoder_test
156  SOURCES
157    stream_decoder_test.cc
158  PRIVATE_DEPS
159    pw_protobuf
160  GROUPS
161    modules
162    pw_protobuf
163)
164
165pw_add_test(pw_protobuf.map_utils_test
166  SOURCES
167    map_utils_test.cc
168  PRIVATE_DEPS
169    pw_protobuf
170  GROUPS
171    modules
172    pw_protobuf
173)
174
175pw_add_test(pw_protobuf.message_test
176  SOURCES
177    message_test.cc
178  PRIVATE_DEPS
179    pw_protobuf
180  GROUPS
181    modules
182    pw_protobuf
183)
184
185pw_proto_library(pw_protobuf.common_proto
186  SOURCES
187    pw_protobuf_protos/common.proto
188)
189
190pw_proto_library(pw_protobuf.status_proto
191  SOURCES
192    pw_protobuf_protos/status.proto
193)
194
195pw_proto_library(pw_protobuf.field_options_proto
196  SOURCES
197    pw_protobuf_protos/field_options.proto
198)
199
200pw_proto_library(pw_protobuf.codegen_protos
201  SOURCES
202    pw_protobuf_codegen_protos/codegen_options.proto
203)
204
205pw_proto_library(pw_protobuf.codegen_test_deps_protos
206  SOURCES
207    pw_protobuf_test_deps_protos/imported.proto
208  INPUTS
209    pw_protobuf_test_deps_protos/imported.pwpb_options
210)
211
212pw_proto_library(pw_protobuf.codegen_test_deps_protos_prefix
213  SOURCES
214    pw_protobuf_test_deps_protos/test_prefix_imported.proto
215  INPUTS
216    pw_protobuf_test_deps_protos/test_prefix_imported.pwpb_options
217  STRIP_PREFIX
218    pw_protobuf_test_deps_protos
219  PREFIX
220    test_prefix
221)
222
223pw_proto_library(pw_protobuf.codegen_test_protos
224  SOURCES
225    pw_protobuf_test_protos/full_test.proto
226    pw_protobuf_test_protos/imported.proto
227    pw_protobuf_test_protos/importer.proto
228    pw_protobuf_test_protos/non_pw_package.proto
229    pw_protobuf_test_protos/optional.proto
230    pw_protobuf_test_protos/proto2.proto
231    pw_protobuf_test_protos/repeated.proto
232  INPUTS
233    pw_protobuf_test_protos/full_test.pwpb_options
234    pw_protobuf_test_protos/imported.pwpb_options
235    pw_protobuf_test_protos/optional.pwpb_options
236    pw_protobuf_test_protos/repeated.pwpb_options
237  DEPS
238    pw_protobuf.common_proto
239    pw_protobuf.status_proto
240    pw_protobuf.codegen_test_deps_protos
241    pw_protobuf.codegen_test_deps_protos_prefix
242)
243