On Sun, Mar 22, 2015 at 12:44 AM, Krzysztof Kosiński <tweenk.pl@...972.....> wrote:
Surely Python is more widely known than the CMake scripting language,
and learning Python is more generally useful than learning the CMake

Waf works everywhere Python is available, so the third point shouldn't
be a problem.

> Sure, python is a great scripting language, but one could argue if you
> need a full bore scripting language to build your software, you've got a
> more serious problem than choice of build systems...

You already need a very complex program to build your software: the
compiler. Adding some scripts on top of that doesn't significantly
change the situation, and having a real scripting language at your
disposal is useful more often than one would expect.

I think the problem with having a scripting language as a build system is that 99% of the time you end up reinventing the code that the build system was actually made to solve.
Wildcards cannot be properly supported by anything that generates makefiles.

For example, let's say you have a program which is compiled from
main.cpp, plugin-a.cpp, plugin-b.cpp and plugin-c.cpp. The plugin
files add some objects to a container by using static initialization
(this is a common pattern and is also used in our own code). Let's say
you don't want plugin-c.cpp anymore and you delete it. When using
CMake or Autotools, which ultimately rely on make, it would not cause
a relinking, because all prerequisites still have timestamps that are
earlier than the one on the program executable. By contrast, Waf will
correctly trigger a relinking in this case.

Except I got rid of all the static initialization that the linker would normally throw out, and moved construction of objects to a factory file.
So this point is somewhat moot for Inkscape now. (abusing static initialization will probably end up causing obscure problems)