Skip to content

Commit b42ada2

Browse files
authored
Merge pull request #194 from owenv/mac-triples
Improve support for macOS 11/darwin 20 triple versioning
2 parents 94d83b7 + 40b5c03 commit b42ada2

File tree

2 files changed

+86
-4
lines changed

2 files changed

+86
-4
lines changed

Sources/SwiftDriver/Utilities/Triple.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,9 +1549,16 @@ extension Triple {
15491549
return nil
15501550
}
15511551

1552-
version.micro = 0
1553-
version.minor = version.major - 4
1554-
version.major = 10
1552+
if version.major <= 19 {
1553+
version.micro = 0
1554+
version.minor = version.major - 4
1555+
version.major = 10
1556+
} else {
1557+
version.micro = 0
1558+
version.minor = 0
1559+
// darwin20+ corresponds to macOS 11+.
1560+
version.major = version.major - 9
1561+
}
15551562

15561563
case .macosx:
15571564
// Default to 10.4.
@@ -1560,7 +1567,7 @@ extension Triple {
15601567
version.minor = 4
15611568
}
15621569

1563-
if version.major != 10 && version.major != 11 {
1570+
if version.major < 10 {
15641571
return nil
15651572
}
15661573

Tests/SwiftDriverTests/TripleTests.swift

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -842,6 +842,36 @@ final class TripleTests: XCTestCase {
842842
XCTAssertEqual(V?.minor, 0)
843843
XCTAssertEqual(V?.micro, 0)
844844

845+
T = Triple("x86_64-apple-darwin20")
846+
XCTAssertTrue(T.os?.isMacOSX)
847+
XCTAssertFalse(T.os?.isiOS)
848+
XCTAssertFalse(T.arch?.is16Bit)
849+
XCTAssertFalse(T.arch?.is32Bit)
850+
XCTAssertTrue(T.arch?.is64Bit)
851+
V = T._macOSVersion
852+
XCTAssertEqual(V?.major, 11)
853+
XCTAssertEqual(V?.minor, 0)
854+
XCTAssertEqual(V?.micro, 0)
855+
V = T._iOSVersion
856+
XCTAssertEqual(V?.major, 5)
857+
XCTAssertEqual(V?.minor, 0)
858+
XCTAssertEqual(V?.micro, 0)
859+
860+
T = Triple("x86_64-apple-darwin21")
861+
XCTAssertTrue(T.os?.isMacOSX)
862+
XCTAssertFalse(T.os?.isiOS)
863+
XCTAssertFalse(T.arch?.is16Bit)
864+
XCTAssertFalse(T.arch?.is32Bit)
865+
XCTAssertTrue(T.arch?.is64Bit)
866+
V = T._macOSVersion
867+
XCTAssertEqual(V?.major, 12)
868+
XCTAssertEqual(V?.minor, 0)
869+
XCTAssertEqual(V?.micro, 0)
870+
V = T._iOSVersion
871+
XCTAssertEqual(V?.major, 5)
872+
XCTAssertEqual(V?.minor, 0)
873+
XCTAssertEqual(V?.micro, 0)
874+
845875
T = Triple("x86_64-apple-macosx")
846876
XCTAssertTrue(T.os?.isMacOSX)
847877
XCTAssertFalse(T.os?.isiOS)
@@ -872,6 +902,51 @@ final class TripleTests: XCTestCase {
872902
XCTAssertEqual(V?.minor, 0)
873903
XCTAssertEqual(V?.micro, 0)
874904

905+
T = Triple("x86_64-apple-macosx11.0")
906+
XCTAssertTrue(T.os?.isMacOSX)
907+
XCTAssertFalse(T.os?.isiOS)
908+
XCTAssertFalse(T.arch?.is16Bit)
909+
XCTAssertFalse(T.arch?.is32Bit)
910+
XCTAssertTrue(T.arch?.is64Bit)
911+
V = T._macOSVersion
912+
XCTAssertEqual(V?.major, 11)
913+
XCTAssertEqual(V?.minor, 0)
914+
XCTAssertEqual(V?.micro, 0)
915+
V = T._iOSVersion
916+
XCTAssertEqual(V?.major, 5)
917+
XCTAssertEqual(V?.minor, 0)
918+
XCTAssertEqual(V?.micro, 0)
919+
920+
T = Triple("x86_64-apple-macosx11.1")
921+
XCTAssertTrue(T.os?.isMacOSX)
922+
XCTAssertFalse(T.os?.isiOS)
923+
XCTAssertFalse(T.arch?.is16Bit)
924+
XCTAssertFalse(T.arch?.is32Bit)
925+
XCTAssertTrue(T.arch?.is64Bit)
926+
V = T._macOSVersion
927+
XCTAssertEqual(V?.major, 11)
928+
XCTAssertEqual(V?.minor, 1)
929+
XCTAssertEqual(V?.micro, 0)
930+
V = T._iOSVersion
931+
XCTAssertEqual(V?.major, 5)
932+
XCTAssertEqual(V?.minor, 0)
933+
XCTAssertEqual(V?.micro, 0)
934+
935+
T = Triple("x86_64-apple-macosx12.0")
936+
XCTAssertTrue(T.os?.isMacOSX)
937+
XCTAssertFalse(T.os?.isiOS)
938+
XCTAssertFalse(T.arch?.is16Bit)
939+
XCTAssertFalse(T.arch?.is32Bit)
940+
XCTAssertTrue(T.arch?.is64Bit)
941+
V = T._macOSVersion
942+
XCTAssertEqual(V?.major, 12)
943+
XCTAssertEqual(V?.minor, 0)
944+
XCTAssertEqual(V?.micro, 0)
945+
V = T._iOSVersion
946+
XCTAssertEqual(V?.major, 5)
947+
XCTAssertEqual(V?.minor, 0)
948+
XCTAssertEqual(V?.micro, 0)
949+
875950
T = Triple("armv7-apple-ios")
876951
XCTAssertFalse(T.os?.isMacOSX)
877952
XCTAssertTrue(T.os?.isiOS)

0 commit comments

Comments
 (0)