Automated workflow to compile Swift Toolchain, for making Android apps with Swift
swift-everywhere-toolchain
Automated workflow to compile Swift Toolchain, for making Android apps with Swift
Requirements
- macOS 11.5.2
- Xcode 12.5.1
- Android Studio 2020.3.1
- Android NDK (See version number in file
NDK_VERSION
in the root of this repository) - Node 14.17.3 (node -v). Newer versions may also work, but not tested.
- CMake 3.21.2 (cmake --version)
- Ninja 1.10.2 (ninja --version)
- autoconf 2.71 (autoconf --version)
- aclocal 1.16.4 (aclocal --version)
- glibtool 2.4.6 (glibtool --version)
- pkg-config 0.29.2 (pkg-config --version)
Important
- 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.
Using pre-built toolchain
Build of complete toolchain takes ~1.5h. Instead of building it you can just download and use already pre-built package from Releases page.
Setup and Build
-
Install CMake, Ninja, Autotools and git-lfs. Check that all requirements are installed.
brew install cmake ninja autoconf automake libtool pkg-config git-lfs which cmake which ninja which autoconf which aclocal which glibtool which pkg-config which 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
.
Usage
Please refer file Assets/Readme.md to see how to compile Swift files or build Swift packages using Toolchain.
Sample Projects
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.