@@ -14,13 +14,7 @@ pub fn opts() -> TargetOptions {
1414 //
1515 // Here we detect what version is being requested, defaulting to 10.7. ELF
1616 // TLS is flagged as enabled if it looks to be supported.
17- let deployment_target = env:: var ( "MACOSX_DEPLOYMENT_TARGET" ) . ok ( ) ;
18- let version = deployment_target. as_ref ( ) . and_then ( |s| {
19- let mut i = s. splitn ( 2 , '.' ) ;
20- i. next ( ) . and_then ( |a| i. next ( ) . map ( |b| ( a, b) ) )
21- } ) . and_then ( |( a, b) | {
22- a. parse :: < u32 > ( ) . and_then ( |a| b. parse :: < u32 > ( ) . map ( |b| ( a, b) ) ) . ok ( )
23- } ) . unwrap_or ( ( 10 , 7 ) ) ;
17+ let version = macos_deployment_target ( ) . unwrap_or ( ( 10 , 7 ) ) ;
2418
2519 TargetOptions {
2620 // macOS has -dead_strip, which doesn't rely on function_sections
@@ -40,3 +34,27 @@ pub fn opts() -> TargetOptions {
4034 .. Default :: default ( )
4135 }
4236}
37+
38+ fn macos_deployment_target ( ) -> Option < ( u32 , u32 ) > {
39+ let deployment_target = env:: var ( "MACOSX_DEPLOYMENT_TARGET" ) . ok ( ) ;
40+ let version = deployment_target. as_ref ( ) . and_then ( |s| {
41+ let mut i = s. splitn ( 2 , '.' ) ;
42+ i. next ( ) . and_then ( |a| i. next ( ) . map ( |b| ( a, b) ) )
43+ } ) . and_then ( |( a, b) | {
44+ a. parse :: < u32 > ( ) . and_then ( |a| b. parse :: < u32 > ( ) . map ( |b| ( a, b) ) ) . ok ( )
45+ } ) ;
46+
47+ version
48+ }
49+
50+ pub fn macos_llvm_target ( arch : & str ) -> String {
51+ let version = macos_deployment_target ( ) ;
52+ let llvm_target = match version {
53+ Some ( ( major, minor) ) => {
54+ format ! ( "{}-apple-macosx{}.{}.0" , arch, major, minor)
55+ } ,
56+ None => format ! ( "{}-apple-darwin" , arch)
57+ } ;
58+
59+ llvm_target
60+ }
0 commit comments