mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
* `protoc`: Included in zips alongside binary * Java: Generated classes have been added to the Maven `util` artifact * Ruby: Generated classes have been added to gems * CMake: `.proto` files are included in installation PiperOrigin-RevId: 957382561
150 lines
5 KiB
Text
150 lines
5 KiB
Text
# Protobuf C# runtime
|
|
#
|
|
# See also code generation logic under /src/google/protobuf/compiler/csharp.
|
|
|
|
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
|
|
load("//bazel:proto_library.bzl", "proto_library")
|
|
load("//build_defs:internal_shell.bzl", "inline_sh_test")
|
|
load("//conformance:defs.bzl", "conformance_test")
|
|
load("//editions:defaults.bzl", "compile_edition_defaults", "embed_edition_defaults")
|
|
load("//upb/cmake:build_defs.bzl", "staleness_test")
|
|
|
|
################################################################################
|
|
# C# features
|
|
################################################################################
|
|
filegroup(
|
|
name = "c_sharp_features_proto_srcs",
|
|
srcs = ["google/protobuf/c_sharp_features.proto"],
|
|
visibility = ["//src/google/protobuf:__pkg__"],
|
|
)
|
|
|
|
proto_library(
|
|
name = "c_sharp_features_proto",
|
|
srcs = ["google/protobuf/c_sharp_features.proto"],
|
|
visibility = ["//:__subpackages__"],
|
|
deps = ["//:descriptor_proto"],
|
|
)
|
|
|
|
################################################################################
|
|
# Tests
|
|
################################################################################
|
|
|
|
conformance_test(
|
|
name = "conformance_test",
|
|
failure_list = "//conformance:failure_list_csharp.txt",
|
|
maximum_edition = "2026",
|
|
testee = "//conformance:conformance_csharp",
|
|
)
|
|
|
|
conformance_test(
|
|
name = "conformance_performance_test",
|
|
failure_list = "//conformance:failure_list_csharp_performance.txt",
|
|
maximum_edition = "2026",
|
|
performance = True,
|
|
testee = "//conformance:conformance_csharp",
|
|
)
|
|
|
|
################################################################################
|
|
# CSharp Runtime
|
|
################################################################################
|
|
|
|
filegroup(
|
|
name = "srcs",
|
|
srcs = glob(
|
|
[
|
|
"keys/*",
|
|
"protos/*",
|
|
"src/**/*.cs*", # .cs and .csproj
|
|
],
|
|
exclude = [
|
|
# Exclude generated files.
|
|
"src/*/obj/**/*",
|
|
],
|
|
) + [
|
|
"google/protobuf/c_sharp_features.proto",
|
|
"src/Directory.Build.props",
|
|
"src/Google.Protobuf.Test/testprotos.pb",
|
|
"src/Google.Protobuf.sln",
|
|
],
|
|
visibility = [
|
|
"//conformance:__subpackages__",
|
|
"//csharp:__subpackages__",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "wkt_cs_srcs",
|
|
srcs = [
|
|
"src/Google.Protobuf/Reflection/Descriptor.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Any.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Api.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Duration.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Empty.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/FieldMask.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/SourceContext.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Struct.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Timestamp.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Type.pb.cs",
|
|
"src/Google.Protobuf/WellKnownTypes/Wrappers.pb.cs",
|
|
],
|
|
visibility = ["//src/google/protobuf/compiler/csharp:__pkg__"],
|
|
)
|
|
|
|
inline_sh_test(
|
|
name = "tests",
|
|
srcs = [
|
|
"src/Google.Protobuf.sln",
|
|
":srcs",
|
|
"//conformance:conformance_csharp_proto",
|
|
"//csharp/src/Google.Protobuf.Conformance:srcs",
|
|
],
|
|
cmd = """
|
|
cp $(rootpath //conformance:conformance_csharp_proto) `dirname $(location src/Google.Protobuf.sln)`/Google.Protobuf.Conformance/
|
|
pushd `dirname $(location src/Google.Protobuf.sln)`/..
|
|
dotnet restore src/Google.Protobuf.sln
|
|
dotnet build -c Release src/Google.Protobuf.sln
|
|
dotnet test -c Release -f net8.0 src/Google.Protobuf.Test/Google.Protobuf.Test.csproj
|
|
popd
|
|
""",
|
|
)
|
|
|
|
################################################################################
|
|
# Distribution files
|
|
################################################################################
|
|
|
|
sh_binary(
|
|
name = "release",
|
|
srcs = ["build_release.sh"],
|
|
args = ["$(location build_release.sh)"],
|
|
)
|
|
|
|
################################################################################
|
|
# Generated edition defaults (and staleness test)
|
|
################################################################################
|
|
|
|
compile_edition_defaults(
|
|
name = "csharp_edition_defaults",
|
|
srcs = [
|
|
"//:descriptor_proto",
|
|
],
|
|
maximum_edition = "2026",
|
|
minimum_edition = "PROTO2",
|
|
)
|
|
|
|
# TODO Make bazel tests use this output instead of the checked-in one
|
|
embed_edition_defaults(
|
|
name = "embedded_csharp_edition_defaults_generate",
|
|
defaults = "csharp_edition_defaults",
|
|
encoding = "base64",
|
|
output = "generated/src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs",
|
|
placeholder = "DEFAULTS_VALUE",
|
|
template = "src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs.template",
|
|
)
|
|
|
|
staleness_test(
|
|
name = "generated_csharp_defaults_staleness_test",
|
|
outs = ["src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs"],
|
|
generated_pattern = "generated/%s",
|
|
tags = ["manual"],
|
|
target_files = ["src/Google.Protobuf/Reflection/FeatureSetDescriptor.g.cs"],
|
|
)
|