Based on //swift/build project
Swift is a large project consisting of many parts. When it comes to changing or investigating the project, it is crucial to have a comfortable way to tweak the build process.
The goals of this project are to:
- Provide a tool to build and experiment with Swift (Toolchain and SDK) on Windows in a convenient way on a local developer machine.
- Provide binary snapshots of dev and release versions of vanilla Swift, as well as customized versions by Readdle.
- Provide convenient code/script blocks to integrate Swift's build process in an arbitrary CI/CD flow.
- Windows 10 RedStone 4 (10.0.17763.0) or newer
- Developer Mode. Enable in Settings > Update & Security > For developers. Required to create symlinks without elevation.
- Git. https://git-scm.com/download/win
- Python 3.9. https://www.python.org/downloads/release/python-399/
- Visual Studio 2022. Any edition. Use most recent version, or version from latest successfull check. For minimal build system use Build Tools: https://aka.ms/vs/17/release/vs_BuildTools.exe. Required components are:
- MSVC v142 - VS 2022 C++ x64/x86 build tools (Microsoft.VisualStudio.Component.VC.Tools.x86.x64)
- C++ ATL for v142 build tools (Microsoft.VisualStudio.Component.VC.ATL)
- Windows 10 SDK (Microsoft.VisualStudio.Component.Windows10SDK.18362 or newer)
- C++ CMake tools for Windows (Microsoft.VisualStudio.Component.VC.CMake.Project). Note that sometimes it is required to use a specific standalone version of CMake. You can always check the Actions page and look into any fresh build run environment.
- Run elevated Command Prompt. Elevation is required to install clang modules into Visual Studio directory. If you somehow omit this step (e.g. by commenting corresponding script line), elevation is not needed, but make sure you have modues installed already (either manually, or by previous build tool run).
- Clone this repository (e.g. to
C:\swift-windows-gha
) and CD into it. Note: don't put it deeply into directory structure, or you will probably get build errors due to file path length restrictions. Or usesubst
command to create a virtual drive from the build directory. - Run
scripts\configure.cmd
. - Answer to all questions with defaults by pressing Enter. Except the Python path - please specify the full path to Python installation directory, without quotes.
- Run
scripts\build.cmd
.
Just toolchain alone contains more than 5000 sources to build, so be patient. Build takes about 40 minutes on 3.2GHz 8-core CPU, more than a hour on VM under MacBook Pro 2017, and about 6 hours on GitHub Actions cloud agent.
In the end you will get Library
folder at the default output path, which contains all built products as well as some intermediates.