aboutsummaryrefslogtreecommitdiff
path: root/tools/buck/rust_library.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/buck/rust_library.bzl')
-rw-r--r--tools/buck/rust_library.bzl34
1 files changed, 34 insertions, 0 deletions
diff --git a/tools/buck/rust_library.bzl b/tools/buck/rust_library.bzl
new file mode 100644
index 00000000..67ec2ac7
--- /dev/null
+++ b/tools/buck/rust_library.bzl
@@ -0,0 +1,34 @@
+load("//tools/buck:genrule.bzl", "genrule")
+
+def rust_library(
+ name,
+ srcs,
+ features = [],
+ rustc_flags = [],
+ build_script = None,
+ **kwargs):
+ if build_script:
+ rust_binary(
+ name = "%s@build" % name,
+ srcs = srcs + [build_script],
+ crate = "build",
+ crate_root = build_script,
+ features = features,
+ rustc_flags = rustc_flags,
+ )
+
+ genrule(
+ name = "%s@cfg" % name,
+ out = "output",
+ cmd = "env RUSTC=rustc TARGET= $(exe :%s@build) | sed -n s/^cargo:rustc-cfg=/--cfg=/p > ${OUT}" % name,
+ )
+
+ rustc_flags = rustc_flags + ["@$(location :%s@cfg)" % name]
+
+ native.rust_library(
+ name = name,
+ srcs = srcs,
+ features = features,
+ rustc_flags = rustc_flags,
+ **kwargs
+ )