@@ -16,6 +16,8 @@ pub enum TargetSpecVersion {
1616 /// Some later version requires them.
1717 /// Some earlier version fails with them (notably our 0.9.0 release).
1818 Rustc_1_76_0 ,
19+ /// rustc 1.93 requires that the value of "target-pointer-width" is no longer a string but u16
20+ Rustc_1_93_0 ,
1921}
2022
2123impl TargetSpecVersion {
@@ -39,7 +41,9 @@ impl TargetSpecVersion {
3941 /// Returns the version of the target spec required for a certain rustc version. May return `None` if the version
4042 /// is old enough to not need target specs.
4143 pub fn from_rustc_version ( rustc_version : Version ) -> Option < Self > {
42- if rustc_version >= Version :: new ( 1 , 85 , 0 ) {
44+ if rustc_version >= Version :: new ( 1 , 93 , 0 ) {
45+ Some ( Self :: Rustc_1_93_0 )
46+ } else if rustc_version >= Version :: new ( 1 , 85 , 0 ) {
4347 Some ( Self :: Rustc_1_85_0 )
4448 } else if rustc_version >= Version :: new ( 1 , 76 , 0 ) {
4549 Some ( Self :: Rustc_1_76_0 )
@@ -52,8 +56,12 @@ impl TargetSpecVersion {
5256 pub fn format_spec ( & self , target : & SpirvTarget ) -> String {
5357 let target_env = target. env ( ) ;
5458 let extra = match self {
55- TargetSpecVersion :: Rustc_1_85_0 => r#""crt-static-respected": true,"# ,
5659 TargetSpecVersion :: Rustc_1_76_0 => r#""os": "unknown","# ,
60+ _ => r#""crt-static-respected": true,"# ,
61+ } ;
62+ let target_pointer_width = match self {
63+ TargetSpecVersion :: Rustc_1_76_0 | TargetSpecVersion :: Rustc_1_85_0 => "\" 32\" " ,
64+ TargetSpecVersion :: Rustc_1_93_0 => "32" ,
5765 } ;
5866 format ! (
5967 r#"{{
@@ -80,7 +88,7 @@ impl TargetSpecVersion {
8088 {extra}
8189 "panic-strategy": "abort",
8290 "simd-types-indirect": false,
83- "target-pointer-width": "32"
91+ "target-pointer-width": {target_pointer_width}
8492}}"#
8593 )
8694 }
0 commit comments