mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-22 12:32:02 +00:00
build(core/rust): fix cargo build
without envvars
...restoring functionality of rust-analyzer
This commit is contained in:
parent
a4220c4b78
commit
ca78c01e28
@ -57,18 +57,34 @@ const DEFAULT_BINDGEN_MACROS_COMMON: &[&str] = &[
|
||||
];
|
||||
|
||||
fn add_bindgen_macros<'a>(
|
||||
clang_args: &mut Vec<&'a str>,
|
||||
clang_args: &mut Vec<String>,
|
||||
envvar: Option<&'a str>,
|
||||
test_envvar: Option<&'a str>,
|
||||
) {
|
||||
match envvar {
|
||||
Some(envvar) => clang_args.extend(envvar.split(',')),
|
||||
None => {
|
||||
println!("{}", test_envvar.unwrap());
|
||||
let test_macros_env = test_envvar.unwrap().split(',');
|
||||
clang_args.extend(DEFAULT_BINDGEN_MACROS_COMMON.iter());
|
||||
clang_args.extend(test_macros_env);
|
||||
}
|
||||
if let Some(envvar) = envvar {
|
||||
clang_args.extend(envvar.split(',').map(String::from));
|
||||
return;
|
||||
}
|
||||
clang_args.extend(DEFAULT_BINDGEN_MACROS_COMMON.iter().map(|s| s.to_string()));
|
||||
if let Some(envvar) = test_envvar {
|
||||
clang_args.extend(envvar.split(',').map(String::from));
|
||||
return;
|
||||
}
|
||||
|
||||
let mut model_dirs: Vec<&str> = vec![];
|
||||
// always include Bolt as the baseline
|
||||
model_dirs.push("../models/T2T1");
|
||||
#[cfg(feature = "layout_caesar")]
|
||||
model_dirs.push("../models/T3B1");
|
||||
#[cfg(feature = "layout_delizia")]
|
||||
model_dirs.push("../models/T3T1");
|
||||
#[cfg(feature = "layout_eckhart")]
|
||||
model_dirs.push("../models/T3W1");
|
||||
for model_dir in model_dirs {
|
||||
let macros = PathBuf::from(model_dir).join("test_bindgen_macros.txt");
|
||||
let contents = std::fs::read_to_string(¯os)
|
||||
.unwrap_or_else(|_| panic!("Failed to read {:?}", macros));
|
||||
clang_args.extend(contents.split(",\n").map(String::from));
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +134,7 @@ fn prepare_bindings() -> bindgen::Builder {
|
||||
|
||||
let build_dir_include = format!("-I{}", build_dir());
|
||||
|
||||
let mut clang_args: Vec<&str> = Vec::new();
|
||||
let mut clang_args: Vec<String> = Vec::new();
|
||||
|
||||
let bindgen_macros_env = env::var("BINDGEN_MACROS").ok();
|
||||
let test_macros_env = env::var("TEST_BINDGEN_MACROS").ok();
|
||||
@ -133,12 +149,12 @@ fn prepare_bindings() -> bindgen::Builder {
|
||||
bindings = bindings.clang_args(&["-DFRAMEBUFFER"]);
|
||||
}
|
||||
|
||||
clang_args.push(&build_dir_include);
|
||||
clang_args.push(build_dir_include);
|
||||
|
||||
// Pass in correct include paths and defines.
|
||||
if is_firmware() {
|
||||
clang_args.push("-nostdinc");
|
||||
clang_args.push("-fshort-enums"); // Make sure enums use the same size as in C
|
||||
clang_args.push("-nostdinc".to_string());
|
||||
clang_args.push("-fshort-enums".to_string()); // Make sure enums use the same size as in C
|
||||
|
||||
// Append gcc-arm-none-eabi's include paths.
|
||||
let cc_output = Command::new("arm-none-eabi-gcc")
|
||||
@ -161,7 +177,7 @@ fn prepare_bindings() -> bindgen::Builder {
|
||||
|
||||
bindings = bindings.clang_args(include_args);
|
||||
} else {
|
||||
clang_args.push("-fno-short-enums");
|
||||
clang_args.push("-fno-short-enums".to_string());
|
||||
}
|
||||
|
||||
bindings = bindings.clang_args(&clang_args);
|
||||
|
Loading…
Reference in New Issue
Block a user