35 lines
892 B
Python
35 lines
892 B
Python
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
|
|
)
|