On 11/04/14 09:12, Dario Lombardo wrote:
Hi list
Some days ago I played a bit with ninja and I found useful info I'd like
to share with you.
Ninja is a compilation system similar to make. It's advantage is that it
was built with parallelism in mind, to take advantage of multi-core CPUs.
Wireshark uses cmake that has a generator for ninja, so I decided to
make some tests.
1) cmake and make
This a very common way to compile stuff, and wireshark too. The
advantage of using cmake and make is that you get a progress of the
compilation. Very useful! The disadvantage is that this progress runs
bad with parallel make (-j). Not only the output is a mess, but
sometimes compilation breaks. I think that cmake doesn't manage well
parallel gcc instances. Autotools manage well parallel make, but afaik
the cmake subsystem in wireshark has a better support.
FWIW the autotools' parallel make stuff works quite well. I think quite
a number of people still use it as their primary build system so it's
quite well supported.
I can also do parallel cmake builds (cmake version is 2.8.12.2) with
significant speedup and only minor output messiness, for example:
[ 58%] Building C object epan/CMakeFiles/epan.dir/dissectors/packet-mip.c.o
[ 58%] [ 58%] Building C object epan/CMakeFiles/epan.dir/dissectors/packet-mip6.c.o
Building C object epan/CMakeFiles/epan.dir/dissectors/packet-mmse.c.o
This is all on Fedora 20.
Some stats:
autotools (compiling Gtk2 and Qt GUIs):
---------------------------------------
make: 9m43 (9 minutes 43 seconds)
make -j 9: 2m45
cmake (compiling just the Gtk3 GUI):
------------------------------------
make: 6m55
make -j 9: 1m57