add script to build Ubuntu cross compilation toolchain #1099
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.
To cross compile a binary, you will need a cross compilation toolchain which consists of the toolchain itself and an SDK. For example compiling an iPhone binary from your Mac will use
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk
or similar. If you want to compile a Swift binary for say Ubuntu Xenial on your Mac, you'll need the following pieces of softwareswiftc
andclang
are able to do that)libswiftCore
) for Ubuntu ✅ (that's part of the Swift distribution for Ubuntu).deb
packages available from Ubuntu)In other words, all the pieces of software are available for free online, they just need to be assembled in the correct way. This script is an example on how you can do that for Ubuntu Xenial.
Example use:
This should (after quite some time) result in a file called
/tmp/cross-toolchain/ubuntu-xenial-destination.json
which you can hand to SwiftPM using the--destination
flag introduced in #1098 . An example for that iswhich should result in a binary for Linux 😃