@@ -1653,6 +1653,8 @@ final class SwiftDriverTests: XCTestCase {
16531653
16541654 XCTAssertFalse ( cmd. contains ( . flag( " -static " ) ) )
16551655 XCTAssertFalse ( cmd. contains ( . flag( " -shared " ) ) )
1656+ // Handling of '-lobjc' is now in the Clang linker driver.
1657+ XCTAssertFalse ( cmd. contains ( . flag( " -lobjc " ) ) )
16561658 }
16571659
16581660 do {
@@ -1728,6 +1730,39 @@ final class SwiftDriverTests: XCTestCase {
17281730 XCTAssertFalse ( cmd. contains ( . flag( " -shared " ) ) )
17291731 }
17301732
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+
17311766 do {
17321767 // Xlinker flags
17331768 // Ensure that Xlinker flags are passed as such to the clang linker invocation.
0 commit comments