From 751867f961974a9606f4f8dc957e48ce0538ff18 Mon Sep 17 00:00:00 2001 From: Marc Prud'hommeaux Date: Mon, 21 Apr 2025 22:56:27 -0400 Subject: [PATCH] Remove -sysroot flag when ANDROID_NDK_ROOT environment is set --- .../GenericUnixToolchain+LinkerSupport.swift | 5 -- .../Toolchains/GenericUnixToolchain.swift | 18 ------ Tests/SwiftDriverTests/SwiftDriverTests.swift | 55 ------------------- 3 files changed, 78 deletions(-) diff --git a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift index b2ed42b41..a9bc1af12 100644 --- a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift @@ -236,11 +236,6 @@ extension GenericUnixToolchain { if let sysroot = parsedOptions.getLastArgument(.sysroot)?.asSingle { commandLine.appendFlag("--sysroot") try commandLine.appendPath(VirtualPath(path: sysroot)) - } else if targetTriple.environment == .android, - let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env) - { - commandLine.appendFlag("--sysroot") - try commandLine.appendPath(VirtualPath(path: sysroot.pathString)) } else if let path = targetInfo.sdkPath?.path { commandLine.appendFlag("--sysroot") commandLine.appendPath(VirtualPath.lookup(path)) diff --git a/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift b/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift index d0da6271c..7f3ff08aa 100644 --- a/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift +++ b/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift @@ -25,19 +25,6 @@ internal enum AndroidNDK { "darwin" #else nil -#endif - } - - internal static func getDefaultSysrootPath(in env: [String:String]) -> AbsolutePath? { - // The NDK is only available on an x86_64 hosts currently. -#if arch(x86_64) - guard let ndk = env["ANDROID_NDK_ROOT"], let os = getOSName() else { return nil } - return try? AbsolutePath(validating: ndk) - .appending(components: "toolchains", "llvm", "prebuilt") - .appending(component: "\(os)-x86_64") - .appending(component: "sysroot") -#else - return nil #endif } } @@ -156,11 +143,6 @@ public final class GenericUnixToolchain: Toolchain { if let sysroot = driver.parsedOptions.getLastArgument(.sysroot)?.asSingle { commandLine.appendFlag("-sysroot") try commandLine.appendPath(VirtualPath(path: sysroot)) - } else if driver.targetTriple.environment == .android, - let sysroot = AndroidNDK.getDefaultSysrootPath(in: self.env) - { - commandLine.appendFlag("-sysroot") - try commandLine.appendPath(VirtualPath(path: sysroot.pathString)) } if driver.targetTriple.os == .openbsd && driver.targetTriple.arch == .aarch64 { diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 95c435ae9..e994065b4 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -8005,61 +8005,6 @@ final class SwiftDriverTests: XCTestCase { } } - func testAndroidNDK() throws { - try withTemporaryDirectory { path in - var env = ProcessEnv.vars - env["SWIFT_DRIVER_SWIFT_AUTOLINK_EXTRACT_EXEC"] = "/garbage/swift-autolink-extract" - - do { - let sysroot = path.appending(component: "sysroot") - var driver = try Driver(args: [ - "swiftc", "-target", "aarch64-unknown-linux-gnu", "-sysroot", sysroot.pathString, #file - ], env: env) - let jobs = try driver.planBuild().removingAutolinkExtractJobs() - let frontend = try XCTUnwrap(jobs.first) - XCTAssertJobInvocationMatches(frontend, .flag("-sysroot"), .path(.absolute(sysroot))) - } - - do { - var env = env - env["ANDROID_NDK_ROOT"] = path.appending(component: "ndk").nativePathString(escaped: false) - - let sysroot = path.appending(component: "sysroot") - var driver = try Driver(args: [ - "swiftc", "-target", "aarch64-unknown-linux-android", "-sysroot", sysroot.pathString, #file - ], env: env) - let jobs = try driver.planBuild().removingAutolinkExtractJobs() - let frontend = try XCTUnwrap(jobs.first) - XCTAssertJobInvocationMatches(frontend, .flag("-sysroot"), .path(.absolute(sysroot))) - } - - // The default NDK prebuilts are x86_64 hosts only currently as if r27. -#if arch(x86_64) - do { - let sysroot = path.appending(component: "ndk") - - var env = env - env["ANDROID_NDK_ROOT"] = sysroot.nativePathString(escaped: false) - -#if os(Windows) - let os = "windows" -#elseif os(macOS) - let os = "darwin" -#else - let os = "linux" -#endif - - var driver = try Driver(args: [ - "swiftc", "-target", "aarch64-unknown-linux-android", #file - ], env: env) - let jobs = try driver.planBuild().removingAutolinkExtractJobs() - let frontend = try XCTUnwrap(jobs.first) - XCTAssertJobInvocationMatches(frontend, .flag("-sysroot"), .path(.absolute(sysroot.appending(components: "toolchains", "llvm", "prebuilt", "\(os)-x86_64", "sysroot")))) - } -#endif - } - } - func testEmitAPIDescriptorEmitModule() throws { try withTemporaryDirectory { path in do {