Skip to content

Commit 06c4244

Browse files
committed
SwiftDriver: add support for baremetal targets (to reflect swiftlang/swift#35970)
1 parent af14cc2 commit 06c4244

File tree

4 files changed

+13
-2
lines changed

4 files changed

+13
-2
lines changed

Sources/SwiftDriver/Driver/Driver.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -2936,7 +2936,7 @@ extension Triple {
29362936
return DarwinToolchain.self
29372937
case .linux:
29382938
return GenericUnixToolchain.self
2939-
case .freeBSD, .haiku, .openbsd:
2939+
case .freeBSD, .haiku, .openbsd, .noneOS:
29402940
return GenericUnixToolchain.self
29412941
case .wasi:
29422942
return WebAssemblyToolchain.self

Sources/SwiftDriver/Utilities/Triple+Platforms.swift

+2
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,8 @@ extension Triple {
314314
return "haiku"
315315
case .wasi:
316316
return "wasi"
317+
case .noneOS:
318+
return nil
317319

318320
// Explicitly spell out the remaining cases to force a compile error when
319321
// Triple updates

Sources/SwiftDriver/Utilities/Triple.swift

+3
Original file line numberDiff line numberDiff line change
@@ -1109,6 +1109,7 @@ extension Triple {
11091109
case hurd
11101110
case wasi
11111111
case emscripten
1112+
case noneOS // 'OS' suffix purely to avoid name clash with Optional.none
11121113

11131114
var name: String {
11141115
return rawValue
@@ -1188,6 +1189,8 @@ extension Triple {
11881189
return .wasi
11891190
case _ where os.hasPrefix("emscripten"):
11901191
return .emscripten
1192+
case _ where os.hasPrefix("none"):
1193+
return .noneOS
11911194
default:
11921195
return nil
11931196
}

Tests/SwiftDriverTests/TripleTests.swift

+7-1
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,12 @@ final class TripleTests: XCTestCase {
187187
T = Triple("arm-none-none-eabi")
188188
XCTAssertEqual(T.arch, Triple.Arch.arm)
189189
XCTAssertEqual(T.vendor, nil)
190+
XCTAssertEqual(T.os, .noneOS)
191+
XCTAssertEqual(T.environment, Triple.Environment.eabi)
192+
193+
T = Triple("arm-none-unknown-eabi")
194+
XCTAssertEqual(T.arch, Triple.Arch.arm)
195+
XCTAssertEqual(T.vendor, nil)
190196
XCTAssertEqual(T.os, nil)
191197
XCTAssertEqual(T.environment, Triple.Environment.eabi)
192198

@@ -723,7 +729,7 @@ final class TripleTests: XCTestCase {
723729
assertNormalizesEqual("i686-linux",
724730
"i686-unknown-linux") // i686-pc-linux-gnu
725731
assertNormalizesEqual("arm-none-eabi",
726-
"arm-none-unknown-eabi") // arm-none-eabi
732+
"arm-unknown-none-eabi") // arm-none-eabi
727733
assertNormalizesEqual("wasm32-wasi",
728734
"wasm32-unknown-wasi") // wasm32-unknown-wasi
729735
assertNormalizesEqual("wasm64-wasi",

0 commit comments

Comments
 (0)