@@ -398,6 +398,9 @@ pub struct SpirvBuilder {
398
398
// Location of a known `rustc_codegen_spirv` dylib, only required without feature `rustc_codegen_spirv`.
399
399
#[ cfg_attr( feature = "clap" , clap( skip) ) ]
400
400
pub rustc_codegen_spirv_location : Option < PathBuf > ,
401
+ // Overwrite the toolchain like `cargo +nightly`
402
+ #[ cfg_attr( feature = "clap" , clap( skip) ) ]
403
+ pub toolchain_overwrite : Option < String > ,
401
404
402
405
/// The path of the "target specification" file.
403
406
///
@@ -454,7 +457,7 @@ impl Default for SpirvBuilder {
454
457
rustc_codegen_spirv_location : None ,
455
458
path_to_target_spec : None ,
456
459
target_dir_path : None ,
457
-
460
+ toolchain_overwrite : None ,
458
461
shader_panic_strategy : ShaderPanicStrategy :: default ( ) ,
459
462
validator : ValidatorOptions :: default ( ) ,
460
463
optimizer : OptimizerOptions :: default ( ) ,
@@ -934,6 +937,9 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> {
934
937
let profile = if builder. release { "release" } else { "dev" } ;
935
938
936
939
let mut cargo = Command :: new ( "cargo" ) ;
940
+ if let Some ( toolchain) = & builder. toolchain_overwrite {
941
+ cargo. arg ( format ! ( "+{}" , toolchain) ) ;
942
+ }
937
943
cargo. args ( [
938
944
"build" ,
939
945
"--lib" ,
0 commit comments