@@ -727,6 +727,20 @@ 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 = format ! (
734+ "{}.spv" ,
735+ spirv_module. file_name( ) . unwrap( ) . to_str( ) . unwrap( )
736+ ) ;
737+ println ! ( "cargo::rustc-env={}={}" , env_var, spirv_module. display( ) ) ;
738+ }
739+ ModuleResult :: MultiModule ( _) => {
740+ Err ( SpirvBuilderError :: MultiModuleWithEnvShaderSpvPath ) ?;
741+ }
742+ }
743+ }
730744 Ok ( out. compile_result )
731745 }
732746
@@ -739,26 +753,13 @@ impl SpirvBuilder {
739753 let metadata: CompileResult =
740754 rustc_codegen_spirv_types:: serde_json:: from_reader ( BufReader :: new ( metadata_contents) )
741755 . 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) ;
756+ assert_eq ! (
757+ self . multimodule,
758+ match & metadata. module {
759+ ModuleResult :: SingleModule ( _) => false ,
760+ ModuleResult :: MultiModule ( _) => true ,
760761 }
761- }
762+ ) ;
762763 Ok ( metadata)
763764 }
764765}
@@ -831,10 +832,6 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<RustcOutput, SpirvBuilderError
831832 . as_ref ( )
832833 . ok_or ( SpirvBuilderError :: MissingTarget ) ?;
833834 target = SpirvTarget :: parse ( target_str) ?;
834-
835- if builder. build_script . get_env_shader_spv_path ( ) && builder. multimodule {
836- return Err ( SpirvBuilderError :: MultiModuleWithEnvShaderSpvPath ) ;
837- }
838835 if !path_to_crate. is_dir ( ) {
839836 return Err ( SpirvBuilderError :: CratePathDoesntExist (
840837 path_to_crate. clone ( ) ,
0 commit comments