diff --git a/Sources/SwiftDriver/Toolchains/DarwinToolchain.swift b/Sources/SwiftDriver/Toolchains/DarwinToolchain.swift index 303d68bb6..f5a26e92d 100644 --- a/Sources/SwiftDriver/Toolchains/DarwinToolchain.swift +++ b/Sources/SwiftDriver/Toolchains/DarwinToolchain.swift @@ -220,12 +220,25 @@ public final class DarwinToolchain: Toolchain { } public func getDefaultDwarfVersion(targetTriple: Triple) -> UInt8 { - if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(10, 11, 0)) || + // Default to DWARF 2 on OS X 10.10 / iOS 8 and lower. + // Default to DWARF 4 on OS X 10.11 - macOS 14 / iOS - iOS 17. + if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(10, 11, 0)) || (targetTriple.isiOS && targetTriple.version( for: .iOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(9, 0, 0)) { return 2; } - return 4 + if (targetTriple.isMacOSX && targetTriple.version(for: .macOS) < Triple.Version(15, 0, 0)) || + (targetTriple.isiOS && targetTriple.version( + for: .iOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(18, 0, 0)) || + (targetTriple.isTvOS && targetTriple.version( + for: .tvOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(18, 0, 0)) || + (targetTriple.isWatchOS && targetTriple.version( + for: .watchOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(11, 0, 0)) || + (targetTriple.isVisionOS && targetTriple.version( + for: .visionOS(targetTriple._isSimulatorEnvironment ? .simulator : .device)) < Triple.Version(2, 0, 0)){ + return 4 + } + return 5 } func validateDeploymentTarget(_ parsedOptions: inout ParsedOptions, diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 3900dad86..38f05ad26 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -669,15 +669,35 @@ final class SwiftDriverTests: XCTestCase { XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4"))) } - // TODO: Enable once compiler support lands -// try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0-simulator") { driver in -// let jobs = try driver.planBuild() -// XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4"))) -// } -// try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0") { driver in -// let jobs = try driver.planBuild() -// XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4"))) -// } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "x86_64-apple-macosx15") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5"))) + } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-ios18.0") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5"))) + } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64_32-apple-watchos11") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5"))) + } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-tvos18") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5"))) + } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros1.0-simulator") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=4"))) + } + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-g", "-c", "-target", "arm64-apple-xros2.0") { driver in + let jobs = try driver.planBuild() + XCTAssertTrue(jobs[0].commandLine.contains(.flag("-dwarf-version=5"))) + } + + try assertNoDriverDiagnostics(args: "swiftc", "foo.swift", "-c", "-file-compilation-dir", ".") { driver in + let jobs = try driver.planBuild() + XCTAssertFalse(jobs[0].commandLine.contains(.flag("-file-compilation-dir"))) + } } func testCoverageSettings() throws {