Pass -static-stdlib for all compiler jobs #3048
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation:
--static-swift-stdlib support on Linux is introduced by #2921 but it doesn't work when linking CoreFoundation.
When CoreFoundation is used on a project and a user uses --static-swift-stdlib, SwiftPM compiled object files without
-static-stdlib and linked them with that option. This mismatch of compiler option broke swift autolink mechanism.
The object files built without -static-stdlib references
/lib/swift/CoreFoundation/module.map
, which is intended to be used for dynamic linking, and the modulemap doesn't havelink "CoreFoundation"
statement. So the autolink sections in built object files doesn't have-lCoreFoundation
and it causes linking failure.This issue was reported on SR-648
Modifications:
Pass
-static-stdlib
for all compiler jobsResult:
This patch changes to pass
-static-stdlib
for all compiler jobs if necessary. This enables to refenrece/lib/swift_static/CoreFoundation/module.map
when using--static-swift-stdlib
and it resolves linking failures.