Protocol Buffers - Google's data interchange format (grpc依赖) https://developers.google.com/protocol-buffers/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.5 KiB

load("@rules_pkg//:mappings.bzl", "pkg_files", "strip_prefix")
load("@rules_ruby//ruby:defs.bzl", "ruby_library")
config_setting(
name = "requires_bundle",
constraint_values = ["@platforms//os:osx"],
)
cc_binary(
name = "protobuf_c.so",
linkshared = 1,
tags = ["manual"],
deps = ["//ruby/ext/google/protobuf_c"],
)
cc_binary(
name = "libprotobuf_c_ffi.so",
linkshared = 1,
tags = ["manual"],
deps = ["//ruby/ext/google/protobuf_c:protobuf_c_ffi"],
)
# Move the bundle to the location expected by our Ruby files.
genrule(
name = "copy_bundle",
srcs = ["//ruby/ext/google/protobuf_c:bundle"],
outs = ["protobuf_c.bundle"],
cmd = "cp $< $@",
tags = ["manual"],
)
# Move the bundle to the location expected by our Ruby files.
genrule(
name = "copy_ffi_bundle",
srcs = ["//ruby/ext/google/protobuf_c:ffi_bundle"],
outs = ["libprotobuf_c_ffi.bundle"],
cmd = "cp $< $@",
tags = ["manual"],
visibility = [
"//ruby:__subpackages__",
],
)
java_binary(
name = "protobuf_java_bin",
create_executable = False,
deploy_env = ["@rules_ruby//ruby/runtime:jruby_binary"],
runtime_deps = [
"//ruby/src/main/java:protobuf_java",
],
)
# Move the jar to the location expected by our Ruby files.
genrule(
name = "copy_jar",
srcs = ["protobuf_java_bin_deploy.jar"],
outs = ["protobuf_java.jar"],
cmd = "cp $< $@",
tags = ["manual"],
visibility = ["//ruby:__subpackages__"],
)
ruby_library(
name = "protobuf_lib",
srcs = glob([
"**/*.rb",
]),
data = select({
# Platform native implementations
"@rules_ruby//ruby/runtime:config_jruby": ["protobuf_java.jar"],
"@platforms//os:osx": ["protobuf_c.bundle"],
"//conditions:default": ["protobuf_c.so"],
}) + select({
# FFI Implementations
"//ruby:macos_ffi_enabled": ["libprotobuf_c_ffi.bundle"],
"//ruby:linux_ffi_enabled": ["libprotobuf_c_ffi.so"],
"//conditions:default": [],
}),
includes = [
"ruby",
"ruby/lib",
],
visibility = ["//ruby:__pkg__"],
deps = ["//ruby:well_known_ruby_protos"] + select({
"//ruby:ffi_enabled": [
"@protobuf_bundle//:ffi",
"@protobuf_bundle//:ffi-compiler",
],
"//conditions:default": [],
}),
)
pkg_files(
name = "dist_files",
srcs = glob([
"**/*.rb",
"**/*.rake",
]),
strip_prefix = strip_prefix.from_root(""),
visibility = ["//ruby:__pkg__"],
)