@@ -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