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)