diff options
Diffstat (limited to 'tools/buck/rust_library.bzl')
-rw-r--r-- | tools/buck/rust_library.bzl | 34 |
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 + ) |