Skip to content

Commit 7cc3ae4

Browse files
committed
Use clang to link relocatable objects when LINKER_DRIVER=auto
1 parent c6f7a10 commit 7cc3ae4

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

Sources/SWBCore/SpecImplementations/Tools/LinkerTools.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,11 @@ public final class LdLinkerSpec : GenericLinkerSpec, SpecIdentifierType, @unchec
362362
return runpathSearchPaths
363363
}
364364

365+
private static func swiftcSupportsLinkingMachOType(_ type: String) -> Bool {
366+
// swiftc does not currently support linking relocatable objects.
367+
return type != "mh_object"
368+
}
369+
365370
static func resolveLinkerDriver(_ cbc: CommandBuildContext, usedTools: [CommandLineToolSpec: Set<FileTypeSpec>]) -> LinkerDriverChoice {
366371
switch cbc.scope.evaluate(BuiltinMacros.LINKER_DRIVER) {
367372
case .clang:
@@ -371,7 +376,7 @@ public final class LdLinkerSpec : GenericLinkerSpec, SpecIdentifierType, @unchec
371376
case .swiftc:
372377
return .swiftc
373378
case .auto:
374-
if Self.isUsingSwift(usedTools) {
379+
if Self.isUsingSwift(usedTools) && Self.swiftcSupportsLinkingMachOType(cbc.scope.evaluate(BuiltinMacros.MACH_O_TYPE)) {
375380
return .swiftc
376381
} else {
377382
return .clang

0 commit comments

Comments
 (0)