Skip to content

Commit 2b9e404

Browse files
authored
[Unix] Use the new -sysroot flag for all non-Darwin Unix platforms, not just Android (#1811)
This makes two changes: 1. Use the new flag on all Unix platforms, as in the original frontend pull where it was introduced, swiftlang/swift#72352. 2. When compiling for Android and `ANDROID_NDK_ROOT` is unset, fall back to the `-sdk` as the sysroot when linking.
1 parent cac0be2 commit 2b9e404

File tree

3 files changed

+17
-18
lines changed

3 files changed

+17
-18
lines changed

Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift

+8-8
Original file line numberDiff line numberDiff line change
@@ -217,14 +217,14 @@ extension GenericUnixToolchain {
217217
commandLine.appendPath(try VirtualPath(path: opt.argument.asSingle))
218218
}
219219

220-
if targetTriple.environment == .android {
221-
if let sysroot = parsedOptions.getLastArgument(.sysroot)?.asSingle {
222-
commandLine.appendFlag("--sysroot")
223-
try commandLine.appendPath(VirtualPath(path: sysroot))
224-
} else if let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env) {
225-
commandLine.appendFlag("--sysroot")
226-
try commandLine.appendPath(VirtualPath(path: sysroot.pathString))
227-
}
220+
if let sysroot = parsedOptions.getLastArgument(.sysroot)?.asSingle {
221+
commandLine.appendFlag("--sysroot")
222+
try commandLine.appendPath(VirtualPath(path: sysroot))
223+
} else if targetTriple.environment == .android,
224+
let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env)
225+
{
226+
commandLine.appendFlag("--sysroot")
227+
try commandLine.appendPath(VirtualPath(path: sysroot.pathString))
228228
} else if let path = targetInfo.sdkPath?.path {
229229
commandLine.appendFlag("--sysroot")
230230
commandLine.appendPath(VirtualPath.lookup(path))

Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift

+8-9
Original file line numberDiff line numberDiff line change
@@ -152,17 +152,16 @@ public final class GenericUnixToolchain: Toolchain {
152152
frontendTargetInfo: FrontendTargetInfo,
153153
driver: inout Driver
154154
) throws {
155-
if driver.targetTriple.environment == .android {
156-
if let sysroot = driver.parsedOptions.getLastArgument(.sysroot)?.asSingle {
157-
commandLine.appendFlag("-sysroot")
158-
try commandLine.appendPath(VirtualPath(path: sysroot))
159-
} else if let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env) {
160-
commandLine.appendFlag("-sysroot")
161-
try commandLine.appendPath(VirtualPath(path: sysroot.pathString))
162-
}
155+
if let sysroot = driver.parsedOptions.getLastArgument(.sysroot)?.asSingle {
156+
commandLine.appendFlag("-sysroot")
157+
try commandLine.appendPath(VirtualPath(path: sysroot))
158+
} else if driver.targetTriple.environment == .android,
159+
let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env)
160+
{
161+
commandLine.appendFlag("-sysroot")
162+
try commandLine.appendPath(VirtualPath(path: sysroot.pathString))
163163
}
164164

165-
166165
if driver.targetTriple.os == .openbsd && driver.targetTriple.arch == .aarch64 {
167166
commandLine.appendFlag(.Xcc)
168167
commandLine.appendFlag("-Xclang=-msign-return-address=non-leaf")

Tests/SwiftDriverTests/SwiftDriverTests.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -7908,7 +7908,7 @@ final class SwiftDriverTests: XCTestCase {
79087908
do {
79097909
let sysroot = path.appending(component: "sysroot")
79107910
var driver = try Driver(args: [
7911-
"swiftc", "-target", "aarch64-unknown-linux-android", "-sysroot", sysroot.pathString, #file
7911+
"swiftc", "-target", "aarch64-unknown-linux-gnu", "-sysroot", sysroot.pathString, #file
79127912
], env: env)
79137913
let jobs = try driver.planBuild().removingAutolinkExtractJobs()
79147914
let frontend = try XCTUnwrap(jobs.first)

0 commit comments

Comments
 (0)