I make some progress understanding why I find it hard to use Icc with distcc. I face several problems, some of them might be already known.
Currently, I use the following wrapper to make sure Icc understands what .ii is about: /tmp % cat =icc nostromo 18:54 #! /bin/sh # ICC needs to be taught that *.ii is C++. # The wonderful news is that: # # % /home/lrde/lrde/usr/bin/icc I-dont-exist # ld: cannot open I-dont-exist: No such file or directory # % /home/lrde/lrde/usr/bin/icc -c I-dont-exist # # icc per se does not complain about missing files... That's # why understanding the problems takes so long.... case "$@" in *.cc*|*.cpp*) set -- -Kc++ "$@" ;; esac exec /usr/bin/distcc /home/lrde/lrde/usr/bin/icc "$@" But I face another problem, related to Automake's depcomp. I don't know if the issue is known: | /tmp % cat error.cc nostromo 18:55 | int foo () { return 1;} | int foo () { return 1;} A broken source. | /tmp % /home/lrde/lrde/usr/bin/icc error.cc -c nostromo 18:55 | error.cc(2): error: function "foo" has already been defined | int foo () { return 1;} | ^ An expected failure when attacking directly the compiler. | /tmp % /home/lrde/lrde/usr/bin/icc error.cc -c -MD -MF foo.Po nostromo Err 2 | error.cc(2): error: function "foo" has already been defined | int foo () { return 1;} | ^ Likewise with Automake's flags to compute the dependencies. But when I used distcc, all is lost with the -MD flags | /tmp % distcc /home/lrde/lrde/usr/bin/icc -Kc++ error.cc -c nostromo 18:58 | error.cc(2): error: function "foo" has already been defined | int foo () { return 1;} | ^ | | compilation aborted for /tmp/distcc_106/server_0000031068.ii (code 2) | distcc[31066] ERROR: compile on nostromo failed with exit code 2 | /tmp % distcc /home/lrde/lrde/usr/bin/icc -Kc++ error.cc -c -MD -MF foo.Po | /tmp % If someone has an idea...