# 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") ################################################################################ # 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)"], )