@@ -102,6 +102,7 @@ fn pre_link_args(os: &'static str, arch: Arch, abi: &'static str) -> LinkArgs {
102102 "ios" => ios_deployment_target ( arch, abi) ,
103103 "tvos" => tvos_deployment_target ( ) ,
104104 "watchos" => watchos_deployment_target ( ) ,
105+ "xros" => xros_deployment_target ( ) ,
105106 "macos" => macos_deployment_target ( arch) ,
106107 _ => unreachable ! ( ) ,
107108 } ;
@@ -202,6 +203,7 @@ pub fn sdk_version(platform: u32) -> Option<(u32, u32)> {
202203 | object:: macho:: PLATFORM_TVOSSIMULATOR
203204 | object:: macho:: PLATFORM_MACCATALYST => Some ( ( 16 , 2 ) ) ,
204205 object:: macho:: PLATFORM_WATCHOS | object:: macho:: PLATFORM_WATCHOSSIMULATOR => Some ( ( 9 , 1 ) ) ,
206+ object:: macho:: PLATFORM_XROS | object:: macho:: PLATFORM_XROSSIMULATOR => Some ( ( 1 , 0 ) ) ,
205207 _ => None ,
206208 }
207209}
@@ -216,6 +218,8 @@ pub fn platform(target: &Target) -> Option<u32> {
216218 ( "watchos" , _) => object:: macho:: PLATFORM_WATCHOS ,
217219 ( "tvos" , "sim" ) => object:: macho:: PLATFORM_TVOSSIMULATOR ,
218220 ( "tvos" , _) => object:: macho:: PLATFORM_TVOS ,
221+ ( "xros" , "sim" ) => object:: macho:: PLATFORM_XROSSIMULATOR ,
222+ ( "xros" , _) => object:: macho:: PLATFORM_XROS ,
219223 _ => return None ,
220224 } )
221225}
@@ -240,6 +244,7 @@ pub fn deployment_target(target: &Target) -> Option<(u32, u32)> {
240244 }
241245 "watchos" => watchos_deployment_target ( ) ,
242246 "tvos" => tvos_deployment_target ( ) ,
247+ "xros" => xros_deployment_target ( ) ,
243248 _ => return None ,
244249 } ;
245250
@@ -290,6 +295,7 @@ fn link_env_remove(os: &'static str) -> StaticCow<[StaticCow<str>]> {
290295 || sdkroot. contains ( "AppleTVSimulator.platform" )
291296 || sdkroot. contains ( "WatchOS.platform" )
292297 || sdkroot. contains ( "WatchSimulator.platform" )
298+ || sdkroot. contains ( "XROS.platform" )
293299 {
294300 env_remove. push ( "SDKROOT" . into ( ) )
295301 }
@@ -299,6 +305,7 @@ fn link_env_remove(os: &'static str) -> StaticCow<[StaticCow<str>]> {
299305 // although this is apparently ignored when using the linker at "/usr/bin/ld".
300306 env_remove. push ( "IPHONEOS_DEPLOYMENT_TARGET" . into ( ) ) ;
301307 env_remove. push ( "TVOS_DEPLOYMENT_TARGET" . into ( ) ) ;
308+ env_remove. push ( "XROS_DEPLOYMENT_TARGET" . into ( ) ) ;
302309 env_remove. into ( )
303310 } else {
304311 // Otherwise if cross-compiling for a different OS/SDK (including Mac Catalyst), remove any part
@@ -363,3 +370,18 @@ pub fn watchos_sim_llvm_target(arch: Arch) -> String {
363370 let ( major, minor) = watchos_deployment_target ( ) ;
364371 format ! ( "{}-apple-watchos{}.{}.0-simulator" , arch. target_name( ) , major, minor)
365372}
373+
374+ fn xros_deployment_target ( ) -> ( u32 , u32 ) {
375+ // If you are looking for the default deployment target, prefer `rustc --print deployment-target`.
376+ from_set_deployment_target ( "XROS_DEPLOYMENT_TARGET" ) . unwrap_or ( ( 1 , 0 ) )
377+ }
378+
379+ pub fn xros_llvm_target ( arch : Arch ) -> String {
380+ let ( major, minor) = xros_deployment_target ( ) ;
381+ format ! ( "{}-apple-xros{}.{}.0" , arch. target_name( ) , major, minor)
382+ }
383+
384+ pub fn xros_sim_llvm_target ( arch : Arch ) -> String {
385+ let ( major, minor) = xros_deployment_target ( ) ;
386+ format ! ( "{}-apple-xros{}.{}.0-simulator" , arch. target_name( ) , major, minor)
387+ }
0 commit comments