1load("@no_std_crate_index//:defs.bzl", "aliases", "all_crate_deps") 2load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") 3load( 4 "@rules_rust//rust:defs.bzl", 5 "rust_binary", 6 "rust_library", 7 "rust_shared_library", 8) 9 10rust_shared_library( 11 name = "lib", 12 srcs = [ 13 "lib.rs", 14 "no_std.rs", 15 ], 16 crate_features = select({ 17 "@rules_rust//:is_no_std": [], 18 "//conditions:default": ["std"], 19 }), 20 edition = "2021", 21 deps = ["custom_alloc"], 22) 23 24rust_library( 25 name = "custom_alloc", 26 srcs = ["alloc.rs"], 27 aliases = aliases(), 28 deps = all_crate_deps(normal = True), 29) 30 31cc_library( 32 name = "nostartfiles", 33 linkopts = ["-nostartfiles"], 34) 35 36rust_binary( 37 name = "main", 38 srcs = ["main.rs"], 39 aliases = aliases(), 40 deps = all_crate_deps(normal = True) + [":nostartfiles"], 41) 42 43cc_test( 44 name = "no_std_cc_test", 45 srcs = ["main.c"], 46 deps = [":lib"], 47) 48