@@ -103,15 +103,21 @@ public struct Destination {
103103 }
104104
105105 // 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+ }
108114
109115 return Destination (
110116 target: hostTargetTriple,
111117 sdk: sdkPath,
112118 binDir: binDir,
113- extraCCFlags: commonArgs ,
114- extraSwiftCFlags: commonArgs ,
119+ extraCCFlags: extraCCFlags ,
120+ extraSwiftCFlags: extraSwiftCFlags ,
115121 extraCPPFlags: [ " -lc++ " ]
116122 )
117123 #else
@@ -127,21 +133,31 @@ public struct Destination {
127133 }
128134
129135 /// 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 ) ? {
131139 if let path = _sdkPlatformFrameworkPath {
132140 return path
133141 }
134142 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 ( )
136145
137146 if let platformPath = platformPath, !platformPath. isEmpty {
138- _sdkPlatformFrameworkPath = AbsolutePath ( platformPath) . appending (
147+ // For XCTest framework.
148+ let fwk = AbsolutePath ( platformPath) . appending (
139149 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)
140156 }
141157 return _sdkPlatformFrameworkPath
142158 }
143159 /// Cache storage for sdk platform path.
144- private static var _sdkPlatformFrameworkPath : AbsolutePath ? = nil
160+ private static var _sdkPlatformFrameworkPath : ( fwk : AbsolutePath , lib : AbsolutePath ) ? = nil
145161
146162 /// Target triple for the host system.
147163 private static let hostTargetTriple = Triple . hostTriple
0 commit comments