| load("@rules_pkg//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", |
| "@protobuf_bundle//:bigdecimal", |
| ] + 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__"], |
| ) |