blob: 1d6b3dd054a4c6ae79ddd30238b70b156ee5bc66 [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load(
"//go/private/rules:transition.bzl",
"non_go_reset_target",
)
load(
"//proto:compiler.bzl",
"go_proto_compiler",
)
load(
"//proto/wkt:well_known_types.bzl",
"GOGO_WELL_KNOWN_TYPE_REMAPS",
"PROTO_RUNTIME_DEPS",
"WELL_KNOWN_TYPES_APIV2",
"WELL_KNOWN_TYPE_RULES",
)
go_proto_compiler(
name = "go_proto_bootstrap",
visibility = ["//visibility:public"],
deps = PROTO_RUNTIME_DEPS,
)
go_proto_compiler(
name = "go_proto",
plugin = "@org_golang_google_protobuf//cmd/protoc-gen-go",
visibility = ["//visibility:public"],
deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2,
)
go_proto_compiler(
name = "go_grpc",
# TODO: Bring back the deprecation once Gazelle emits go_grpc_library.
# deprecation = "Migrate to //proto:go_grpc_v2 compiler (which you'll get automatically if you use the go_grpc_library() rule).",
options = ["plugins=grpc"],
plugin = "@com_github_golang_protobuf//protoc-gen-go",
visibility = ["//visibility:public"],
deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2 + [
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//codes:go_default_library",
"@org_golang_google_grpc//status:go_default_library",
"@org_golang_x_net//context:go_default_library",
],
)
go_proto_compiler(
name = "go_grpc_v2",
# Do not break existing code with this upgrade
# See https://github.com/grpc/grpc-go/blob/master/cmd/protoc-gen-go-grpc/README.md#future-proofing-services
options = ["require_unimplemented_servers=false"],
plugin = "@org_golang_google_grpc_cmd_protoc_gen_go_grpc//:protoc-gen-go-grpc",
suffix = "_grpc.pb.go",
visibility = ["//visibility:public"],
deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2 + [
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//codes:go_default_library",
"@org_golang_google_grpc//status:go_default_library",
"@org_golang_x_net//context:go_default_library",
],
)
GOGO_VARIANTS = [
"combo",
"gogo",
"gogofast",
"gogofaster",
"gogoslick",
"gogotypes",
"gostring",
]
[go_proto_compiler(
name = variant + "_proto",
options = GOGO_WELL_KNOWN_TYPE_REMAPS,
plugin = "@com_github_gogo_protobuf//protoc-gen-" + variant,
visibility = ["//visibility:public"],
deps = [
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@com_github_gogo_protobuf//protoc-gen-gogo/descriptor:go_default_library",
"@com_github_gogo_protobuf//sortkeys:go_default_library",
"@com_github_gogo_protobuf//types:go_default_library",
] + WELL_KNOWN_TYPE_RULES.values(),
) for variant in GOGO_VARIANTS]
go_proto_compiler(
name = "gofast_proto",
plugin = "@com_github_gogo_protobuf//protoc-gen-gofast",
visibility = ["//visibility:public"],
deps = [
"@com_github_golang_protobuf//proto:go_default_library",
] + WELL_KNOWN_TYPE_RULES.values(),
)
[go_proto_compiler(
name = variant + "_grpc",
options = ["plugins=grpc"] + GOGO_WELL_KNOWN_TYPE_REMAPS,
plugin = "@com_github_gogo_protobuf//protoc-gen-" + variant,
visibility = ["//visibility:public"],
deps = [
"@com_github_gogo_protobuf//gogoproto:go_default_library",
"@com_github_gogo_protobuf//proto:go_default_library",
"@com_github_gogo_protobuf//protoc-gen-gogo/descriptor:go_default_library",
"@com_github_gogo_protobuf//sortkeys:go_default_library",
"@com_github_gogo_protobuf//types:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//codes:go_default_library",
"@org_golang_google_grpc//status:go_default_library",
"@org_golang_x_net//context:go_default_library",
] + WELL_KNOWN_TYPE_RULES.values(),
) for variant in GOGO_VARIANTS]
go_proto_compiler(
name = "gofast_grpc",
options = ["plugins=grpc"],
plugin = "@com_github_gogo_protobuf//protoc-gen-gofast",
visibility = ["//visibility:public"],
deps = [
"@com_github_golang_protobuf//proto:go_default_library",
"@org_golang_google_grpc//:go_default_library",
"@org_golang_google_grpc//codes:go_default_library",
"@org_golang_google_grpc//status:go_default_library",
"@org_golang_x_net//context:go_default_library",
] + WELL_KNOWN_TYPE_RULES.values(),
)
non_go_reset_target(
name = "protoc",
dep = "@com_google_protobuf//:protoc",
deprecation = "No longer used by rules_go, will be removed in a future release.",
visibility = ["//visibility:public"],
)
filegroup(
name = "all_rules",
testonly = True,
srcs = glob(["*.bzl"]) + [
"//proto/private:all_files",
"//proto/wkt:all_rules",
],
visibility = ["//:__subpackages__"],
)
filegroup(
name = "all_files",
testonly = True,
srcs = glob(["**"]) + [
"//proto/private:all_files",
"//proto/wkt:all_files",
],
visibility = ["//:__subpackages__"],
)
bzl_library(
name = "compiler",
srcs = ["compiler.bzl"],
visibility = ["//visibility:public"],
deps = [
"//go:def",
"//go/private/rules:transition",
"@bazel_skylib//lib:paths",
],
)
bzl_library(
name = "def",
srcs = ["def.bzl"],
visibility = ["//visibility:public"],
# Don't list dependency on @rules_proto//proto:defs
deps = [
"//go:def",
"//go/private:providers",
"//proto:compiler",
], # keep
)
bzl_library(
name = "gogo",
srcs = ["gogo.bzl"],
visibility = ["//visibility:public"],
)