1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
|
Import('env')
Import('debugBuild')
protobuf_env = env.Clone(NINJA_GENSOURCE_INDEPENDENT=True)
protobuf_env.InjectThirdParty(libraries=['abseil-cpp', 'zlib'])
protobuf_env.Append(CPPDEFINES=[
'HAVE_CONFIG_H',
('HAVE_ZLIB', '1'),
('PIC', '1'),
], )
if protobuf_env.ToolchainIs('gcc', 'clang'):
protobuf_env.Append(
CPPDEFINES=[
('HAVE_PTHREAD', '1'),
],
CCFLAGS=[
'-Wno-sign-compare',
'-Wno-overloaded-virtual',
],
)
if debugBuild:
protobuf_env.Append(CCFLAGS=['-Wno-error'])
if protobuf_env.ToolchainIs('gcc'):
protobuf_env.Append(
CPPDEFINES=[],
CCFLAGS=[
'-Wno-stringop-overflow',
'-Wno-error=deprecated',
'-Wno-error=attributes',
],
)
if protobuf_env.ToolchainIs('msvc'):
protobuf_env.Append(
CCFLAGS=[
'/wd4018', # signed/unsigned mismatch
'/wd4065', # switch statement contains 'default' but no 'case' labels
'/wd4146', # unary minus operator applied to unsigned type, result still unsigned
],
CPPDEFINES=[
'_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING',
],
)
protobuf_root = protobuf_env.Dir(".").srcnode()
protobuf_platform = protobuf_root.Dir("platform/${TARGET_OS}_${TARGET_ARCH}")
protobuf_env.Append(CPPPATH=[
protobuf_root.Dir("dist"),
protobuf_root.Dir("dist/src"),
], )
# Passing this up to the main env
env['PROTOC_DESCRIPTOR_PROTO'] = protobuf_env.File(
"dist/src/google/protobuf/descriptor.proto").abspath
utf8_validity_env = protobuf_env.Clone()
utf8_validity_env.Append(CPPPATH=[
protobuf_root.Dir('dist/third_party/utf8_range'),
], )
utf8_validity_env.Library(
target='utf8_validity',
source=[
"dist/third_party/utf8_range/utf8_validity.cc",
],
)
protobuf_env.Append(CPPPATH=[
protobuf_root.Dir('dist/third_party/utf8_range'),
])
protobuf_env.Library(
target='protobuf',
source=[
"dist/src/google/protobuf/any.cc",
"dist/src/google/protobuf/any.pb.cc",
"dist/src/google/protobuf/any_lite.cc",
"dist/src/google/protobuf/api.pb.cc",
"dist/src/google/protobuf/arena.cc",
"dist/src/google/protobuf/arena_align.cc",
"dist/src/google/protobuf/arenastring.cc",
"dist/src/google/protobuf/arenaz_sampler.cc",
"dist/src/google/protobuf/compiler/importer.cc",
"dist/src/google/protobuf/compiler/parser.cc",
"dist/src/google/protobuf/cpp_features.pb.cc",
"dist/src/google/protobuf/descriptor.cc",
"dist/src/google/protobuf/descriptor.pb.cc",
"dist/src/google/protobuf/descriptor_database.cc",
"dist/src/google/protobuf/duration.pb.cc",
"dist/src/google/protobuf/dynamic_message.cc",
"dist/src/google/protobuf/empty.pb.cc",
"dist/src/google/protobuf/extension_set.cc",
"dist/src/google/protobuf/extension_set_heavy.cc",
"dist/src/google/protobuf/feature_resolver.cc",
"dist/src/google/protobuf/field_mask.pb.cc",
"dist/src/google/protobuf/generated_enum_util.cc",
"dist/src/google/protobuf/generated_message_bases.cc",
"dist/src/google/protobuf/generated_message_reflection.cc",
"dist/src/google/protobuf/generated_message_tctable_full.cc",
"dist/src/google/protobuf/generated_message_tctable_gen.cc",
"dist/src/google/protobuf/generated_message_tctable_lite.cc",
"dist/src/google/protobuf/generated_message_util.cc",
"dist/src/google/protobuf/implicit_weak_message.cc",
"dist/src/google/protobuf/inlined_string_field.cc",
"dist/src/google/protobuf/internal_message_util.cc",
"dist/src/google/protobuf/io/coded_stream.cc",
"dist/src/google/protobuf/io/gzip_stream.cc",
"dist/src/google/protobuf/io/io_win32.cc",
"dist/src/google/protobuf/io/printer.cc",
"dist/src/google/protobuf/io/strtod.cc",
"dist/src/google/protobuf/io/tokenizer.cc",
"dist/src/google/protobuf/io/zero_copy_sink.cc",
"dist/src/google/protobuf/io/zero_copy_stream.cc",
"dist/src/google/protobuf/io/zero_copy_stream_impl.cc",
"dist/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
"dist/src/google/protobuf/json/internal/lexer.cc",
"dist/src/google/protobuf/json/internal/message_path.cc",
"dist/src/google/protobuf/json/internal/parser.cc",
"dist/src/google/protobuf/json/internal/unparser.cc",
"dist/src/google/protobuf/json/internal/untyped_message.cc",
"dist/src/google/protobuf/json/internal/writer.cc",
"dist/src/google/protobuf/json/internal/zero_copy_buffered_stream.cc",
"dist/src/google/protobuf/json/json.cc",
"dist/src/google/protobuf/map.cc",
"dist/src/google/protobuf/map_field.cc",
"dist/src/google/protobuf/message.cc",
"dist/src/google/protobuf/message_lite.cc",
"dist/src/google/protobuf/parse_context.cc",
"dist/src/google/protobuf/port.cc",
"dist/src/google/protobuf/raw_ptr.cc",
"dist/src/google/protobuf/reflection_mode.cc",
"dist/src/google/protobuf/reflection_ops.cc",
"dist/src/google/protobuf/repeated_field.cc",
"dist/src/google/protobuf/repeated_ptr_field.cc",
"dist/src/google/protobuf/service.cc",
"dist/src/google/protobuf/source_context.pb.cc",
"dist/src/google/protobuf/struct.pb.cc",
"dist/src/google/protobuf/stubs/common.cc",
"dist/src/google/protobuf/text_format.cc",
"dist/src/google/protobuf/timestamp.pb.cc",
"dist/src/google/protobuf/type.pb.cc",
"dist/src/google/protobuf/unknown_field_set.cc",
"dist/src/google/protobuf/util/delimited_message_util.cc",
"dist/src/google/protobuf/util/field_comparator.cc",
"dist/src/google/protobuf/util/field_mask_util.cc",
"dist/src/google/protobuf/util/message_differencer.cc",
"dist/src/google/protobuf/util/time_util.cc",
"dist/src/google/protobuf/util/type_resolver_util.cc",
"dist/src/google/protobuf/wire_format.cc",
"dist/src/google/protobuf/wire_format_lite.cc",
"dist/src/google/protobuf/wrappers.pb.cc",
],
LIBDEPS=[
'$BUILD_DIR/third_party/abseil-cpp/absl_base',
'$BUILD_DIR/third_party/abseil-cpp/absl_debugging_internal',
'$BUILD_DIR/third_party/abseil-cpp/absl_die_if_null',
'$BUILD_DIR/third_party/abseil-cpp/absl_flags',
'$BUILD_DIR/third_party/abseil-cpp/absl_hash',
'$BUILD_DIR/third_party/abseil-cpp/absl_log_initialize',
'$BUILD_DIR/third_party/abseil-cpp/absl_log_internal_check_op',
'$BUILD_DIR/third_party/abseil-cpp/absl_log_internal_message',
'$BUILD_DIR/third_party/abseil-cpp/absl_log_severity',
'$BUILD_DIR/third_party/abseil-cpp/absl_status',
'$BUILD_DIR/third_party/abseil-cpp/absl_statusor',
'$BUILD_DIR/third_party/abseil-cpp/absl_str_format_internal',
'$BUILD_DIR/third_party/abseil-cpp/absl_strings',
'$BUILD_DIR/third_party/abseil-cpp/absl_synchronization',
'$BUILD_DIR/third_party/abseil-cpp/absl_time',
'$BUILD_DIR/third_party/zlib/zlib',
'utf8_validity',
],
)
protobuf_env.Library(
target='protoc',
source=[
"dist/src/google/protobuf/compiler/allowlists/editions.cc",
"dist/src/google/protobuf/compiler/allowlists/empty_package.cc",
"dist/src/google/protobuf/compiler/allowlists/open_enum.cc",
"dist/src/google/protobuf/compiler/allowlists/unused_imports.cc",
"dist/src/google/protobuf/compiler/allowlists/weak_imports.cc",
"dist/src/google/protobuf/compiler/code_generator.cc",
"dist/src/google/protobuf/compiler/command_line_interface.cc",
"dist/src/google/protobuf/compiler/cpp/enum.cc",
"dist/src/google/protobuf/compiler/cpp/extension.cc",
"dist/src/google/protobuf/compiler/cpp/field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/cord_field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/enum_field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/map_field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/message_field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/primitive_field.cc",
"dist/src/google/protobuf/compiler/cpp/field_generators/string_field.cc",
"dist/src/google/protobuf/compiler/cpp/file.cc",
"dist/src/google/protobuf/compiler/cpp/generator.cc",
"dist/src/google/protobuf/compiler/cpp/helpers.cc",
"dist/src/google/protobuf/compiler/cpp/message.cc",
"dist/src/google/protobuf/compiler/cpp/padding_optimizer.cc",
"dist/src/google/protobuf/compiler/cpp/parse_function_generator.cc",
"dist/src/google/protobuf/compiler/cpp/service.cc",
"dist/src/google/protobuf/compiler/cpp/tracker.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_enum.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_field_base.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_generator.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_helpers.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_map_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_message.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_message_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
"dist/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
"dist/src/google/protobuf/compiler/csharp/names.cc",
"dist/src/google/protobuf/compiler/java/context.cc",
"dist/src/google/protobuf/compiler/java/doc_comment.cc",
"dist/src/google/protobuf/compiler/java/enum.cc",
"dist/src/google/protobuf/compiler/java/enum_field.cc",
"dist/src/google/protobuf/compiler/java/enum_field_lite.cc",
"dist/src/google/protobuf/compiler/java/enum_lite.cc",
"dist/src/google/protobuf/compiler/java/extension.cc",
"dist/src/google/protobuf/compiler/java/extension_lite.cc",
"dist/src/google/protobuf/compiler/java/field.cc",
"dist/src/google/protobuf/compiler/java/file.cc",
"dist/src/google/protobuf/compiler/java/generator.cc",
"dist/src/google/protobuf/compiler/java/generator_factory.cc",
"dist/src/google/protobuf/compiler/java/helpers.cc",
"dist/src/google/protobuf/compiler/java/java_features.pb.cc",
"dist/src/google/protobuf/compiler/java/kotlin_generator.cc",
"dist/src/google/protobuf/compiler/java/map_field.cc",
"dist/src/google/protobuf/compiler/java/map_field_lite.cc",
"dist/src/google/protobuf/compiler/java/message.cc",
"dist/src/google/protobuf/compiler/java/message_builder.cc",
"dist/src/google/protobuf/compiler/java/message_builder_lite.cc",
"dist/src/google/protobuf/compiler/java/message_field.cc",
"dist/src/google/protobuf/compiler/java/message_field_lite.cc",
"dist/src/google/protobuf/compiler/java/message_lite.cc",
"dist/src/google/protobuf/compiler/java/message_serialization.cc",
"dist/src/google/protobuf/compiler/java/name_resolver.cc",
"dist/src/google/protobuf/compiler/java/names.cc",
"dist/src/google/protobuf/compiler/java/primitive_field.cc",
"dist/src/google/protobuf/compiler/java/primitive_field_lite.cc",
"dist/src/google/protobuf/compiler/java/service.cc",
"dist/src/google/protobuf/compiler/java/shared_code_generator.cc",
"dist/src/google/protobuf/compiler/java/string_field.cc",
"dist/src/google/protobuf/compiler/java/string_field_lite.cc",
"dist/src/google/protobuf/compiler/objectivec/enum.cc",
"dist/src/google/protobuf/compiler/objectivec/enum_field.cc",
"dist/src/google/protobuf/compiler/objectivec/extension.cc",
"dist/src/google/protobuf/compiler/objectivec/field.cc",
"dist/src/google/protobuf/compiler/objectivec/file.cc",
"dist/src/google/protobuf/compiler/objectivec/generator.cc",
"dist/src/google/protobuf/compiler/objectivec/helpers.cc",
"dist/src/google/protobuf/compiler/objectivec/import_writer.cc",
"dist/src/google/protobuf/compiler/objectivec/line_consumer.cc",
"dist/src/google/protobuf/compiler/objectivec/map_field.cc",
"dist/src/google/protobuf/compiler/objectivec/message.cc",
"dist/src/google/protobuf/compiler/objectivec/message_field.cc",
"dist/src/google/protobuf/compiler/objectivec/names.cc",
"dist/src/google/protobuf/compiler/objectivec/oneof.cc",
"dist/src/google/protobuf/compiler/objectivec/primitive_field.cc",
"dist/src/google/protobuf/compiler/objectivec/text_format_decode_data.cc",
"dist/src/google/protobuf/compiler/php/names.cc",
"dist/src/google/protobuf/compiler/php/php_generator.cc",
"dist/src/google/protobuf/compiler/plugin.cc",
"dist/src/google/protobuf/compiler/plugin.pb.cc",
"dist/src/google/protobuf/compiler/python/generator.cc",
"dist/src/google/protobuf/compiler/python/helpers.cc",
"dist/src/google/protobuf/compiler/python/pyi_generator.cc",
"dist/src/google/protobuf/compiler/retention.cc",
"dist/src/google/protobuf/compiler/ruby/ruby_generator.cc",
"dist/src/google/protobuf/compiler/rust/accessors/accessors.cc",
"dist/src/google/protobuf/compiler/rust/accessors/singular_message.cc",
"dist/src/google/protobuf/compiler/rust/accessors/singular_scalar.cc",
"dist/src/google/protobuf/compiler/rust/accessors/singular_string.cc",
"dist/src/google/protobuf/compiler/rust/accessors/unsupported_field.cc",
"dist/src/google/protobuf/compiler/rust/context.cc",
"dist/src/google/protobuf/compiler/rust/generator.cc",
"dist/src/google/protobuf/compiler/rust/message.cc",
"dist/src/google/protobuf/compiler/rust/naming.cc",
"dist/src/google/protobuf/compiler/rust/oneof.cc",
"dist/src/google/protobuf/compiler/rust/relative_path.cc",
"dist/src/google/protobuf/compiler/subprocess.cc",
"dist/src/google/protobuf/compiler/zip_writer.cc",
],
LIBDEPS=[
'$BUILD_DIR/third_party/abseil-cpp/absl_base',
'$BUILD_DIR/third_party/abseil-cpp/absl_strings',
'protobuf',
],
)
protobuf_compiler = protobuf_env.Program(
target='protobuf_compiler',
source=['dist/src/google/protobuf/compiler/main.cc'],
LIBDEPS=[
'protobuf',
'protoc',
],
AIB_COMPONENT='protobuf',
)
installed = env.GetAutoInstalledFiles(protobuf_compiler[0])
if installed:
setattr(installed[0].attributes, 'AIB_NO_ARCHIVE', True)
|