Windows Toolchain Distribution Updates

Hello Windows users,

As a Valentine's Day gift, I have managed to get the current Azure project to generate MSIs. There was a failure on the last build, due to SIMDOperators module being removed, but that should be resolved soon.

Unfortunately, I was trying to actually package the PDBs for the build, but the agents do not have sufficient space so I will be adjusting that to remove the PDBs during the build.

The MSIs are split into three categories:

  • toolchain (the actual toolchain package)
  • SDK (the development components, i.e. swiftmodules, swiftinterfaces, import libraries)
  • runtime (the runtime component, i.e. dlls)

The rules for generating the MSIs are also in my windows-build repository. There are many improvements that can be made, but this at least provides a nice model for getting started. It should be possible to create the symlinks/copy the modulemaps into the SDK directory during the installation and setup the PATH and LIB variables giving a configuration-free post setup. Patches to improve this are welcome to the GitHub repository :wink:

25 Likes

Nice!

Great work, thanks! I have found two problems trying to use them:

  • For now it seems that the SDK should be installed inside the toolchain (as currently Swift expect the Standard Library inside the Toolchain). The import libraries and Swift interface/module/docs should be installed at C:\Library\Developer\Toolchains\Swift.toolchain\usr\lib\swift\windows\x86_64 instead of C:\Library\Developer\Platforms\Windows.platform\Developer\SDKs\Windows.sdk\usr\lib\swift\windows\x86_64. (I have tried setting the LIB environment variable to the current install path with no success, am I missing something?)
  • The swiftrt.obj object seem to be missing in the current distribution (clang++.exe: error: no such file or directory: 'C:\Library\Developer\Toolchains\Swift.xctoolchain\usr\lib\swift\windows\x86_64\swiftrt.obj')

Thanks!

  • I think that we can create symlinks (or copies) for now. The problem is that using the toolchain directories causes problems when you try to mix up Linux distributions. I think that something like ifsos (effectively import libraries) would help alleviate some of the trouble with that.
  • Ugh, I thought I had put that in, guess not. Thanks for pointing that out! I'll adjust that.
1 Like

The runtime support (registrar) should now be present and as a bonus, the MSI now updates PATH for you!

3 Likes

@compnerd any update on when will windows toolchain release on swift.org site, snapshots also.

@satishb, sorry, I do not control swift.org's releases. As to the snapshots, there are nightly builds on Azure that you can download along with documentation on how to install and use it.