blob: 2125a938a09779e21221e61896fffbb7fb7de776 [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load(
"//proto:compiler.bzl",
"go_proto_compiler",
)
load(
"//go/private/rules:transition.bzl",
"non_go_reset_target",
)
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",
visibility = ["//visibility:public"],
deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2,
)
go_proto_compiler(
name = "go_grpc",
options = ["plugins=grpc"],
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_proto_validate",
plugin = "@com_github_mwitkow_go_proto_validators//protoc-gen-govalidators",
suffix = ".validator.pb.go",
valid_archive = False,
visibility = ["//visibility:public"],
deps = [
"@com_github_golang_protobuf//proto:go_default_library",
"@com_github_mwitkow_go_proto_validators//:validators_golang",
],
)
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",
visibility = ["//visibility:public"],
)
filegroup(
name = "all_rules",
testonly = True,
srcs = glob(["*.bzl"]) + ["//proto/wkt:all_rules"],
visibility = ["//:__subpackages__"],
)
filegroup(
name = "all_files",
testonly = True,
srcs = glob(["**"]) + ["//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"],
)