I tried to find out how to detect thinks like if CONFIG_DEBUG_KERNEL is set. As I did not see a way, I implemented this way, but not sure if its a good way to handle this things. There for I only create the diff here, and no pr yet. This just passes every CONFIG_* to rustc as a cfg.
diff --git a/rust/kernel/build.rs b/rust/kernel/build.rs
index 0897186b3f92..2818bcb1b391 100644
--- a/rust/kernel/build.rs+++ b/rust/kernel/build.rs@@ -92,6 +92,26 @@ fn main() {
println!("cargo:rerun-if-env-changed=RUST_BINDGEN_CFLAGS");
let kernel_dir = "../../";
+ println!("cargo:rerun-if-changed={}/include/config/auto.conf", kernel_dir);+ let file = std::fs::File::open(format!("{}/include/config/auto.conf", kernel_dir)).expect("could not open kernel config");+ let file = std::io::BufReader::new(file);+ use std::io::BufRead;+ for line in file.lines() {+ let line = line.unwrap();+ if !line.contains("=") {+ continue;+ }+ let line: Vec<&str> = line.split("=").collect();+ if line.len() != 2 {+ panic!();+ };+ let key = line[0];+ let value = line[1].trim_matches('"');++ println!("cargo:rustc-cfg={}=\"{}\"", key, value);+ };++
let cflags = env::var("RUST_BINDGEN_CFLAGS").expect("Must be invoked from kernel makefile");
let kernel_args = prepare_cflags(&cflags, &kernel_dir);
I tried to find out how to detect thinks like if CONFIG_DEBUG_KERNEL is set. As I did not see a way, I implemented this way, but not sure if its a good way to handle this things. There for I only create the diff here, and no pr yet. This just passes every CONFIG_* to rustc as a cfg.