xref: /aosp_15_r20/external/tensorflow/third_party/systemlibs/protobuf.BUILD (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1*b6fb3261SAndroid Build Coastguard Workerload("@rules_proto//proto:defs.bzl", "proto_library")
2*b6fb3261SAndroid Build Coastguard Workerload(
3*b6fb3261SAndroid Build Coastguard Worker    "@com_google_protobuf//:protobuf.bzl",
4*b6fb3261SAndroid Build Coastguard Worker    "cc_proto_library",
5*b6fb3261SAndroid Build Coastguard Worker    "proto_gen",
6*b6fb3261SAndroid Build Coastguard Worker    "py_proto_library",
7*b6fb3261SAndroid Build Coastguard Worker)
8*b6fb3261SAndroid Build Coastguard Worker
9*b6fb3261SAndroid Build Coastguard Workerlicenses(["notice"])
10*b6fb3261SAndroid Build Coastguard Worker
11*b6fb3261SAndroid Build Coastguard Workerfilegroup(
12*b6fb3261SAndroid Build Coastguard Worker    name = "LICENSE",
13*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
14*b6fb3261SAndroid Build Coastguard Worker)
15*b6fb3261SAndroid Build Coastguard Worker
16*b6fb3261SAndroid Build Coastguard Worker# Map of all well known protos.
17*b6fb3261SAndroid Build Coastguard Worker# name => (include path, imports)
18*b6fb3261SAndroid Build Coastguard WorkerWELL_KNOWN_PROTO_MAP = {
19*b6fb3261SAndroid Build Coastguard Worker    "any": ("google/protobuf/any.proto", []),
20*b6fb3261SAndroid Build Coastguard Worker    "api": (
21*b6fb3261SAndroid Build Coastguard Worker        "google/protobuf/api.proto",
22*b6fb3261SAndroid Build Coastguard Worker        [
23*b6fb3261SAndroid Build Coastguard Worker            "source_context",
24*b6fb3261SAndroid Build Coastguard Worker            "type",
25*b6fb3261SAndroid Build Coastguard Worker        ],
26*b6fb3261SAndroid Build Coastguard Worker    ),
27*b6fb3261SAndroid Build Coastguard Worker    "compiler_plugin": (
28*b6fb3261SAndroid Build Coastguard Worker        "google/protobuf/compiler/plugin.proto",
29*b6fb3261SAndroid Build Coastguard Worker        ["descriptor"],
30*b6fb3261SAndroid Build Coastguard Worker    ),
31*b6fb3261SAndroid Build Coastguard Worker    "descriptor": ("google/protobuf/descriptor.proto", []),
32*b6fb3261SAndroid Build Coastguard Worker    "duration": ("google/protobuf/duration.proto", []),
33*b6fb3261SAndroid Build Coastguard Worker    "empty": ("google/protobuf/empty.proto", []),
34*b6fb3261SAndroid Build Coastguard Worker    "field_mask": ("google/protobuf/field_mask.proto", []),
35*b6fb3261SAndroid Build Coastguard Worker    "source_context": ("google/protobuf/source_context.proto", []),
36*b6fb3261SAndroid Build Coastguard Worker    "struct": ("google/protobuf/struct.proto", []),
37*b6fb3261SAndroid Build Coastguard Worker    "timestamp": ("google/protobuf/timestamp.proto", []),
38*b6fb3261SAndroid Build Coastguard Worker    "type": (
39*b6fb3261SAndroid Build Coastguard Worker        "google/protobuf/type.proto",
40*b6fb3261SAndroid Build Coastguard Worker        [
41*b6fb3261SAndroid Build Coastguard Worker            "any",
42*b6fb3261SAndroid Build Coastguard Worker            "source_context",
43*b6fb3261SAndroid Build Coastguard Worker        ],
44*b6fb3261SAndroid Build Coastguard Worker    ),
45*b6fb3261SAndroid Build Coastguard Worker    "wrappers": ("google/protobuf/wrappers.proto", []),
46*b6fb3261SAndroid Build Coastguard Worker}
47*b6fb3261SAndroid Build Coastguard Worker
48*b6fb3261SAndroid Build Coastguard WorkerRELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()]
49*b6fb3261SAndroid Build Coastguard Worker
50*b6fb3261SAndroid Build Coastguard Workergenrule(
51*b6fb3261SAndroid Build Coastguard Worker    name = "link_proto_files",
52*b6fb3261SAndroid Build Coastguard Worker    outs = RELATIVE_WELL_KNOWN_PROTOS,
53*b6fb3261SAndroid Build Coastguard Worker    cmd = """
54*b6fb3261SAndroid Build Coastguard Worker      for i in $(OUTS); do
55*b6fb3261SAndroid Build Coastguard Worker        f=$${i#$(@D)/}
56*b6fb3261SAndroid Build Coastguard Worker        mkdir -p $(@D)/$${f%/*}
57*b6fb3261SAndroid Build Coastguard Worker        ln -sf $(PROTOBUF_INCLUDE_PATH)/$$f $(@D)/$$f
58*b6fb3261SAndroid Build Coastguard Worker      done
59*b6fb3261SAndroid Build Coastguard Worker    """,
60*b6fb3261SAndroid Build Coastguard Worker)
61*b6fb3261SAndroid Build Coastguard Worker
62*b6fb3261SAndroid Build Coastguard Workercc_library(
63*b6fb3261SAndroid Build Coastguard Worker    name = "protobuf",
64*b6fb3261SAndroid Build Coastguard Worker    linkopts = ["-lprotobuf"],
65*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
66*b6fb3261SAndroid Build Coastguard Worker)
67*b6fb3261SAndroid Build Coastguard Worker
68*b6fb3261SAndroid Build Coastguard Workercc_library(
69*b6fb3261SAndroid Build Coastguard Worker    name = "protobuf_headers",
70*b6fb3261SAndroid Build Coastguard Worker    linkopts = ["-lprotobuf"],
71*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
72*b6fb3261SAndroid Build Coastguard Worker)
73*b6fb3261SAndroid Build Coastguard Worker
74*b6fb3261SAndroid Build Coastguard Workercc_library(
75*b6fb3261SAndroid Build Coastguard Worker    name = "protoc_lib",
76*b6fb3261SAndroid Build Coastguard Worker    linkopts = ["-lprotoc"],
77*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
78*b6fb3261SAndroid Build Coastguard Worker)
79*b6fb3261SAndroid Build Coastguard Worker
80*b6fb3261SAndroid Build Coastguard Workergenrule(
81*b6fb3261SAndroid Build Coastguard Worker    name = "protoc",
82*b6fb3261SAndroid Build Coastguard Worker    outs = ["protoc.bin"],
83*b6fb3261SAndroid Build Coastguard Worker    cmd = "ln -s $$(which protoc) $@",
84*b6fb3261SAndroid Build Coastguard Worker    executable = 1,
85*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
86*b6fb3261SAndroid Build Coastguard Worker)
87*b6fb3261SAndroid Build Coastguard Worker
88*b6fb3261SAndroid Build Coastguard Workercc_proto_library(
89*b6fb3261SAndroid Build Coastguard Worker    name = "cc_wkt_protos",
90*b6fb3261SAndroid Build Coastguard Worker    internal_bootstrap_hack = 1,
91*b6fb3261SAndroid Build Coastguard Worker    protoc = ":protoc",
92*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
93*b6fb3261SAndroid Build Coastguard Worker)
94*b6fb3261SAndroid Build Coastguard Worker
95*b6fb3261SAndroid Build Coastguard Workerproto_gen(
96*b6fb3261SAndroid Build Coastguard Worker    name = "protobuf_python_genproto",
97*b6fb3261SAndroid Build Coastguard Worker    includes = ["."],
98*b6fb3261SAndroid Build Coastguard Worker    protoc = "@com_google_protobuf//:protoc",
99*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
100*b6fb3261SAndroid Build Coastguard Worker)
101*b6fb3261SAndroid Build Coastguard Worker
102*b6fb3261SAndroid Build Coastguard Workerpy_library(
103*b6fb3261SAndroid Build Coastguard Worker    name = "protobuf_python",
104*b6fb3261SAndroid Build Coastguard Worker    srcs_version = "PY3",
105*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
106*b6fb3261SAndroid Build Coastguard Worker)
107*b6fb3261SAndroid Build Coastguard Worker
108*b6fb3261SAndroid Build Coastguard Worker[proto_library(
109*b6fb3261SAndroid Build Coastguard Worker    name = proto[0] + "_proto",
110*b6fb3261SAndroid Build Coastguard Worker    srcs = [proto[1][0]],
111*b6fb3261SAndroid Build Coastguard Worker    visibility = ["//visibility:public"],
112*b6fb3261SAndroid Build Coastguard Worker    deps = [dep + "_proto" for dep in proto[1][1]],
113*b6fb3261SAndroid Build Coastguard Worker) for proto in WELL_KNOWN_PROTO_MAP.items()]
114