| # Protobuf C# runtime |
| # |
| # See also code generation logic under /src/google/protobuf/compiler/csharp. |
| |
| load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix") |
| 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") |
| |
| ################################################################################ |
| # Tests |
| ################################################################################ |
| |
| conformance_test( |
| name = "conformance_test", |
| failure_list = "//conformance:failure_list_csharp.txt", |
| maximum_edition = "2023", |
| testee = "//conformance:conformance_csharp", |
| ) |
| |
| ################################################################################ |
| # CSharp Runtime |
| ################################################################################ |
| |
| filegroup( |
| name = "srcs", |
| srcs = glob( |
| [ |
| "keys/*", |
| "protos/*", |
| "src/**/*.cs*", # .cs and .csproj |
| ], |
| exclude = [ |
| # Exclude generated files. |
| "src/*/obj/**/*", |
| ], |
| ) + [ |
| "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 net6.0 src/Google.Protobuf.Test/Google.Protobuf.Test.csproj |
| popd |
| """, |
| ) |
| |
| ################################################################################ |
| # Distribution files |
| ################################################################################ |
| |
| pkg_files( |
| name = "dist_files", |
| srcs = [ |
| ".editorconfig", |
| ".gitignore", |
| "BUILD.bazel", |
| "CHANGES.txt", |
| "Google.Protobuf.Tools.nuspec", |
| "Google.Protobuf.Tools.targets", |
| "NuGet.Config", |
| "README.md", |
| "build_packages.bat", |
| "build_release.sh", |
| "build_tools.sh", |
| "buildall.bat", |
| "buildall.sh", |
| "generate_protos.sh", |
| "install_dotnet_sdk.ps1", |
| ":srcs", |
| "//csharp/src/Google.Protobuf.Conformance:dist_files", |
| ], |
| strip_prefix = strip_prefix.from_root(""), |
| visibility = ["//pkg:__pkg__"], |
| ) |
| |
| 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 = "2023", |
| 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"], |
| ) |