Accelerating the Build Process of the ACE/TAO/CIAO middleware
ACE/TAO/CIAO/DAnCE is a middleware suite that consists of several core libraries and thousands of examples and tests. The ACE package contains around 560k lines of C++ code, the TAO package 1,200k lines of C++ code, and the CIAO/DAnCE packages add another 200k lines of C++ code. This all excludes the generated code by TAO_IDL.
Using Microsoft's Visual Studio, a full debug clean and build would normally take around 6 hours on a single CPU. Compiling the core libraries would often take over an hour. An additional problem was that, even after compilation, Microsoft's Visual Studio dependency checker regularly skipped files that should have been compiled, causing bizarre link-time and run-time errors. Often the only solution to fix such a corrupt build would be a full clean and compile.
On Linux we are using GNU parallel make but also there we have long compile times which are costing time when trying to make fast iterations. On Linux the solution is to use Icecream. Icecream is currently part of the OpenSuSE and Fedora releases. When using Icrecream you are running a central scheduler with daemons on various systems. You can than leverage the performance of other nodes in your network.
On Windows the solution is to use IncrediBuild. It also uses a central Coordinator and you can use the resources of other nodes in your network. Compiling the TAO_ACE solution (195 projects) normally took around 35 minutes on our dual core build system. Using IncrediBuild with 7 remote systems (19 cores in total) reduced this time to 8 minutes. The local build system is mostly busy generating code using the TAO_IDL compiler and linking all results. The remote systems are used to compile the source code.
An additional benefit is that IncrediBuild recalculates dependencies before each and every build. Whilst recalculating dependencies with Microsoft Visual Studio would typically take several minutes, and often goes wrong since it ignores code in header and inline files, IncrediBuild gets it right every time.
Icecream is available as open source from various sources. Incredibuild is a commercial tool for which you can obtain an evaluation license from Xoreax. If you decide to buy a license please refer to this article.