-
Enhancement
-
Resolution: Fixed
-
P4
-
9
-
b96
-
x86, x86_64
-
linux
We should enable builds using icecc/icecream distributed native compilation. The setup is rather simple and the required changes to configure are no more complex than how we currently handle ccache.
I have done some experiments and it seems to be working quite well. I can easily get build times of less than 2 minutes for "make exploded-image" using JOBS=100 to fully saturate a couple of extra hosts in the cluster. (I need to combine this with --enable-javac-server to get the java compilation to not be a bottleneck.)
This is likely not that interesting to automated, already distributed build systems, but for a developers day to day work, being attached to an icecream cluster could greatly reduce local compile times.
Icecream supports both linux and macosx but I have only tested this on linux myself. The implementation in configure will support both gcc and clang.
To use the feature, given that you have icecc installed and setup to join a cluster, make sure icecc is on the path and simply configure with --enable-icecc and it should all work automatically. Configure will generate the necessary compiler build environments that get sent to the build slaves and setup the needed make variables.
When enabling icecc, precompiled header is disabled. It is possible to get precompiled header to work with icecc, but the performance boost gets completely negated (and more) by the extra file transfer times of the precompiled header file, at least in my experience.
I have done some experiments and it seems to be working quite well. I can easily get build times of less than 2 minutes for "make exploded-image" using JOBS=100 to fully saturate a couple of extra hosts in the cluster. (I need to combine this with --enable-javac-server to get the java compilation to not be a bottleneck.)
This is likely not that interesting to automated, already distributed build systems, but for a developers day to day work, being attached to an icecream cluster could greatly reduce local compile times.
Icecream supports both linux and macosx but I have only tested this on linux myself. The implementation in configure will support both gcc and clang.
To use the feature, given that you have icecc installed and setup to join a cluster, make sure icecc is on the path and simply configure with --enable-icecc and it should all work automatically. Configure will generate the necessary compiler build environments that get sent to the build slaves and setup the needed make variables.
When enabling icecc, precompiled header is disabled. It is possible to get precompiled header to work with icecc, but the performance boost gets completely negated (and more) by the extra file transfer times of the precompiled header file, at least in my experience.