STT-tensorflow/third_party/systemlibs/protobuf.BUILD
Alexander Grund 58b31bfd38 Introduce PROTOBUF_INCLUDE_PATH
This avoids having to install all dependencies into the same folder
Default set so existing behavior is not changed
2020-11-03 00:22:21 -08:00

98 lines
2.5 KiB
Plaintext

load(
"@com_google_protobuf//:protobuf.bzl",
"cc_proto_library",
"proto_gen",
"py_proto_library",
)
licenses(["notice"])
filegroup(
name = "LICENSE",
visibility = ["//visibility:public"],
)
# Map of all well known protos.
# name => (include path, imports)
WELL_KNOWN_PROTO_MAP = {
"any" : ("google/protobuf/any.proto", []),
"api" : ("google/protobuf/api.proto", ["source_context", "type"]),
"compiler_plugin" : ("google/protobuf/compiler/plugin.proto", ["descriptor"]),
"descriptor" : ("google/protobuf/descriptor.proto", []),
"duration" : ("google/protobuf/duration.proto", []),
"empty" : ("google/protobuf/empty.proto", []),
"field_mask" : ("google/protobuf/field_mask.proto", []),
"source_context" : ("google/protobuf/source_context.proto", []),
"struct" : ("google/protobuf/struct.proto", []),
"timestamp" : ("google/protobuf/timestamp.proto", []),
"type" : ("google/protobuf/type.proto", ["any", "source_context"]),
"wrappers" : ("google/protobuf/wrappers.proto", []),
}
RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()]
genrule(
name = "link_proto_files",
outs = RELATIVE_WELL_KNOWN_PROTOS,
cmd = """
for i in $(OUTS); do
f=$${i#$(@D)/}
mkdir -p $(@D)/$${f%/*}
ln -sf $(PROTOBUF_INCLUDE_PATH)/$$f $(@D)/$$f
done
""",
)
cc_library(
name = "protobuf",
linkopts = ["-lprotobuf"],
visibility = ["//visibility:public"],
)
cc_library(
name = "protobuf_headers",
linkopts = ["-lprotobuf"],
visibility = ["//visibility:public"],
)
cc_library(
name = "protoc_lib",
linkopts = ["-lprotoc"],
visibility = ["//visibility:public"],
)
genrule(
name = "protoc",
outs = ["protoc.bin"],
cmd = "ln -s $$(which protoc) $@",
executable = 1,
visibility = ["//visibility:public"],
)
cc_proto_library(
name = "cc_wkt_protos",
internal_bootstrap_hack = 1,
protoc = ":protoc",
visibility = ["//visibility:public"],
)
proto_gen(
name = "protobuf_python_genproto",
includes = ["."],
protoc = "@com_google_protobuf//:protoc",
visibility = ["//visibility:public"],
)
py_library(
name = "protobuf_python",
srcs_version = "PY2AND3",
visibility = ["//visibility:public"],
)
[proto_library(
name = proto[0] + "_proto",
srcs = [proto[1][0]],
deps = [dep + "_proto" for dep in proto[1][1]],
visibility = ["//visibility:public"],
) for proto in WELL_KNOWN_PROTO_MAP.items()]