@@ -102,6 +102,7 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
102102 "ios" => ios_lld_platform_version ( arch) ,
103103 "tvos" => tvos_lld_platform_version ( ) ,
104104 "watchos" => watchos_lld_platform_version ( ) ,
105+ "xros" => xros_lld_platform_version ( ) ,
105106 "macos" => macos_lld_platform_version ( arch) ,
106107 _ => unreachable ! ( ) ,
107108 }
@@ -192,6 +193,7 @@ pub fn sdk_version(platform: u32) -> Option<(u32, u32)> {
192193 | object:: macho:: PLATFORM_TVOSSIMULATOR
193194 | object:: macho:: PLATFORM_MACCATALYST => Some ( ( 16 , 2 ) ) ,
194195 object:: macho:: PLATFORM_WATCHOS | object:: macho:: PLATFORM_WATCHOSSIMULATOR => Some ( ( 9 , 1 ) ) ,
196+ object:: macho:: PLATFORM_XROS | object:: macho:: PLATFORM_XROSSIMULATOR => Some ( ( 1 , 0 ) ) ,
195197 _ => None ,
196198 }
197199}
@@ -206,6 +208,8 @@ pub fn platform(target: &Target) -> Option<u32> {
206208 ( "watchos" , _) => object:: macho:: PLATFORM_WATCHOS ,
207209 ( "tvos" , "sim" ) => object:: macho:: PLATFORM_TVOSSIMULATOR ,
208210 ( "tvos" , _) => object:: macho:: PLATFORM_TVOS ,
211+ ( "xros" , "sim" ) => object:: macho:: PLATFORM_XROSSIMULATOR ,
212+ ( "xros" , _) => object:: macho:: PLATFORM_XROS ,
209213 _ => return None ,
210214 } )
211215}
@@ -233,6 +237,7 @@ pub fn deployment_target(target: &Target) -> Option<(u32, u32)> {
233237 } ,
234238 "watchos" => watchos_deployment_target ( ) ,
235239 "tvos" => tvos_deployment_target ( ) ,
240+ "xros" => xros_deployment_target ( ) ,
236241 _ => return None ,
237242 } ;
238243
@@ -288,6 +293,7 @@ fn link_env_remove(arch: Arch, os: &'static str) -> StaticCow<[StaticCow<str>]>
288293 || sdkroot. contains ( "AppleTVSimulator.platform" )
289294 || sdkroot. contains ( "WatchOS.platform" )
290295 || sdkroot. contains ( "WatchSimulator.platform" )
296+ || sdkroot. contains ( "XROS.platform" )
291297 {
292298 env_remove. push ( "SDKROOT" . into ( ) )
293299 }
@@ -297,6 +303,7 @@ fn link_env_remove(arch: Arch, os: &'static str) -> StaticCow<[StaticCow<str>]>
297303 // although this is apparently ignored when using the linker at "/usr/bin/ld".
298304 env_remove. push ( "IPHONEOS_DEPLOYMENT_TARGET" . into ( ) ) ;
299305 env_remove. push ( "TVOS_DEPLOYMENT_TARGET" . into ( ) ) ;
306+ env_remove. push ( "XROS_DEPLOYMENT_TARGET" . into ( ) ) ;
300307 env_remove. into ( )
301308 } else {
302309 // Otherwise if cross-compiling for a different OS/SDK, remove any part
@@ -377,3 +384,23 @@ pub fn watchos_sim_llvm_target(arch: Arch) -> String {
377384 let ( major, minor) = watchos_deployment_target ( ) ;
378385 format ! ( "{}-apple-watchos{}.{}.0-simulator" , arch. target_name( ) , major, minor)
379386}
387+
388+ fn xros_deployment_target ( ) -> ( u32 , u32 ) {
389+ // If you are looking for the default deployment target, prefer `rustc --print deployment-target`.
390+ from_set_deployment_target ( "XROS_DEPLOYMENT_TARGET" ) . unwrap_or ( ( 1 , 0 ) )
391+ }
392+
393+ fn xros_lld_platform_version ( ) -> String {
394+ let ( major, minor) = xros_deployment_target ( ) ;
395+ format ! ( "{major}.{minor}" )
396+ }
397+
398+ pub fn xros_llvm_target ( arch : Arch ) -> String {
399+ let ( major, minor) = xros_deployment_target ( ) ;
400+ format ! ( "{}-apple-xros{}.{}.0" , arch. target_name( ) , major, minor)
401+ }
402+
403+ pub fn xros_sim_llvm_target ( arch : Arch ) -> String {
404+ let ( major, minor) = xros_deployment_target ( ) ;
405+ format ! ( "{}-apple-xros{}.{}.0-simulator" , arch. target_name( ) , major, minor)
406+ }
0 commit comments