@@ -14,13 +14,7 @@ pub fn opts() -> TargetOptions {
14
14
//
15
15
// Here we detect what version is being requested, defaulting to 10.7. ELF
16
16
// 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 ) ) ;
24
18
25
19
TargetOptions {
26
20
// macOS has -dead_strip, which doesn't rely on function_sections
@@ -40,3 +34,27 @@ pub fn opts() -> TargetOptions {
40
34
.. Default :: default ( )
41
35
}
42
36
}
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