xref: /aosp_15_r20/external/bazelbuild-rules_go/proto/BUILD.bazel (revision 9bb1b549b6a84214c53be0924760be030e66b93a)
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