[llvm-dev] RFC: Updating to CMake 3.15.0

Andrew Kelley via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 30 10:02:47 PDT 2019

On 10/29/19 1:10 PM, Chris Bieneman via llvm-dev wrote:
> At the LLVM Developer Meeting on October 23rd we held a CMake roundtable. One of the items we discussed was adopting a more regular timeline for CMake upgrades. During the roundtable there was overwhelming support for upgrading CMake, and support for treating CMake differently than how we treat upgrading host compilers.
> Historically we've taken into account recent versions of Visual Studio, Xcode and Linux distribution long term support packages when deciding what CMake version to require. While this does work, it has held us to old versions of CMake for long periods of time.
> During the roundtable we discussed that the amount of effort involved in updating to a modern CMake is more or less the same regardless of what version we choose. We believe this to be true because most OS package managers have older versions, like the Ubuntu 18.04 LTS which has CMake 3.10.2 which was released January 18, 2018. Additionally CMake.org provides binary and source downloads, and building CMake from source has lower system requirements than LLVM and is very simple.
> With all of this in mind at the roundtable we decided to propose raising the minimum required CMake version for all LLVM sub-projects to 3.15.0. Assuming there are no objections to this proposal, I propose a cut-over date of December 2, 2019.

Here's an argument for why to *lower* the minimum supported CMake version:

LLVM is a compiler backend.

LLVM is already the most difficult dependency to provide for most
projects that use it as a compiler backend. This is certainly true for
Zig, for example. This makes the requirements of building LLVM a
bottleneck in the bootstrapping process.

Any bump in minimum required CMake version increases the requirements of
the system to bootstrap a project which depends on LLVM.

For programming languages, a more minimal bootstrapping process is a

Therefore, bumping the minimum required CMake version of LLVM *removes a
feature* from any languages that depend on LLVM. This is O(N) cost where
N is the number of projects that depend on LLVM.

Zig has cmake_minimum_required(VERSION 2.8.5). LLVM's higher CMake
requirement is already the most demanding CMake version of all Zig's
dependencies. Making it any higher than it already is is strictly worse.

Why is newer CMake needed? What is LLVM's build process doing that is so
complicated that it needs bleeding edge CMake?


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191030/e9c66cb6/attachment.sig>

More information about the llvm-dev mailing list