Skip to content

Commit 7a96ffd

Browse files
authored
Merge pull request #1313 from apple/mracek/add-baremetal-target
SwiftDriver: add support for baremetal targets (to reflect swiftlang/swift#35970)
2 parents 38da97e + 644e0f6 commit 7a96ffd

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-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

+19-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ final class TripleTests: XCTestCase {
3232
XCTAssertEqual(Triple("x86_64-apple-macosx10.13").osVersion, "10.13.0")
3333
XCTAssertEqual(Triple("x86_64-apple-macosx1x.13").osVersion, "0.13.0")
3434
XCTAssertEqual(Triple("x86_64-apple-macosx10.13.5-abi").osVersion, "10.13.5")
35+
36+
XCTAssertEqual(Triple("arm64-unknown-none").arch, .aarch64)
37+
XCTAssertEqual(Triple("arm64-unknown-none").vendor, nil)
38+
XCTAssertEqual(Triple("arm64-unknown-none").os, .noneOS)
39+
XCTAssertEqual(Triple("arm64-unknown-none").environment, nil)
40+
XCTAssertEqual(Triple("arm64-unknown-none").objectFormat, .elf)
41+
42+
XCTAssertEqual(Triple("arm64-apple-none-macho").arch, .aarch64)
43+
XCTAssertEqual(Triple("arm64-apple-none-macho").vendor, .apple)
44+
XCTAssertEqual(Triple("arm64-apple-none-macho").os, .noneOS)
45+
XCTAssertEqual(Triple("arm64-apple-none-macho").environment, nil)
46+
XCTAssertEqual(Triple("arm64-apple-none-macho").objectFormat, .macho)
3547
}
3648

3749
func testBasicParsing() {
@@ -187,6 +199,12 @@ final class TripleTests: XCTestCase {
187199
T = Triple("arm-none-none-eabi")
188200
XCTAssertEqual(T.arch, Triple.Arch.arm)
189201
XCTAssertEqual(T.vendor, nil)
202+
XCTAssertEqual(T.os, .noneOS)
203+
XCTAssertEqual(T.environment, Triple.Environment.eabi)
204+
205+
T = Triple("arm-none-unknown-eabi")
206+
XCTAssertEqual(T.arch, Triple.Arch.arm)
207+
XCTAssertEqual(T.vendor, nil)
190208
XCTAssertEqual(T.os, nil)
191209
XCTAssertEqual(T.environment, Triple.Environment.eabi)
192210

@@ -723,7 +741,7 @@ final class TripleTests: XCTestCase {
723741
assertNormalizesEqual("i686-linux",
724742
"i686-unknown-linux") // i686-pc-linux-gnu
725743
assertNormalizesEqual("arm-none-eabi",
726-
"arm-none-unknown-eabi") // arm-none-eabi
744+
"arm-unknown-none-eabi") // arm-none-eabi
727745
assertNormalizesEqual("wasm32-wasi",
728746
"wasm32-unknown-wasi") // wasm32-unknown-wasi
729747
assertNormalizesEqual("wasm64-wasi",

0 commit comments

Comments
 (0)