-
Notifications
You must be signed in to change notification settings - Fork 10.5k
Have the frontend and new swift-driver look in an external -sdk
for non-Darwin platform runtime libraries and modules too
#79621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
finagolfin
wants to merge
2
commits into
swiftlang:main
Choose a base branch
from
finagolfin:sdk
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+18
−13
Draft
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code explicitly follows what the original C++ Driver has long done when looking for the Swift runtime libraries,
swiftrt.o
, and a few other files found in the Swift resource directory:Note how the SDK is only looked in if a non-Darwin
-sdk
is explicitly specified: Saleem later tried to expand that to Darwin also in #26361, but he may have never got it to work.That C++ Driver setup now matches this Frontend setup, because the default in both is now to look relative to the compiler, which is done first in this Frontend here, ie
usr/bin/../lib/swift/
. If a-resource-dir
is set, that is given first priority, then a non-Darwin-sdk
is given second priority, ie the C++ Driver and the Frontend now match in where they look.This is important for two reasons:
swiftrt.o
, eliminating any confusion between the two by centralizing the Swift resource directory lookup here. That already found one bug in the Windows CI, see my other code comment.However, unlike the C++ Driver, my
-sdk
code below actually checks if the-sdk
path contains a Swift resource directory for the platform triple and does not use the-sdk
for this if not, falling back to the aforementioned default next to the compiler in that case. This is because an-sdk
is not guaranteed to have a Swift resource directory and may have only a C/C++ sysroot.We should probably tighten this up to require an explicit
-sdk
to have a Swift resource directory, with the only exception when an explicit-resource-dir
is also specified, but I'm open to debate here. The C++ Driver doesn't even check if the non-Darwin-sdk
has a Swift resource directory and simply assumes one is there, we can do a bit better than that.