Jon A. Cruz wrote:
The paper "Recursive Make Considered Harmful" does a good job exploring these issues, including file system access and dependency graph generation.
I read that paper :) and agree with the conclusions. When I do any substantial build system work, I will run some benchmarks. First I will try Waf, and if it's not enough I'll go with CMake.
Regarding the monolithic library - I agree that this is a serious performance hit. However, the dependencies between directories are not specified and everything tends to depend on everything. Putting all things in a single library was the only way to get rid of the situation where a Windows developer adds some code and it builds correctly for him, and when he commits the build is broken for the Unix developers, which then have to conduct dark rituals and move files to unrelated directories to fix the build. If we clearly specify the dependencies between our subsystems so that there are no cyclic dependencies, we can go back to building several static libraries.
From the discussion, it looks like:
- 0.47 was a mixed refactoring / feature cycle. - 0.48 will be an infrastructure work cycle (merging GSoC work, build system and DVCS changes). I think we should try to rip out the GDL dependency during this cycle too, as it fits with the theme. - 0.49 should be a heavy refactoring cycle where we look hard at the SP tree, the renderer, etc.
Regards, Krzysztof Kosiński