1*9bb1b549SSpandan Dasload("@bazel_skylib//:bzl_library.bzl", "bzl_library") 2*9bb1b549SSpandan Dasload( 3*9bb1b549SSpandan Das "//proto:compiler.bzl", 4*9bb1b549SSpandan Das "go_proto_compiler", 5*9bb1b549SSpandan Das) 6*9bb1b549SSpandan Dasload( 7*9bb1b549SSpandan Das "//go/private/rules:transition.bzl", 8*9bb1b549SSpandan Das "non_go_reset_target", 9*9bb1b549SSpandan Das) 10*9bb1b549SSpandan Dasload( 11*9bb1b549SSpandan Das "//proto/wkt:well_known_types.bzl", 12*9bb1b549SSpandan Das "GOGO_WELL_KNOWN_TYPE_REMAPS", 13*9bb1b549SSpandan Das "PROTO_RUNTIME_DEPS", 14*9bb1b549SSpandan Das "WELL_KNOWN_TYPES_APIV2", 15*9bb1b549SSpandan Das "WELL_KNOWN_TYPE_RULES", 16*9bb1b549SSpandan Das) 17*9bb1b549SSpandan Das 18*9bb1b549SSpandan Dasgo_proto_compiler( 19*9bb1b549SSpandan Das name = "go_proto_bootstrap", 20*9bb1b549SSpandan Das visibility = ["//visibility:public"], 21*9bb1b549SSpandan Das deps = PROTO_RUNTIME_DEPS, 22*9bb1b549SSpandan Das) 23*9bb1b549SSpandan Das 24*9bb1b549SSpandan Dasgo_proto_compiler( 25*9bb1b549SSpandan Das name = "go_proto", 26*9bb1b549SSpandan Das visibility = ["//visibility:public"], 27*9bb1b549SSpandan Das deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2, 28*9bb1b549SSpandan Das) 29*9bb1b549SSpandan Das 30*9bb1b549SSpandan Dasgo_proto_compiler( 31*9bb1b549SSpandan Das name = "go_grpc", 32*9bb1b549SSpandan Das options = ["plugins=grpc"], 33*9bb1b549SSpandan Das visibility = ["//visibility:public"], 34*9bb1b549SSpandan Das deps = PROTO_RUNTIME_DEPS + WELL_KNOWN_TYPES_APIV2 + [ 35*9bb1b549SSpandan Das "@org_golang_google_grpc//:go_default_library", 36*9bb1b549SSpandan Das "@org_golang_google_grpc//codes:go_default_library", 37*9bb1b549SSpandan Das "@org_golang_google_grpc//status:go_default_library", 38*9bb1b549SSpandan Das "@org_golang_x_net//context:go_default_library", 39*9bb1b549SSpandan Das ], 40*9bb1b549SSpandan Das) 41*9bb1b549SSpandan Das 42*9bb1b549SSpandan Dasgo_proto_compiler( 43*9bb1b549SSpandan Das name = "go_proto_validate", 44*9bb1b549SSpandan Das plugin = "@com_github_mwitkow_go_proto_validators//protoc-gen-govalidators", 45*9bb1b549SSpandan Das suffix = ".validator.pb.go", 46*9bb1b549SSpandan Das valid_archive = False, 47*9bb1b549SSpandan Das visibility = ["//visibility:public"], 48*9bb1b549SSpandan Das deps = [ 49*9bb1b549SSpandan Das "@com_github_golang_protobuf//proto:go_default_library", 50*9bb1b549SSpandan Das "@com_github_mwitkow_go_proto_validators//:validators_golang", 51*9bb1b549SSpandan Das ], 52*9bb1b549SSpandan Das) 53*9bb1b549SSpandan Das 54*9bb1b549SSpandan DasGOGO_VARIANTS = [ 55*9bb1b549SSpandan Das "combo", 56*9bb1b549SSpandan Das "gogo", 57*9bb1b549SSpandan Das "gogofast", 58*9bb1b549SSpandan Das "gogofaster", 59*9bb1b549SSpandan Das "gogoslick", 60*9bb1b549SSpandan Das "gogotypes", 61*9bb1b549SSpandan Das "gostring", 62*9bb1b549SSpandan Das] 63*9bb1b549SSpandan Das 64*9bb1b549SSpandan Das[go_proto_compiler( 65*9bb1b549SSpandan Das name = variant + "_proto", 66*9bb1b549SSpandan Das options = GOGO_WELL_KNOWN_TYPE_REMAPS, 67*9bb1b549SSpandan Das plugin = "@com_github_gogo_protobuf//protoc-gen-" + variant, 68*9bb1b549SSpandan Das visibility = ["//visibility:public"], 69*9bb1b549SSpandan Das deps = [ 70*9bb1b549SSpandan Das "@com_github_gogo_protobuf//gogoproto:go_default_library", 71*9bb1b549SSpandan Das "@com_github_gogo_protobuf//proto:go_default_library", 72*9bb1b549SSpandan Das "@com_github_gogo_protobuf//protoc-gen-gogo/descriptor:go_default_library", 73*9bb1b549SSpandan Das "@com_github_gogo_protobuf//sortkeys:go_default_library", 74*9bb1b549SSpandan Das "@com_github_gogo_protobuf//types:go_default_library", 75*9bb1b549SSpandan Das ] + WELL_KNOWN_TYPE_RULES.values(), 76*9bb1b549SSpandan Das) for variant in GOGO_VARIANTS] 77*9bb1b549SSpandan Das 78*9bb1b549SSpandan Dasgo_proto_compiler( 79*9bb1b549SSpandan Das name = "gofast_proto", 80*9bb1b549SSpandan Das plugin = "@com_github_gogo_protobuf//protoc-gen-gofast", 81*9bb1b549SSpandan Das visibility = ["//visibility:public"], 82*9bb1b549SSpandan Das deps = [ 83*9bb1b549SSpandan Das "@com_github_golang_protobuf//proto:go_default_library", 84*9bb1b549SSpandan Das ] + WELL_KNOWN_TYPE_RULES.values(), 85*9bb1b549SSpandan Das) 86*9bb1b549SSpandan Das 87*9bb1b549SSpandan Das[go_proto_compiler( 88*9bb1b549SSpandan Das name = variant + "_grpc", 89*9bb1b549SSpandan Das options = ["plugins=grpc"] + GOGO_WELL_KNOWN_TYPE_REMAPS, 90*9bb1b549SSpandan Das plugin = "@com_github_gogo_protobuf//protoc-gen-" + variant, 91*9bb1b549SSpandan Das visibility = ["//visibility:public"], 92*9bb1b549SSpandan Das deps = [ 93*9bb1b549SSpandan Das "@com_github_gogo_protobuf//gogoproto:go_default_library", 94*9bb1b549SSpandan Das "@com_github_gogo_protobuf//proto:go_default_library", 95*9bb1b549SSpandan Das "@com_github_gogo_protobuf//protoc-gen-gogo/descriptor:go_default_library", 96*9bb1b549SSpandan Das "@com_github_gogo_protobuf//sortkeys:go_default_library", 97*9bb1b549SSpandan Das "@com_github_gogo_protobuf//types:go_default_library", 98*9bb1b549SSpandan Das "@org_golang_google_grpc//:go_default_library", 99*9bb1b549SSpandan Das "@org_golang_google_grpc//codes:go_default_library", 100*9bb1b549SSpandan Das "@org_golang_google_grpc//status:go_default_library", 101*9bb1b549SSpandan Das "@org_golang_x_net//context:go_default_library", 102*9bb1b549SSpandan Das ] + WELL_KNOWN_TYPE_RULES.values(), 103*9bb1b549SSpandan Das) for variant in GOGO_VARIANTS] 104*9bb1b549SSpandan Das 105*9bb1b549SSpandan Dasgo_proto_compiler( 106*9bb1b549SSpandan Das name = "gofast_grpc", 107*9bb1b549SSpandan Das options = ["plugins=grpc"], 108*9bb1b549SSpandan Das plugin = "@com_github_gogo_protobuf//protoc-gen-gofast", 109*9bb1b549SSpandan Das visibility = ["//visibility:public"], 110*9bb1b549SSpandan Das deps = [ 111*9bb1b549SSpandan Das "@com_github_golang_protobuf//proto:go_default_library", 112*9bb1b549SSpandan Das "@org_golang_google_grpc//:go_default_library", 113*9bb1b549SSpandan Das "@org_golang_google_grpc//codes:go_default_library", 114*9bb1b549SSpandan Das "@org_golang_google_grpc//status:go_default_library", 115*9bb1b549SSpandan Das "@org_golang_x_net//context:go_default_library", 116*9bb1b549SSpandan Das ] + WELL_KNOWN_TYPE_RULES.values(), 117*9bb1b549SSpandan Das) 118*9bb1b549SSpandan Das 119*9bb1b549SSpandan Dasnon_go_reset_target( 120*9bb1b549SSpandan Das name = "protoc", 121*9bb1b549SSpandan Das dep = "@com_google_protobuf//:protoc", 122*9bb1b549SSpandan Das visibility = ["//visibility:public"], 123*9bb1b549SSpandan Das) 124*9bb1b549SSpandan Das 125*9bb1b549SSpandan Dasfilegroup( 126*9bb1b549SSpandan Das name = "all_rules", 127*9bb1b549SSpandan Das testonly = True, 128*9bb1b549SSpandan Das srcs = glob(["*.bzl"]) + ["//proto/wkt:all_rules"], 129*9bb1b549SSpandan Das visibility = ["//:__subpackages__"], 130*9bb1b549SSpandan Das) 131*9bb1b549SSpandan Das 132*9bb1b549SSpandan Dasfilegroup( 133*9bb1b549SSpandan Das name = "all_files", 134*9bb1b549SSpandan Das testonly = True, 135*9bb1b549SSpandan Das srcs = glob(["**"]) + ["//proto/wkt:all_files"], 136*9bb1b549SSpandan Das visibility = ["//:__subpackages__"], 137*9bb1b549SSpandan Das) 138*9bb1b549SSpandan Das 139*9bb1b549SSpandan Dasbzl_library( 140*9bb1b549SSpandan Das name = "compiler", 141*9bb1b549SSpandan Das srcs = ["compiler.bzl"], 142*9bb1b549SSpandan Das visibility = ["//visibility:public"], 143*9bb1b549SSpandan Das deps = [ 144*9bb1b549SSpandan Das "//go:def", 145*9bb1b549SSpandan Das "//go/private/rules:transition", 146*9bb1b549SSpandan Das "@bazel_skylib//lib:paths", 147*9bb1b549SSpandan Das ], 148*9bb1b549SSpandan Das) 149*9bb1b549SSpandan Das 150*9bb1b549SSpandan Dasbzl_library( 151*9bb1b549SSpandan Das name = "def", 152*9bb1b549SSpandan Das srcs = ["def.bzl"], 153*9bb1b549SSpandan Das visibility = ["//visibility:public"], 154*9bb1b549SSpandan Das # Don't list dependency on @rules_proto//proto:defs 155*9bb1b549SSpandan Das deps = [ 156*9bb1b549SSpandan Das "//go:def", 157*9bb1b549SSpandan Das "//go/private:providers", 158*9bb1b549SSpandan Das "//proto:compiler", 159*9bb1b549SSpandan Das ], # keep 160*9bb1b549SSpandan Das) 161*9bb1b549SSpandan Das 162*9bb1b549SSpandan Dasbzl_library( 163*9bb1b549SSpandan Das name = "gogo", 164*9bb1b549SSpandan Das srcs = ["gogo.bzl"], 165*9bb1b549SSpandan Das visibility = ["//visibility:public"], 166*9bb1b549SSpandan Das) 167