[build] Move settings generation from Python to Rust code;

This commit is contained in:
Benjamin Bouvier
2018-11-21 15:38:12 +01:00
committed by Dan Gohman
parent 4c8f1e7a5a
commit d94e027c2a
20 changed files with 1334 additions and 40 deletions

View File

@@ -82,20 +82,12 @@ fn main() {
// Now that the Python build process is complete, generate files that are
// emitted by the `meta` crate.
// ------------------------------------------------------------------------
let isas = meta::isa::define_all();
if let Err(err) = meta::gen_types::generate("types.rs", &out_dir) {
if let Err(err) = generate_meta(&out_dir) {
eprintln!("Error: {}", err);
process::exit(1);
}
for isa in isas {
if let Err(err) = meta::gen_registers::generate(isa, "registers", &out_dir) {
eprintln!("Error: {}", err);
process::exit(1);
}
}
if let Ok(_) = env::var("CRANELIFT_VERBOSE") {
println!(
"cargo:warning=Build step took {:?}.",
@@ -105,6 +97,20 @@ fn main() {
}
}
fn generate_meta(out_dir: &str) -> Result<(), meta::error::Error> {
let shared_settings = meta::gen_settings::generate_common("new_settings.rs", &out_dir)?;
let isas = meta::isa::define_all(&shared_settings);
meta::gen_types::generate("types.rs", &out_dir)?;
for isa in &isas {
meta::gen_registers::generate(&isa, "registers", &out_dir)?;
meta::gen_settings::generate(&isa, "new_settings", &out_dir)?;
}
Ok(())
}
fn identify_python() -> &'static str {
for python in &["python", "python3", "python2.7"] {
if process::Command::new(python)