| # 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("@rules_shell//shell:sh_binary.bzl", "sh_binary") | 
 | 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 = "2024", | 
 |     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 = "2024", | 
 |     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"], | 
 | ) |