Open GoogleCodeExporter opened 9 years ago
One seems to have to unpack and build bin-utils and then handcraft the Makefile
to include libiberty.h from bin-utils, and also tell GNU to ignore:
char-subscripts warnings.
But the compilation fails with:
gcc -DHAVE_CONFIG_H -D_GNU_SOURCE -DSYSCONFDIR="\"/usr/local/etc\""
-DPKGDATADIR="\"/usr/local/share/distcc\"" -Isrc -I"./src" -I"./lzo"
-I"../binutils-2.23/include" -Werror -Wno-error=char-subscripts -g -O2 -MD -W
-Wall -Wimplicit -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings
-Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs
-Wmissing-declarations -Wuninitialized -o src/exec.o -c src/exec.c
In file included from /usr/include/w32api/wtypes.h:7:0,
from /usr/include/w32api/winscard.h:10,
from /usr/include/w32api/windows.h:97,
from src/exec.c:65:
src/rpc.h:27:5: error: conflicting types for ‘dcc_x_result_header’
int dcc_x_result_header(int ofd, enum dcc_protover);
^
In file included from /usr/include/w32api/windows.h:88:0,
from src/exec.c:65:
src/rpc.h:27:5: note: previous declaration of ‘dcc_x_result_header’ was here
int dcc_x_result_header(int ofd, enum dcc_protover);
^
In file included from /usr/include/w32api/wtypes.h:7:0,
from /usr/include/w32api/winscard.h:10,
from /usr/include/w32api/windows.h:97,
from src/exec.c:65:
There many error messages that follow this, too numerous to list here.
At least Cygwin comes with distcc 2.18.3 (24.04.2005)
Original comment by jt.big...@googlemail.com
on 16 Nov 2013 at 8:38
There's a couple of different issues here.
1. libiberty.
Cause:
It looks like the libiberty issue was introduced by
https://code.google.com/p/distcc/source/detail?r=774
r774 | mandyke@gmail.com | 2013-05-08 15:21:45 +0100 (Wed, 08 May 2013) | 3
lines
Support @FILE arguments correctly. Requires GNU libiberty.
That change did update the INSTALL file to say that GNU libiberty was a build
prerequisite.
Possible solutions:
- One possibility would be to include GNU libiberty in the distcc distribution.
- Another possibility would be to improve the documentation in the INSTALL file
about the required prerequisites and in particular to explain how to install
the required prerequisites for Cygwin.
2. dcc_x_result_header.
Cause:
The error that you are seeing there comes from a conflict between distcc's
"rpc.h" header file and a system header of the same name that is included by
/usr/include/w32api/wtypes.h. This conflict causes distcc's "rpc.h" to get
wrongly included by wtypes.h, which then results in compilation errors because
distcc's "rpc.h" has been included prior to including "distcc.h" which declares
the dcc_x_result_header enum.
Non-solutions:
Including distcc.h earlier (or other modifications relating to how the
dcc_x_result_header enum is declared) would likely not be sufficient to solve
the problem, since wtypes.h presumably really needs the system <rpc.h> file.
Even if such an approach did work, it would be fragile.
Solutions:
There are a couple of possible fixes. One would be to rename distcc's "rpc.h"
to something else, e.g. "dcc_rpc.h". Another would be to change distcc's
Makefile.in to use "-iquote " instead of "-I"; to make that portable it would
require a test in configure.ac to determine whether the compiler supports
"-iquote".
Either would be acceptable IMHO.
Original comment by fergus.h...@gmail.com
on 18 Nov 2013 at 10:40
Original issue reported on code.google.com by
jt.big...@googlemail.com
on 16 Nov 2013 at 12:35