• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//tools/buck:genrule.bzl", "genrule")
2
3def rust_library(
4        name,
5        srcs,
6        features = [],
7        rustc_flags = [],
8        build_script = None,
9        **kwargs):
10    if build_script:
11        rust_binary(
12            name = "%s@build" % name,
13            srcs = srcs + [build_script],
14            crate = "build",
15            crate_root = build_script,
16            features = features,
17            rustc_flags = rustc_flags,
18        )
19
20        genrule(
21            name = "%s@cfg" % name,
22            out = "output",
23            cmd = "env RUSTC=rustc TARGET= $(exe :%s@build) | sed -n s/^cargo:rustc-cfg=/--cfg=/p > ${OUT}" % name,
24        )
25
26        rustc_flags = rustc_flags + ["@$(location :%s@cfg)" % name]
27
28    native.rust_library(
29        name = name,
30        srcs = srcs,
31        features = features,
32        rustc_flags = rustc_flags,
33        **kwargs
34    )
35