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...


Reply via email to