@@ -103,15 +103,21 @@ public struct Destination {
103
103
}
104
104
105
105
// Compute common arguments for clang and swift.
106
- // This is currently just frameworks path.
107
- let commonArgs = Destination . sdkPlatformFrameworkPath ( environment: environment) . map ( { [ " -F " , $0. pathString] } ) ?? [ ]
106
+ var extraCCFlags : [ String ] = [ ]
107
+ var extraSwiftCFlags : [ String ] = [ ]
108
+ if let sdkPaths = Destination . sdkPlatformFrameworkPaths ( environment: environment) {
109
+ extraCCFlags += [ " -F " , sdkPaths. fwk. pathString]
110
+ extraSwiftCFlags += [ " -F " , sdkPaths. fwk. pathString]
111
+ extraSwiftCFlags += [ " -I " , sdkPaths. lib. pathString]
112
+ extraSwiftCFlags += [ " -L " , sdkPaths. lib. pathString]
113
+ }
108
114
109
115
return Destination (
110
116
target: hostTargetTriple,
111
117
sdk: sdkPath,
112
118
binDir: binDir,
113
- extraCCFlags: commonArgs ,
114
- extraSwiftCFlags: commonArgs ,
119
+ extraCCFlags: extraCCFlags ,
120
+ extraSwiftCFlags: extraSwiftCFlags ,
115
121
extraCPPFlags: [ " -lc++ " ]
116
122
)
117
123
#else
@@ -127,21 +133,31 @@ public struct Destination {
127
133
}
128
134
129
135
/// Returns macosx sdk platform framework path.
130
- public static func sdkPlatformFrameworkPath( environment: [ String : String ] = Process . env) -> AbsolutePath ? {
136
+ public static func sdkPlatformFrameworkPaths(
137
+ environment: [ String : String ] = Process . env
138
+ ) -> ( fwk: AbsolutePath , lib: AbsolutePath ) ? {
131
139
if let path = _sdkPlatformFrameworkPath {
132
140
return path
133
141
}
134
142
let platformPath = try ? Process . checkNonZeroExit (
135
- arguments: [ " xcrun " , " --sdk " , " macosx " , " --show-sdk-platform-path " ] , environment: environment) . spm_chomp ( )
143
+ arguments: [ " xcrun " , " --sdk " , " macosx " , " --show-sdk-platform-path " ] ,
144
+ environment: environment) . spm_chomp ( )
136
145
137
146
if let platformPath = platformPath, !platformPath. isEmpty {
138
- _sdkPlatformFrameworkPath = AbsolutePath ( platformPath) . appending (
147
+ // For XCTest framework.
148
+ let fwk = AbsolutePath ( platformPath) . appending (
139
149
components: " Developer " , " Library " , " Frameworks " )
150
+
151
+ // For XCTest Swift library.
152
+ let lib = AbsolutePath ( platformPath) . appending (
153
+ components: " Developer " , " usr " , " lib " )
154
+
155
+ _sdkPlatformFrameworkPath = ( fwk, lib)
140
156
}
141
157
return _sdkPlatformFrameworkPath
142
158
}
143
159
/// Cache storage for sdk platform path.
144
- private static var _sdkPlatformFrameworkPath : AbsolutePath ? = nil
160
+ private static var _sdkPlatformFrameworkPath : ( fwk : AbsolutePath , lib : AbsolutePath ) ? = nil
145
161
146
162
/// Target triple for the host system.
147
163
private static let hostTargetTriple = Triple . hostTriple
0 commit comments