Build Environment Effort/Split Build
- The split parts should be buildable in an acceptable time.
- The split should group modules together that have something in common.
- The boundaries between the groups should be along stable APIs where they exist code and non-code modules should be separated.
- There should be no cross build dependencies between groups (module A in group 1 depends on module B in group 2 and module C in group 2 depends on module D in group 1).
- There should be no cross runtime dependencies between groups (module A in group 1 depends on module B in group 2 and module C in group 2 depends on module D in group 1).
Proposal for a code architecture
Based on the investigations described here I have a first proposal for an architecture supporting a split build:
I made tests on two platforms (Ubuntu Jaunty, Windows with PCH). Here are some results for Linux (all data has been collect on my Toshiba Tecra M5 notebook with 2 GHz Core 2 Duo and 4 GB RAM):
|“nothing to do”||00:02:31||00:21:12 (00:06:24 without PCH)|
The huge "common" group could be split up. Here's a build dependency diagram of the modules in it: