[cmake] Unify usage of create_symlink/copy across the build files. #72202
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.
In several places, there was the same or similar code to either do a symlink or use copy/copy_if_different/copy_directory in Windows systems. The checks were also slightly different in some cases.
There is a
SWIFT_COPY_OR_SYMLINK
that can be controlled as a CMake option, and usesCMAKE_HOST_UNIX
as default. Change all cases that I can find to use that value. Also create a parallel valueSWIFT_COPY_OR_SYMLINK_DIR
to apply to directories.There is still a couple of cases that are specific to macOS SourceKit framework which I have left as-is, since symlinks is probably the only right thing to do there.
There's a case for Windows specifically that uses symlinks (in https://github.com/apple/swift/blob/523f80769487b0fea30880ca98c42470f740ff02/cmake/modules/SwiftConfigureSDK.cmake#L502) which I have not modified as well.