responses from the cmake developers

Thiago Macieira thiago at kde.org
Thu Jun 16 23:54:12 BST 2005


Alexander Neundorf wrote:
>> if I understood this correctly, this is like make -j, but it links
>> only in one process, only the compiling works in more processes. This
>> is useful for network-compiling (distcc, icecream, etc.). I guess you
>> can't do anything about this, since this depends on the buildtool.
>
>make -j can do this.  Also distcc can be used with cmake, also with the
>Xcode
>generator it supports this.  So, if the native build system has it, so
> do we.

No, make -j can't do it.

If I launch make -j6 (because I have 3 computers and I think 2 processes 
per computer is better), there is the possibility that make will launch 6 
"ld" at the same time -- mainly at the end of the compilation.

Linking takes a lot of memory and disk I/O, so I don't want several 
linkers running at the same time. make can't split that.

There are only two ways to fix this:
1) the build tool knows the difference between compiling (distributable) 
and non-compiling (non-distributable) jobs

or
2) the linker implements locking, so that it can't be launched more than 
once, simultaneously

On top of all that, the build tool has to be smart enough to realise that 
it shouldn't leave all the linking to the end, and instead schedule 
linking as early as possible. Linking can't be distributed, so if linkers 
are running and the compilation is done, several machines may be idle.

-- 
  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

1. On frumscafte, hwonne time_t wæs náht, se scieppend þone circolwyrde 
wundorcræftlíge cennede and seo eorðe wæs idel and hit wæs gód.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20050616/171b7ba2/attachment.sig>


More information about the kde-core-devel mailing list