- Notifications
You must be signed in to change notification settings - Fork 10.6k
Symlink swift and swiftc to swift-driver, when available #69834
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
Conversation
| @swift-ci test |
dea64f9 to 53b2111 Compare 44d473c to ec7934c Compare swift and swiftc to swift-driver, when available tools/driver/CMakeLists.txt Outdated
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.
As far as I can tell what happened here is that #6053 added this and removed the others, but that was somehow lost in the conflict resolution in #10337. I haven't looked at the LLVM closely, but I assume we should probably prefer add_swift_tool_symlink over swift_create_post_build_symlink and swift_install_in_component? Any thoughts @edymtt/@compnerd?
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.
One thing about add_swift_tool_symlink is that it requires the "source" be a component. So we can't simply call:
add_swift_tool_symlink(swift swift-driver compiler) Because that leads to:
CMake Error at /Volumes/Data/GHWorkspace/build/Ninja-Release/llvm-macosx-arm64/lib/cmake/llvm/AddLLVM.cmake:2168 (get_target_property): get_target_property() called with non-existent target "swift-driver". 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.
@bnbarham yes, we do prefer the add_swift_tool_symlink because it correctly handles the install of the link (or in the case of Windows, copy 😠). This makes it significantly better for building the toolchain distribution. Without that we will need to add a whole slew of custom install logic.
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.
To be clear, we have that logic already (we have both today):
swift_install_in_component(FILES "${SWIFT_RUNTIME_OUTPUT_INTDIR}/swift${CMAKE_EXECUTABLE_SUFFIX}" DESTINATION "bin" COMPONENT compiler) One thing about add_swift_tool_symlink is that it requires the "source" be a component. So we can't simply call:
We could fix that by adding a custom target for the early swift driver (which does the copy) right? ie. change swift_create_early_driver_copies to instead use add_custom_command + add_custom_target rather than configure_file.
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.
We already have a slew of custom install logic though, with swift_install_in_component later in this file.
We can pursue a refactor here to replace both swift_create_post_build_symlink and swift_install_in_component with LLVM tooling, but as-is, the logic is already there, and add_swift_tool_symlink would not work for this use-case for the reason described above.
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.
Also, swift_install_in_component does, I believe, already do Windows-specific things (copy instead of symlink) so I don't think this will functionally change much here.
ec7934c to e613b4b Compare e613b4b to f380790 Compare 1 similar comment
16b9012 to b89b5d7 Compare | swiftlang/swift-driver#1485 |
b89b5d7 to f935713 Compare | @swift-ci please build toolchain Windows platform |
| swiftlang/swift-driver#1485 |
3 similar comments
| swiftlang/swift-driver#1485 |
| swiftlang/swift-driver#1485 |
| swiftlang/swift-driver#1485 |
… of the driver CMake target
…e 'compiler' component
… invoked from 'swift-driver')
f935713 to 6a181fb Compare | @swift-ci please build Windows toolchain |
| @swift-ci please build toolchain Windows |
1 similar comment
| @swift-ci please build toolchain Windows |
add_swift_tool_symlinkon/binexecutables of the driver CMake targetswiftandswiftctoswift-driver, when available (whenearlyswiftdriverwas built with the host toolchain (default))swift-driverandswift-helpwhen installing the 'compiler' componentswift-driver)swift-driverchange: Add fallback to auxiliary legacy driver executable on '--disallow-use-new-driver' swift-driver#1485