Internal change
PiperOrigin-RevId: 508766449
This commit is contained in:
parent
09ad961421
commit
e719d2d423
|
@ -3,11 +3,18 @@
|
||||||
|
|
||||||
""".bzl file for mediapipe open source build configs."""
|
""".bzl file for mediapipe open source build configs."""
|
||||||
|
|
||||||
load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library", "py_proto_library")
|
load(
|
||||||
|
"//mediapipe/framework/tool:mediapipe_proto.bzl",
|
||||||
|
_mediapipe_cc_proto_library = "mediapipe_cc_proto_library",
|
||||||
|
_mediapipe_proto_library = "mediapipe_proto_library",
|
||||||
|
)
|
||||||
load("@npm//@bazel/typescript:index.bzl", "ts_project")
|
load("@npm//@bazel/typescript:index.bzl", "ts_project")
|
||||||
load("@rules_proto//proto:defs.bzl", "proto_library")
|
|
||||||
load("@rules_proto_grpc//js:defs.bzl", "js_proto_library")
|
# TODO: enable def_rewrite once alias proto sources are generated.
|
||||||
load("//mediapipe/framework/tool:mediapipe_graph.bzl", "mediapipe_options_library")
|
def mediapipe_proto_library(def_rewrite = False, **kwargs):
|
||||||
|
_mediapipe_proto_library(def_rewrite = def_rewrite, **kwargs)
|
||||||
|
|
||||||
|
mediapipe_cc_proto_library = _mediapipe_cc_proto_library
|
||||||
|
|
||||||
def provided_args(**kwargs):
|
def provided_args(**kwargs):
|
||||||
"""Returns the keyword arguments omitting None arguments."""
|
"""Returns the keyword arguments omitting None arguments."""
|
||||||
|
@ -17,193 +24,6 @@ def replace_suffix(string, old, new):
|
||||||
"""Returns a string with an old suffix replaced by a new suffix."""
|
"""Returns a string with an old suffix replaced by a new suffix."""
|
||||||
return string.endswith(old) and string[:-len(old)] + new or string
|
return string.endswith(old) and string[:-len(old)] + new or string
|
||||||
|
|
||||||
def replace_deps(deps, old, new, drop_google_protobuf = True):
|
|
||||||
"""Returns deps with an old suffix replaced by a new suffix.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
deps: the specified dep targets.
|
|
||||||
old: the suffix to remove.
|
|
||||||
new: the suffix to insert.
|
|
||||||
drop_google_protobuf: if true, omit google/protobuf deps.
|
|
||||||
Returns:
|
|
||||||
the modified dep targets.
|
|
||||||
"""
|
|
||||||
if drop_google_protobuf:
|
|
||||||
deps = [dep for dep in deps if not dep.startswith("@com_google_protobuf//")]
|
|
||||||
deps = [replace_suffix(dep, "any_proto", "cc_wkt_protos") for dep in deps]
|
|
||||||
deps = [replace_suffix(dep, old, new) for dep in deps]
|
|
||||||
return deps
|
|
||||||
|
|
||||||
# TODO: load this macro from a common helper file.
|
|
||||||
def mediapipe_proto_library(
|
|
||||||
name,
|
|
||||||
srcs,
|
|
||||||
deps = [],
|
|
||||||
exports = None,
|
|
||||||
visibility = None,
|
|
||||||
testonly = None,
|
|
||||||
compatible_with = None,
|
|
||||||
def_proto = True,
|
|
||||||
def_cc_proto = True,
|
|
||||||
def_py_proto = True,
|
|
||||||
def_java_lite_proto = True,
|
|
||||||
def_portable_proto = True,
|
|
||||||
def_objc_proto = True,
|
|
||||||
def_java_proto = True,
|
|
||||||
def_jspb_proto = True,
|
|
||||||
def_options_lib = True,
|
|
||||||
portable_deps = None):
|
|
||||||
"""Defines the proto_library targets needed for all mediapipe platforms.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: the new proto_library target name.
|
|
||||||
srcs: the ".proto" source files to compile.
|
|
||||||
deps: the proto_library targets for all referenced protobufs.
|
|
||||||
exports: deps that are published with "import public".
|
|
||||||
portable_deps: the portable_proto_library targets for all referenced protobufs.
|
|
||||||
visibility: visibility of this target.
|
|
||||||
testonly: true means the proto can be used for testing only.
|
|
||||||
compatible_with: a list of environments the rule is compatible with.
|
|
||||||
def_proto: define the proto_library target
|
|
||||||
def_cc_proto: define the cc_proto_library target
|
|
||||||
def_py_proto: define the py_proto_library target
|
|
||||||
def_java_lite_proto: define the java_lite_proto_library target
|
|
||||||
def_portable_proto: define the portable_proto_library target
|
|
||||||
def_objc_proto: define the objc_proto_library target
|
|
||||||
def_java_proto: define the java_proto_library target
|
|
||||||
def_jspb_proto: define the jspb_proto_library target
|
|
||||||
def_options_lib: define the mediapipe_options_library target
|
|
||||||
"""
|
|
||||||
_ignore = [def_portable_proto, def_objc_proto, def_java_proto, portable_deps] # buildifier: disable=unused-variable
|
|
||||||
|
|
||||||
# The proto_library targets for the compiled ".proto" source files.
|
|
||||||
proto_deps = [":" + name]
|
|
||||||
|
|
||||||
if def_proto:
|
|
||||||
native.proto_library(**provided_args(
|
|
||||||
name = name,
|
|
||||||
srcs = srcs,
|
|
||||||
deps = deps,
|
|
||||||
exports = exports,
|
|
||||||
visibility = visibility,
|
|
||||||
testonly = testonly,
|
|
||||||
compatible_with = compatible_with,
|
|
||||||
))
|
|
||||||
|
|
||||||
if def_cc_proto:
|
|
||||||
cc_deps = replace_deps(deps, "_proto", "_cc_proto", False)
|
|
||||||
mediapipe_cc_proto_library(**provided_args(
|
|
||||||
name = replace_suffix(name, "_proto", "_cc_proto"),
|
|
||||||
srcs = srcs,
|
|
||||||
deps = proto_deps,
|
|
||||||
cc_deps = cc_deps,
|
|
||||||
visibility = visibility,
|
|
||||||
testonly = testonly,
|
|
||||||
))
|
|
||||||
|
|
||||||
if def_py_proto:
|
|
||||||
py_deps = replace_deps(deps, "_proto", "_py_pb2")
|
|
||||||
mediapipe_py_proto_library(**provided_args(
|
|
||||||
name = replace_suffix(name, "_proto", "_py_pb2"),
|
|
||||||
srcs = srcs,
|
|
||||||
proto_deps = proto_deps,
|
|
||||||
py_proto_deps = py_deps,
|
|
||||||
api_version = 2,
|
|
||||||
visibility = visibility,
|
|
||||||
testonly = testonly,
|
|
||||||
))
|
|
||||||
|
|
||||||
if def_java_lite_proto:
|
|
||||||
native.java_lite_proto_library(**provided_args(
|
|
||||||
name = replace_suffix(name, "_proto", "_java_proto_lite"),
|
|
||||||
deps = proto_deps,
|
|
||||||
visibility = visibility,
|
|
||||||
testonly = testonly,
|
|
||||||
compatible_with = compatible_with,
|
|
||||||
))
|
|
||||||
|
|
||||||
if def_jspb_proto:
|
|
||||||
js_deps = replace_deps(deps, "_proto", "_jspb_proto", False)
|
|
||||||
proto_library(
|
|
||||||
name = replace_suffix(name, "_proto", "_lib_proto"),
|
|
||||||
srcs = srcs,
|
|
||||||
deps = deps,
|
|
||||||
)
|
|
||||||
js_proto_library(
|
|
||||||
name = replace_suffix(name, "_proto", "_jspb_proto"),
|
|
||||||
protos = [replace_suffix(name, "_proto", "_lib_proto")],
|
|
||||||
output_mode = "NO_PREFIX_FLAT",
|
|
||||||
# Need to specify this to work around bug in js_proto_library()
|
|
||||||
# https://github.com/bazelbuild/rules_nodejs/issues/3503
|
|
||||||
legacy_path = "unused",
|
|
||||||
deps = js_deps,
|
|
||||||
visibility = visibility,
|
|
||||||
)
|
|
||||||
|
|
||||||
if def_options_lib:
|
|
||||||
cc_deps = replace_deps(deps, "_proto", "_cc_proto")
|
|
||||||
mediapipe_options_library(**provided_args(
|
|
||||||
name = replace_suffix(name, "_proto", "_options_lib"),
|
|
||||||
proto_lib = name,
|
|
||||||
deps = cc_deps,
|
|
||||||
visibility = visibility,
|
|
||||||
testonly = testonly,
|
|
||||||
compatible_with = compatible_with,
|
|
||||||
))
|
|
||||||
|
|
||||||
def mediapipe_py_proto_library(
|
|
||||||
name,
|
|
||||||
srcs,
|
|
||||||
visibility = None,
|
|
||||||
py_proto_deps = [],
|
|
||||||
proto_deps = None,
|
|
||||||
api_version = None,
|
|
||||||
testonly = 0):
|
|
||||||
"""Generate py_proto_library for mediapipe open source version.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: the name of the py_proto_library.
|
|
||||||
api_version: api version for bazel use only.
|
|
||||||
srcs: the .proto files of the py_proto_library for Bazel use.
|
|
||||||
visibility: visibility of this target.
|
|
||||||
py_proto_deps: a list of dependency labels for Bazel use; must be py_proto_library.
|
|
||||||
proto_deps: a list of dependency labels for bazel use.
|
|
||||||
testonly: test only proto or not.
|
|
||||||
"""
|
|
||||||
_ignore = [api_version, proto_deps]
|
|
||||||
py_proto_library(**provided_args(
|
|
||||||
name = name,
|
|
||||||
srcs = srcs,
|
|
||||||
visibility = visibility,
|
|
||||||
default_runtime = "@com_google_protobuf//:protobuf_python",
|
|
||||||
protoc = "@com_google_protobuf//:protoc",
|
|
||||||
deps = py_proto_deps + ["@com_google_protobuf//:protobuf_python"],
|
|
||||||
testonly = testonly,
|
|
||||||
))
|
|
||||||
|
|
||||||
def mediapipe_cc_proto_library(name, srcs, visibility = None, deps = [], cc_deps = [], testonly = 0):
|
|
||||||
"""Generate cc_proto_library for mediapipe open source version.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: the name of the cc_proto_library.
|
|
||||||
srcs: the .proto files of the cc_proto_library for Bazel use.
|
|
||||||
visibility: visibility of this target.
|
|
||||||
deps: a list of dependency labels for Bazel use; must be cc_proto_library.
|
|
||||||
testonly: test only proto or not.
|
|
||||||
"""
|
|
||||||
_ignore = [deps]
|
|
||||||
cc_proto_library(**provided_args(
|
|
||||||
name = name,
|
|
||||||
srcs = srcs,
|
|
||||||
visibility = visibility,
|
|
||||||
deps = cc_deps,
|
|
||||||
testonly = testonly,
|
|
||||||
cc_libs = ["@com_google_protobuf//:protobuf"],
|
|
||||||
protoc = "@com_google_protobuf//:protoc",
|
|
||||||
default_runtime = "@com_google_protobuf//:protobuf",
|
|
||||||
alwayslink = 1,
|
|
||||||
))
|
|
||||||
|
|
||||||
def mediapipe_ts_library(
|
def mediapipe_ts_library(
|
||||||
name,
|
name,
|
||||||
srcs,
|
srcs,
|
||||||
|
|
412
mediapipe/framework/tool/mediapipe_proto.bzl
Normal file
412
mediapipe/framework/tool/mediapipe_proto.bzl
Normal file
|
@ -0,0 +1,412 @@
|
||||||
|
"""Provides BUILD macros for MediaPipe proto-buffers.
|
||||||
|
"""
|
||||||
|
|
||||||
|
load("//mediapipe/framework/tool:mediapipe_graph.bzl", "mediapipe_options_library")
|
||||||
|
load("@com_google_protobuf//:protobuf.bzl", "cc_proto_library", "py_proto_library")
|
||||||
|
load("@rules_proto//proto:defs.bzl", "proto_library")
|
||||||
|
load("@rules_proto_grpc//js:defs.bzl", "js_proto_library")
|
||||||
|
|
||||||
|
def provided_args(**kwargs):
|
||||||
|
"""Returns the keyword arguments omitting None arguments."""
|
||||||
|
return {k: v for k, v in kwargs.items() if v != None}
|
||||||
|
|
||||||
|
def replace_suffix(string, old, new):
|
||||||
|
"""Returns a string with an old suffix replaced by a new suffix."""
|
||||||
|
return string.endswith(old) and string[:-len(old)] + new or string
|
||||||
|
|
||||||
|
def replace_deps(deps, old, new, drop_google_protobuf = True):
|
||||||
|
"""Returns deps with an old suffix replaced by a new suffix.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
deps: the specified dep targets.
|
||||||
|
old: the suffix to remove.
|
||||||
|
new: the suffix to insert.
|
||||||
|
drop_google_protobuf: if true, omit google/protobuf deps.
|
||||||
|
Returns:
|
||||||
|
the modified dep targets.
|
||||||
|
"""
|
||||||
|
if deps == None:
|
||||||
|
return deps
|
||||||
|
|
||||||
|
if drop_google_protobuf:
|
||||||
|
deps = [dep for dep in deps if not dep.startswith("@com_google_protobuf//")]
|
||||||
|
deps = [replace_suffix(dep, "any_proto", "cc_wkt_protos") for dep in deps]
|
||||||
|
|
||||||
|
deps = [replace_suffix(dep, old, new) for dep in deps]
|
||||||
|
return deps
|
||||||
|
|
||||||
|
def mediapipe_proto_library_impl(
|
||||||
|
name,
|
||||||
|
srcs,
|
||||||
|
deps = [],
|
||||||
|
exports = None,
|
||||||
|
visibility = None,
|
||||||
|
testonly = None,
|
||||||
|
compatible_with = None,
|
||||||
|
alwayslink = None,
|
||||||
|
def_proto = True,
|
||||||
|
def_cc_proto = True,
|
||||||
|
def_py_proto = True,
|
||||||
|
def_java_lite_proto = True,
|
||||||
|
def_objc_proto = True,
|
||||||
|
def_java_proto = True,
|
||||||
|
def_jspb_proto = True,
|
||||||
|
def_go_proto = True,
|
||||||
|
def_options_lib = True):
|
||||||
|
"""Defines the proto_library targets needed for all mediapipe platforms.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the new proto_library target name.
|
||||||
|
srcs: the ".proto" source files to compile.
|
||||||
|
deps: the proto_library targets for all referenced protobufs.
|
||||||
|
exports: deps that are published with "import public".
|
||||||
|
visibility: visibility of this target.
|
||||||
|
testonly: true means the proto can be used for testing only.
|
||||||
|
compatible_with: a list of environments the rule is compatible with.
|
||||||
|
alwayslink: any binary depending on the generated C++ library will link all object files,
|
||||||
|
useful if the protocol buffer is looked up dynamically.
|
||||||
|
def_proto: define the proto_library target
|
||||||
|
def_cc_proto: define the cc_proto_library target
|
||||||
|
def_py_proto: define the py_proto_library target
|
||||||
|
def_java_lite_proto: define the java_lite_proto_library target
|
||||||
|
def_objc_proto: define the objc_proto_library target
|
||||||
|
def_java_proto: define the java_proto_library target
|
||||||
|
def_jspb_proto: define the jspb_proto_library target
|
||||||
|
def_go_proto: define the go_proto_library target
|
||||||
|
def_options_lib: define the mediapipe_options_library target
|
||||||
|
"""
|
||||||
|
|
||||||
|
# The proto_library targets for the compiled ".proto" source files.
|
||||||
|
proto_deps = [":" + name]
|
||||||
|
|
||||||
|
if def_proto:
|
||||||
|
native.proto_library(**provided_args(
|
||||||
|
name = name,
|
||||||
|
srcs = srcs,
|
||||||
|
deps = deps,
|
||||||
|
exports = exports,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
alwayslink = alwayslink,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_cc_proto:
|
||||||
|
cc_deps = replace_deps(deps, "_proto", "_cc_proto", False)
|
||||||
|
mediapipe_cc_proto_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_cc_proto"),
|
||||||
|
srcs = srcs,
|
||||||
|
deps = proto_deps,
|
||||||
|
cc_deps = cc_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_py_proto:
|
||||||
|
py_deps = replace_deps(deps, "_proto", "_py_pb2")
|
||||||
|
mediapipe_py_proto_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_py_pb2"),
|
||||||
|
srcs = srcs,
|
||||||
|
proto_deps = proto_deps,
|
||||||
|
py_proto_deps = py_deps,
|
||||||
|
api_version = 2,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_java_lite_proto:
|
||||||
|
native.java_lite_proto_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_java_proto_lite"),
|
||||||
|
deps = proto_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_java_proto:
|
||||||
|
native.java_proto_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_java_proto"),
|
||||||
|
deps = proto_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_jspb_proto:
|
||||||
|
mediapipe_js_proto_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_jspb_proto"),
|
||||||
|
srcs = srcs,
|
||||||
|
deps = proto_deps,
|
||||||
|
lib_proto_deps = deps,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
if def_options_lib:
|
||||||
|
cc_deps = replace_deps(deps, "_proto", "_cc_proto")
|
||||||
|
mediapipe_options_library(**provided_args(
|
||||||
|
name = replace_suffix(name, "_proto", "_options_lib"),
|
||||||
|
proto_lib = name,
|
||||||
|
deps = cc_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
))
|
||||||
|
|
||||||
|
# After rewrite, all intra-package references refer to "mediapipe",
|
||||||
|
# and all imports refer to rewritten proto source files.
|
||||||
|
def rewrite_mediapipe_proto(name, rewrite_proto, source_proto, **kwargs):
|
||||||
|
"""Generates a proto source file with package changed to mediapipe.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the new target name.
|
||||||
|
rewrite_proto: the new ".proto" source file name.
|
||||||
|
source_proto: the old ".proto" source file name.
|
||||||
|
**kwargs: the remaining arguments.
|
||||||
|
"""
|
||||||
|
split_path = r'"\(.*\)/\([^/]*\).proto"'
|
||||||
|
rewrite_package = r"s|package mediapipe;|package mediapipe;|"
|
||||||
|
rewrite_import = r"s|import " + split_path + r'|import "\1/protobuf/\2.proto"|'
|
||||||
|
rewrite_import_public = r"s|import public " + split_path + r'|import public "\1/protobuf/\2.proto"|'
|
||||||
|
rewrite_import_any = r's|import "\(.*\)/protobuf/any.proto"|import "\1/any.proto"|'
|
||||||
|
rewrite_import_status = r's|import "\(.*\)/protobuf/status.proto"|import "\1/status.proto"|'
|
||||||
|
rewrite_ref = r"s|mediapipe\.|mediapipe\.|"
|
||||||
|
rewrite_objc = r's|objc_class_prefix = "MediaPipe"|objc_class_prefix = "MPP"|'
|
||||||
|
|
||||||
|
native.genrule(
|
||||||
|
name = name,
|
||||||
|
outs = [rewrite_proto],
|
||||||
|
srcs = [source_proto],
|
||||||
|
cmd = "for OUT in $(OUTS); do \n" +
|
||||||
|
" cp $(location " + source_proto + ") $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_package + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_import + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_import_public + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_import_any + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_import_status + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_ref + "' $$OUT \n" +
|
||||||
|
" sed -i -e '" + rewrite_objc + "' $$OUT \n" +
|
||||||
|
"done",
|
||||||
|
**kwargs
|
||||||
|
)
|
||||||
|
|
||||||
|
# Returns the path to a rewritten protobuf file or label.
|
||||||
|
def mediapipe_proto_path(path):
|
||||||
|
if path.startswith("@com_google_protobuf//"):
|
||||||
|
return path
|
||||||
|
i = max(path.rfind(":"), path.rfind("/")) + 1
|
||||||
|
return path[0:i] + "protobuf/" + path[i:]
|
||||||
|
|
||||||
|
# Returns a list of paths to rewritten protobuf files or labels.
|
||||||
|
def mediapipe_proto_paths(paths):
|
||||||
|
if paths == None:
|
||||||
|
return paths
|
||||||
|
return [mediapipe_proto_path(path) for path in paths]
|
||||||
|
|
||||||
|
def mediapipe_proto_library(
|
||||||
|
name,
|
||||||
|
srcs,
|
||||||
|
deps = [],
|
||||||
|
exports = None,
|
||||||
|
visibility = None,
|
||||||
|
testonly = None,
|
||||||
|
compatible_with = None,
|
||||||
|
alwayslink = None,
|
||||||
|
def_proto = True,
|
||||||
|
def_cc_proto = True,
|
||||||
|
def_py_proto = True,
|
||||||
|
def_java_lite_proto = True,
|
||||||
|
def_portable_proto = True, # @unused
|
||||||
|
def_objc_proto = True,
|
||||||
|
def_java_proto = True,
|
||||||
|
def_jspb_proto = True,
|
||||||
|
def_go_proto = True,
|
||||||
|
def_options_lib = True,
|
||||||
|
def_rewrite = True,
|
||||||
|
portable_deps = None): # @unused
|
||||||
|
"""Defines the proto_library targets needed for all mediapipe platforms.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the new proto_library target name.
|
||||||
|
srcs: the ".proto" source files to compile.
|
||||||
|
deps: the proto_library targets for all referenced protobufs.
|
||||||
|
exports: deps that are published with "import public".
|
||||||
|
portable_deps: ignored since portable protos are gone.
|
||||||
|
visibility: visibility of this target.
|
||||||
|
testonly: true means the proto can be used for testing only.
|
||||||
|
compatible_with: a list of environments the rule is compatible with.
|
||||||
|
alwayslink: any binary depending on the generated C++ library will link all object files,
|
||||||
|
useful if the protocol buffer is looked up dynamically.
|
||||||
|
def_proto: define the proto_library target
|
||||||
|
def_cc_proto: define the cc_proto_library target
|
||||||
|
def_py_proto: define the py_proto_library target
|
||||||
|
def_java_lite_proto: define the java_lite_proto_library target
|
||||||
|
def_portable_proto: ignored since portable protos are gone
|
||||||
|
def_objc_proto: define the objc_proto_library target
|
||||||
|
def_java_proto: define the java_proto_library target
|
||||||
|
def_jspb_proto: define the jspb_proto_library target
|
||||||
|
def_go_proto: define the go_proto_library target
|
||||||
|
def_options_lib: define the mediapipe_options_library target
|
||||||
|
def_rewrite: define a sibbling mediapipe_proto_library with package "mediapipe"
|
||||||
|
"""
|
||||||
|
|
||||||
|
mediapipe_proto_library_impl(
|
||||||
|
name = name,
|
||||||
|
srcs = srcs,
|
||||||
|
deps = deps,
|
||||||
|
exports = exports,
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
alwayslink = alwayslink,
|
||||||
|
def_proto = def_proto,
|
||||||
|
def_cc_proto = def_cc_proto,
|
||||||
|
def_py_proto = def_py_proto,
|
||||||
|
def_java_lite_proto = def_java_lite_proto,
|
||||||
|
def_objc_proto = def_objc_proto,
|
||||||
|
def_java_proto = def_java_proto,
|
||||||
|
def_jspb_proto = def_jspb_proto,
|
||||||
|
def_go_proto = def_go_proto,
|
||||||
|
def_options_lib = def_options_lib,
|
||||||
|
)
|
||||||
|
|
||||||
|
if def_rewrite:
|
||||||
|
source_proto = replace_suffix(name, "_proto", ".proto")
|
||||||
|
rewrite_proto = mediapipe_proto_path(source_proto)
|
||||||
|
rewrite_mediapipe_proto(
|
||||||
|
name = replace_suffix(name, "_proto", "_rewrite"),
|
||||||
|
rewrite_proto = rewrite_proto,
|
||||||
|
source_proto = source_proto,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
)
|
||||||
|
mediapipe_proto_library_impl(
|
||||||
|
name = mediapipe_proto_path(name),
|
||||||
|
srcs = [rewrite_proto],
|
||||||
|
deps = mediapipe_proto_paths(deps),
|
||||||
|
exports = mediapipe_proto_paths(exports),
|
||||||
|
visibility = visibility,
|
||||||
|
testonly = testonly,
|
||||||
|
compatible_with = compatible_with,
|
||||||
|
alwayslink = alwayslink,
|
||||||
|
def_proto = def_proto,
|
||||||
|
def_cc_proto = def_cc_proto,
|
||||||
|
def_py_proto = def_py_proto,
|
||||||
|
def_java_lite_proto = def_java_lite_proto,
|
||||||
|
def_objc_proto = def_objc_proto,
|
||||||
|
def_java_proto = def_java_proto,
|
||||||
|
def_jspb_proto = def_jspb_proto,
|
||||||
|
def_go_proto = def_go_proto,
|
||||||
|
# A clone of mediapipe_options_library() will redefine some classes.
|
||||||
|
def_options_lib = False,
|
||||||
|
)
|
||||||
|
|
||||||
|
def mediapipe_py_proto_library_oss(
|
||||||
|
name,
|
||||||
|
srcs,
|
||||||
|
visibility = None,
|
||||||
|
py_proto_deps = [],
|
||||||
|
proto_deps = None,
|
||||||
|
api_version = None,
|
||||||
|
testonly = 0):
|
||||||
|
"""Generate py_proto_library for mediapipe open source version.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the name of the py_proto_library.
|
||||||
|
api_version: api version for bazel use only.
|
||||||
|
srcs: the .proto files of the py_proto_library for Bazel use.
|
||||||
|
visibility: visibility of this target.
|
||||||
|
py_proto_deps: a list of dependency labels for Bazel use; must be py_proto_library.
|
||||||
|
proto_deps: a list of dependency labels for bazel use.
|
||||||
|
testonly: test only proto or not.
|
||||||
|
"""
|
||||||
|
_ignore = [api_version, proto_deps]
|
||||||
|
py_proto_library(**provided_args(
|
||||||
|
name = name,
|
||||||
|
srcs = srcs,
|
||||||
|
visibility = visibility,
|
||||||
|
default_runtime = "@com_google_protobuf//:protobuf_python",
|
||||||
|
protoc = "@com_google_protobuf//:protoc",
|
||||||
|
deps = py_proto_deps + ["@com_google_protobuf//:protobuf_python"],
|
||||||
|
testonly = testonly,
|
||||||
|
))
|
||||||
|
|
||||||
|
def mediapipe_cc_proto_library_oss(
|
||||||
|
name,
|
||||||
|
srcs,
|
||||||
|
visibility = None,
|
||||||
|
deps = [],
|
||||||
|
cc_deps = [],
|
||||||
|
testonly = 0):
|
||||||
|
"""Generate cc_proto_library for mediapipe open source version.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the name of the cc_proto_library.
|
||||||
|
srcs: the .proto files of the cc_proto_library for Bazel use.
|
||||||
|
visibility: visibility of this target.
|
||||||
|
deps: a list of dependency labels for Bazel use; must be cc_proto_library.
|
||||||
|
testonly: test only proto or not.
|
||||||
|
"""
|
||||||
|
_ignore = [deps]
|
||||||
|
|
||||||
|
cc_proto_library(**provided_args(
|
||||||
|
name = name,
|
||||||
|
srcs = srcs,
|
||||||
|
visibility = visibility,
|
||||||
|
deps = cc_deps,
|
||||||
|
testonly = testonly,
|
||||||
|
cc_libs = ["@com_google_protobuf//:protobuf"],
|
||||||
|
protoc = "@com_google_protobuf//:protoc",
|
||||||
|
default_runtime = "@com_google_protobuf//:protobuf",
|
||||||
|
alwayslink = 1,
|
||||||
|
))
|
||||||
|
|
||||||
|
def mediapipe_js_proto_library_oss(
|
||||||
|
name,
|
||||||
|
srcs,
|
||||||
|
deps,
|
||||||
|
lib_proto_deps,
|
||||||
|
visibility = None,
|
||||||
|
testonly = 0,
|
||||||
|
compatible_with = None):
|
||||||
|
"""Generate js_proto_library for mediapipe open source version.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
name: the name of the js_proto_library.
|
||||||
|
srcs: the .proto files of the js_proto_library for Bazel use.
|
||||||
|
deps: a list of dependency labels for bazel use ; must be proto_library.
|
||||||
|
lib_proto_deps: a list of "_proto" dependency labels.
|
||||||
|
visibility: Visibility of this target.
|
||||||
|
testonly: test only proto or not.
|
||||||
|
compatible_with: a list of environments the rule is compatible with.
|
||||||
|
"""
|
||||||
|
_ignore = [deps, testonly, compatible_with]
|
||||||
|
|
||||||
|
js_deps = replace_deps(lib_proto_deps, "_proto", "_jspb_proto", False)
|
||||||
|
proto_library(
|
||||||
|
name = replace_suffix(name, "_jspb_proto", "_lib_proto"),
|
||||||
|
srcs = srcs,
|
||||||
|
deps = lib_proto_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
)
|
||||||
|
js_proto_library(
|
||||||
|
name = name,
|
||||||
|
protos = [replace_suffix(name, "_jspb_proto", "_lib_proto")],
|
||||||
|
output_mode = "NO_PREFIX_FLAT",
|
||||||
|
# Need to specify this to work around bug in js_proto_library()
|
||||||
|
# https://github.com/bazelbuild/rules_nodejs/issues/3503
|
||||||
|
legacy_path = "unused",
|
||||||
|
deps = js_deps,
|
||||||
|
visibility = visibility,
|
||||||
|
)
|
||||||
|
|
||||||
|
def mediapipe_py_proto_library(**kwargs):
|
||||||
|
mediapipe_py_proto_library_oss(**kwargs)
|
||||||
|
|
||||||
|
def mediapipe_cc_proto_library(**kwargs):
|
||||||
|
mediapipe_cc_proto_library_oss(**kwargs)
|
||||||
|
|
||||||
|
def mediapipe_js_proto_library(**kwargs):
|
||||||
|
mediapipe_js_proto_library_oss(**kwargs)
|
Loading…
Reference in New Issue
Block a user