From c4eab2beb6cad47c8e814b6859e3f2cafa21b3ed Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Thu, 12 May 2022 20:49:20 +0200 Subject: [PATCH] Avoid spurious build script runs (#4150) * Don't attempt to track the generated clif.isle in cargo This causes the build script to rerun every time for me. * Put build script debug messages on stderr instead of stdout This keeps stdout reserved for cargo build script directives --- cranelift/codegen/build.rs | 18 ++++++++++++------ cranelift/codegen/meta/src/srcgen.rs | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/cranelift/codegen/build.rs b/cranelift/codegen/build.rs index db9c2447cc..701194611a 100644 --- a/cranelift/codegen/build.rs +++ b/cranelift/codegen/build.rs @@ -166,6 +166,7 @@ struct IsleCompilations { struct IsleCompilation { output: std::path::PathBuf, inputs: Vec, + untracked_inputs: Vec, } /// Construct the list of compilations (transformations from ISLE @@ -205,31 +206,31 @@ fn get_isle_compilations( IsleCompilation { output: out_dir.join("isle_x64.rs"), inputs: vec![ - clif_isle.clone(), prelude_isle.clone(), src_isa_x64.join("inst.isle"), src_isa_x64.join("lower.isle"), ], + untracked_inputs: vec![clif_isle.clone()], }, // The aarch64 instruction selector. IsleCompilation { output: out_dir.join("isle_aarch64.rs"), inputs: vec![ - clif_isle.clone(), prelude_isle.clone(), src_isa_aarch64.join("inst.isle"), src_isa_aarch64.join("lower.isle"), ], + untracked_inputs: vec![clif_isle.clone()], }, // The s390x instruction selector. IsleCompilation { output: out_dir.join("isle_s390x.rs"), inputs: vec![ - clif_isle.clone(), prelude_isle.clone(), src_isa_s390x.join("inst.isle"), src_isa_s390x.join("lower.isle"), ], + untracked_inputs: vec![clif_isle.clone()], }, ], }) @@ -276,10 +277,15 @@ fn run_compilation( ) -> Result<(), Box> { use cranelift_isle as isle; - println!("Rebuilding {}", compilation.output.display()); + eprintln!("Rebuilding {}", compilation.output.display()); let code = (|| { - let lexer = isle::lexer::Lexer::from_files(&compilation.inputs[..])?; + let lexer = isle::lexer::Lexer::from_files( + compilation + .inputs + .iter() + .chain(compilation.untracked_inputs.iter()), + )?; let defs = isle::parser::parse(lexer)?; let mut options = isle::codegen::CodegenOptions::default(); @@ -355,7 +361,7 @@ fn run_compilation( code }); - println!( + eprintln!( "Writing ISLE-generated Rust code to {}", compilation.output.display() ); diff --git a/cranelift/codegen/meta/src/srcgen.rs b/cranelift/codegen/meta/src/srcgen.rs index c4fde06623..f229ffe802 100644 --- a/cranelift/codegen/meta/src/srcgen.rs +++ b/cranelift/codegen/meta/src/srcgen.rs @@ -100,7 +100,7 @@ impl Formatter { let path_str = format!("{}/{}", directory, filename.as_ref()); let path = path::Path::new(&path_str); - println!("Writing generated file: {}", path.display()); + eprintln!("Writing generated file: {}", path.display()); let mut f = fs::File::create(path)?; for l in self.lines.iter().map(|l| l.as_bytes()) {