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