diff options
author | Gary Guo <gary@garyguo.net> | 2022-11-10 17:41:37 +0100 |
---|---|---|
committer | Miguel Ojeda <ojeda@kernel.org> | 2022-12-04 01:59:16 +0100 |
commit | ecaa6ddff2fd843c0236a931bcc62bf239956617 (patch) | |
tree | e7a1b32960bd4ec652dd2e8dc34e60e9d62d289d /scripts | |
parent | ef9e37973c3a50497c943e70d577dad10a8e41f2 (diff) | |
download | linux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.tar.gz linux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.tar.bz2 linux-stable-ecaa6ddff2fd843c0236a931bcc62bf239956617.zip |
rust: add `build_error` crate
The `build_error` crate provides a function `build_error` which
will panic at compile-time if executed in const context and,
by default, will cause a build error if not executed at compile
time and the optimizer does not optimise away the call.
The `CONFIG_RUST_BUILD_ASSERT_ALLOW` kernel option allows to
relax the default build failure and convert it to a runtime
check. If the runtime check fails, `panic!` will be called.
Its functionality will be exposed to users as a couple macros in
the `kernel` crate in the following patch, thus some documentation
here refers to them for simplicity.
Signed-off-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Wei Liu <wei.liu@kernel.org>
[Reworded, adapted for upstream and applied latest changes]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/generate_rust_analyzer.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index 75bb611bd751..ecc7ea9a4dcf 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -68,6 +68,12 @@ def generate_crates(srctree, objtree, sysroot_src): crates[-1]["proc_macro_dylib_path"] = "rust/libmacros.so" append_crate( + "build_error", + srctree / "rust" / "build_error.rs", + ["core", "compiler_builtins"], + ) + + append_crate( "bindings", srctree / "rust"/ "bindings" / "lib.rs", ["core"], @@ -78,7 +84,7 @@ def generate_crates(srctree, objtree, sysroot_src): append_crate( "kernel", srctree / "rust" / "kernel" / "lib.rs", - ["core", "alloc", "macros", "bindings"], + ["core", "alloc", "macros", "build_error", "bindings"], cfg=cfg, ) crates[-1]["source"] = { |