Libdispatch moved to CMake 3.15.1

Hello fellow developers,

This is to just make sure that people are aware that as had been previously discussed, the slow crawl to CMake 3.15 is now underway. This should be largely transparent, though, a clean build would not hurt probably (but should not really be needed, I try to avoid them as much as possible). On Linux hosts if your system CMake is older than 3.15, build-script will checkout and build CMake as part of the build. We will then use that to build the rest of the projects. On macOS hosts, please update your CMake from Download | CMake. On Windows, CMake 3.15.1 is available from cmake.org OR from Microsoft in VS2019.

libdispatch is the first one to the line. This helps clean up a lot of the complexity in the build system (we managed to trim nearly 400 lines of CMake in libdispatch alone), makes it easier to understand the build system, and most importantly, makes the vast knowledge of how to use CMake now applicable to the build for libdispatch (and in the future, the rest of the project) as we no longer use any real custom handling for Swift based libraries. It also brings more correct incremental builds as we now use the swift driver to determine what needs to be rebuilt.

There are a few follow up changes that I am going to be making which will help tear down some of the custom scaffolding that we have built up over the years in favour of the CMake recommended tools to wire-up cross-project dependencies. I hope to see this help reduce some of the complexity in building Swift and reducing the complexity in build-script too!

I hope to address Foundation and XCTest subsequently, which will give us a much nicer experience for the core libraries building and testing.

Saleem

CC: @mishal_shah @Michael_Gottesman @millenomi

7 Likes