Build Environment Effort/Split Build
From Apache OpenOffice Wiki
		
		
		
Requirements
- 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):
| extern | 00:17:29 | 00:23:07 | 
| ure | 00:07:26 | 00:14:30 | 
| odk | 00:03:13 | 00:16:34 | 
| common | 00:19:05 | 00:25:45 | 
| content | 00:01:18 | 00:04:07 | 
| deployment | 00:01:23 | 00:03:43 | 
| gui | 00:11:04 | 00:15:33 | 
| framework | 00:25:51 | 00:27:55 | 
| binfilter | 00:17:37 | 00:28:51 | 
| toplevel | 00:10:43 | 00:14:46 | 
| base | 00:07:32 | 00:13:38 | 
| draw | 00:11:46 | 00:07:32 | 
| calc | 00:14:40 | 00:23:20 | 
| writer | 00:19:37 | 00:18:37 | 
| extensions | 00:01:20 | 00:03:20 | 
| packimages | 00:00:53 | 00:03:08 | 
| postprocess | 00:00:02 | 00:00:43 | 
| instset | 00:05:21 | 00:10:10 | 
| total | 02:56:20 | 04:15:19 | 
| “nothing to do” | 00:02:31 | 00:21:12 (00:06:24 without PCH) | 
Next steps
The huge "common" group could be split up. Here's a build dependency diagram of the modules in it:


