@@ -1653,6 +1653,8 @@ final class SwiftDriverTests: XCTestCase {
1653
1653
1654
1654
XCTAssertFalse ( cmd. contains ( . flag( " -static " ) ) )
1655
1655
XCTAssertFalse ( cmd. contains ( . flag( " -shared " ) ) )
1656
+ // Handling of '-lobjc' is now in the Clang linker driver.
1657
+ XCTAssertFalse ( cmd. contains ( . flag( " -lobjc " ) ) )
1656
1658
}
1657
1659
1658
1660
do {
@@ -1728,6 +1730,39 @@ final class SwiftDriverTests: XCTestCase {
1728
1730
XCTAssertFalse ( cmd. contains ( . flag( " -shared " ) ) )
1729
1731
}
1730
1732
1733
+ do {
1734
+ // -fobjc-link-runtime default
1735
+ var driver = try Driver ( args: commonArgs + [ " -emit-library " , " -target " , " x86_64-apple-macosx10.15 " ] , env: env)
1736
+ let plannedJobs = try driver. planBuild ( )
1737
+ XCTAssertEqual ( 3 , plannedJobs. count)
1738
+ let linkJob = plannedJobs [ 2 ]
1739
+ XCTAssertEqual ( linkJob. kind, . link)
1740
+ let cmd = linkJob. commandLine
1741
+ XCTAssertFalse ( cmd. contains ( . flag( " -fobjc-link-runtime " ) ) )
1742
+ }
1743
+
1744
+ do {
1745
+ // -fobjc-link-runtime enable
1746
+ var driver = try Driver ( args: commonArgs + [ " -emit-library " , " -target " , " x86_64-apple-macosx10.15 " , " -link-objc-runtime " ] , env: env)
1747
+ let plannedJobs = try driver. planBuild ( )
1748
+ XCTAssertEqual ( 3 , plannedJobs. count)
1749
+ let linkJob = plannedJobs [ 2 ]
1750
+ XCTAssertEqual ( linkJob. kind, . link)
1751
+ let cmd = linkJob. commandLine
1752
+ XCTAssertTrue ( cmd. contains ( . flag( " -fobjc-link-runtime " ) ) )
1753
+ }
1754
+
1755
+ do {
1756
+ // -fobjc-link-runtime disable override
1757
+ var driver = try Driver ( args: commonArgs + [ " -emit-library " , " -target " , " x86_64-apple-macosx10.15 " , " -link-objc-runtime " , " -no-link-objc-runtime " ] , env: env)
1758
+ let plannedJobs = try driver. planBuild ( )
1759
+ XCTAssertEqual ( 3 , plannedJobs. count)
1760
+ let linkJob = plannedJobs [ 2 ]
1761
+ XCTAssertEqual ( linkJob. kind, . link)
1762
+ let cmd = linkJob. commandLine
1763
+ XCTAssertFalse ( cmd. contains ( . flag( " -fobjc-link-runtime " ) ) )
1764
+ }
1765
+
1731
1766
do {
1732
1767
// Xlinker flags
1733
1768
// Ensure that Xlinker flags are passed as such to the clang linker invocation.
0 commit comments