SwiftBuild: Fix executable can't find dynamic lib runtime error #8650
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.
Update
LD_RUNPATH_SEARCH_PATHS
of executable built using the new Swift Build backend.Motivation:
For the Swift Build backend, fix a runtime issue when building & running an executable linked against a dynamic library. Given the following packages:
Package App
Package Lib
This the error that I get:
...but works just fine when using
--build-system native
.When comparing the runpath, we get this:
PS. To get the runpath, run
otool -l path/to/bin | awk '/LC_RPATH/ {getline; getline; print $2}'
.Modifications:
Update the build setting
LD_RUNPATH_SEARCH_PATHS
for executables, appending@loader_path
. This is actually an "imparted" build setting coming from dynamic libraries targets, so that's where I made the change.Result:
Now both configurations are capable of running the built
App
:For reference, this is the PIF for the sample package
App
above. Note my change affects the bottomPACKAGE-TARGET:Utils
target only. The build setting is then "imparted" on the topPACKAGE-PRODUCT:App
target.