- macOS 11.3
- Xcode 12.5
- Android Studio 4.1.3
- Android NDK 21.4.7075529
- Node 14.16.1 (node -v). Newer versions may also work, but not tested.
- CMake 3.20.2 (cmake --version)
- Ninja 1.10.2 (ninja --version)
- Toolchain build may fail if macOS headers installed under
/usr/include
. This usually happens if you previously installed package/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
. See details in Xcode Command Line Tools notes. See following SuperUser question about how to uninstall package. - Toolchain build may fail if the command line tools are present in
/Library/Developer/CommandLineTools
. Remove them if you are not using them. See: macos - How do I uninstall the command line tools for Xcode? - Ask Different
Keep tools like CMake
and ninja
up to date.
Build of complete toolchain takes ~1.5h. Instead of building it you can just download and use already pre-built package from Releases page.
-
Check that CMake is installed. Install CMake if needed.
which cmake brew install cmake
-
Check that Ninja is installed. Install Ninja if needed.
which ninja brew install ninja
-
Check that Autotools is installed. Install Autotools if needed.
which autoconf brew install autoconf which aclocal brew install automake which glibtool brew install libtool which pkg-config brew install pkg-config
-
Check that git-lfs is installed. Install git-lfs if needed.
which git-lfs brew install git-lfs
-
Make sure that
Xcode Build Tools
properly configured.xcode-select --print-path
-
Clone this repository.
git clone https://github.com/vgorloff/swift-everywhere-toolchain.git cd swift-everywhere-toolchain
-
Create a symbolic link to NDK installation directory.
sudo mkdir -p /usr/local/ndk sudo ln -vsi ~/Library/Android/sdk/ndk/$VERSION /usr/local/ndk/$VERSION
The placeholder
$VERSION
needs to be replaced with a version mentioned in fileNDK_VERSION
at the root of cloned repository. -
Start a build.
node main.js
-
Once the build completed, toolchain will be saved to folder
ToolChain/swift-android-toolchain
and compressed into archiveToolChain/swift-android-toolchain.tar.gz
.
Please refer file Assets/Readme.md to see how to compile Swift files or build Swift packages using Toolchain.
Sample projects can be found in a separate swift-everywhere-samples repository. Please look into Readme.md
in that repository to get information about how to configure and build sample projects.