[llvm-dev] GN build roundtable summary; adding GN build files to the repo

Reid Kleckner via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 31 16:39:45 PDT 2018


On Wed, Oct 31, 2018 at 4:24 PM Petr Hosek via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> I'll volunteer to maintain the GN files if the community is in favor
> of having those in the tree.

...

> GN has a first-class concept of a toolchain and it allows
> "applying" these toolchains on dependencies, so you can express the
> fact that a particular dependency should be built with a different
> toolchain, which could be a completely different compiler or just a
> different set of flags. This is an extremely powerful concept that
> would be useful for things like runtimes build.
>

I think your use case and Nico's are a bit different. In the fullness of
time, I expect that you will show that gn's toolchain support works really
well, and more people will want to use it for similar reasons. Eventually,
consensus will grow that it should be an officially supported build system.
I don't doubt that you are volunteering to maintain it yourself for now,
but I want to acknowledge that there is a very real possibility of scope
creep. If runtimes are in scope for this, then that really means the gn
files are going to be a full second build system with support for making a
real toolchain package. At some point, we may wind up with a second system
just as complicated as cmake, although it'll be much faster.

After writing the paragraph above, I realized that one of the big costs of
cmake is iteration time. If you want to fix a build system problem today,
you have to run cmake as part of your inner development loop. This
incentivizes people to avoid touching the build system if at all possible,
and it fills up with little quick fixes that nobody wants to refactor. If
we were using gn, I would be much happier iterating on changes to the build
system, since I would be able to test small incremental changes quickly.

I guess my opinion is, LLVM is big enough to have a second build system in
tree, with all the costs that that implies. gn is really the only new build
system that I'm actually excited about, so if we're going to have a second
one, it should be this one.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181031/d8ef65ea/attachment.html>


More information about the llvm-dev mailing list