< https://github.com/jmcorgan/gnuradio/tree/fix-parallel-build >
The goal of this branch is to fix the parallel build issue that’s been
plaguing GNU Radio’s CMake build system pretty much since day 1. The
shortest explanation of this fix is that CMake has a bug in it when
handling multiple generated files in a single command. This bug has
been known for years in various versions, and is on the back burner for
them to fix as time allows someday. My fix is to explicitly spell out
to CMake the dependencies and commands to execute in order, rather than
trusting CMake to do it itself.
The issue manifests itself in the following way: After performing a
“make -j#” to completion with #>1, doing another “make” results in a
small number of SWIG-generated .cxx files being recompiled. This issue
happens more reliably with higher "#"s – about 25% of the time when
using “-j8” on my Mac OS X box.
I encourage anybody interested to check out this branch and give it a
test using “make -j” or “make -j8” or whatever works on your system with
#>1. In testing thus far, this change actually allows for -more-
parallelism in builds than without it; and, it has thus far functioned
flawlessly using CMake 2.6, 2.8, and 3.0.
If you do testing, feel free to reply to the group or email me directly
with your successes or failures. Try touching headers (.h and .i) and
sources to see if rebuilding happens correctly.
Thanks in advance for any feedback on this change. - MLD
Michael D., OSX Programmer
Ettus R. Technical Support
Email: [email protected]