load("@no_std_crate_index//:defs.bzl", "aliases", "all_crate_deps") | |
load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") | |
load( | |
"@rules_rust//rust:defs.bzl", | |
"rust_binary", | |
"rust_library", | |
"rust_shared_library", | |
) | |
rust_shared_library( | |
name = "lib", | |
srcs = [ | |
"lib.rs", | |
"no_std.rs", | |
], | |
crate_features = select({ | |
"@rules_rust//:is_no_std": [], | |
"//conditions:default": ["std"], | |
}), | |
edition = "2021", | |
deps = ["custom_alloc"], | |
) | |
rust_library( | |
name = "custom_alloc", | |
srcs = ["alloc.rs"], | |
aliases = aliases(), | |
deps = all_crate_deps(normal = True), | |
) | |
cc_library( | |
name = "nostartfiles", | |
linkopts = ["-nostartfiles"], | |
) | |
rust_binary( | |
name = "main", | |
srcs = ["main.rs"], | |
aliases = aliases(), | |
deps = all_crate_deps(normal = True) + [":nostartfiles"], | |
) | |
cc_test( | |
name = "no_std_cc_test", | |
srcs = ["main.c"], | |
deps = [":lib"], | |
) |