Skip to content

Commit e480a72

Browse files
committed
spirv-builder: cleanup build_script.env_shader_spv_path implementation
1 parent 1ac317b commit e480a72

File tree

1 file changed

+17
-23
lines changed
  • crates/spirv-builder/src

1 file changed

+17
-23
lines changed

crates/spirv-builder/src/lib.rs

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,17 @@ impl SpirvBuilder {
727727
println!("cargo:rerun-if-changed={dep}");
728728
}
729729
}
730+
if self.build_script.get_env_shader_spv_path() {
731+
match &out.compile_result.module {
732+
ModuleResult::SingleModule(spirv_module) => {
733+
let env_var = spirv_module.file_name().unwrap().to_str().unwrap();
734+
println!("cargo::rustc-env={}={}", env_var, spirv_module.display());
735+
}
736+
ModuleResult::MultiModule(_) => {
737+
Err(SpirvBuilderError::MultiModuleWithEnvShaderSpvPath)?;
738+
}
739+
}
740+
}
730741
Ok(out.compile_result)
731742
}
732743

@@ -739,26 +750,13 @@ impl SpirvBuilder {
739750
let metadata: CompileResult =
740751
rustc_codegen_spirv_types::serde_json::from_reader(BufReader::new(metadata_contents))
741752
.map_err(SpirvBuilderError::MetadataFileMalformed)?;
742-
match &metadata.module {
743-
ModuleResult::SingleModule(spirv_module) => {
744-
assert!(!self.multimodule);
745-
if self.build_script.get_env_shader_spv_path() {
746-
let env_var = format!(
747-
"{}.spv",
748-
at.file_name()
749-
.unwrap()
750-
.to_str()
751-
.unwrap()
752-
.strip_suffix(ARTIFACT_SUFFIX)
753-
.unwrap()
754-
);
755-
println!("cargo::rustc-env={}={}", env_var, spirv_module.display());
756-
}
757-
}
758-
ModuleResult::MultiModule(_) => {
759-
assert!(self.multimodule);
753+
assert_eq!(
754+
self.multimodule,
755+
match &metadata.module {
756+
ModuleResult::SingleModule(_) => false,
757+
ModuleResult::MultiModule(_) => true,
760758
}
761-
}
759+
);
762760
Ok(metadata)
763761
}
764762
}
@@ -831,10 +829,6 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<RustcOutput, SpirvBuilderError
831829
.as_ref()
832830
.ok_or(SpirvBuilderError::MissingTarget)?;
833831
target = SpirvTarget::parse(target_str)?;
834-
835-
if builder.build_script.get_env_shader_spv_path() && builder.multimodule {
836-
return Err(SpirvBuilderError::MultiModuleWithEnvShaderSpvPath);
837-
}
838832
if !path_to_crate.is_dir() {
839833
return Err(SpirvBuilderError::CratePathDoesntExist(
840834
path_to_crate.clone(),

0 commit comments

Comments
 (0)