mirror of
https://github.com/protocolbuffers/protobuf
synced 2026-08-26 02:23:14 -04:00
This change updates the target frameworks for various C# projects within Protobuf to .NET 8.0, while also maintaining netstandard2.0 for the core library. Support for older frameworks like net45, net50, and netstandard1.1 has been removed. This updates our project to match our support policy in https://github.com/google/oss-policies-info/blob/main/foundational-dotnet-support-matrix.md which actually dropped support for net45, net50, etc long ago. PiperOrigin-RevId: 919111969
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 = ["//:__subpackages__"],
|
|
)
|
|
|
|
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 = "2024",
|
|
testee = "//conformance:conformance_csharp",
|
|
)
|
|
|
|
conformance_test(
|
|
name = "conformance_performance_test",
|
|
failure_list = "//conformance:failure_list_csharp_performance.txt",
|
|
maximum_edition = "2024",
|
|
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 = "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"],
|
|
)
|