Installation failure: __BEGIN_DECLS#ifndef... not found

I’m trying to compile ROOT version 5.12.00f on a x86 Gentoo Linux machine, glibc 2.3.6.
The failure happens with this sympthom:

cint/main/cint_tmp -K -w1 -zipc -ncint/lib/G__c_ipc.c -D__MAKECINT__ -DG__MAKECINT \
        -c-2 -Z0 cint/lib/ipc/ipcif.h
Error: Symbol __BEGIN_DECLS#include is not defined in current scope  /usr/include/sys/types.h:35:
Error: Symbol bits is not defined in current scope  /usr/include/sys/types.h:35:
Error: Symbol types is not defined in current scope  /usr/include/sys/types.h:35:
Error: Failed to evaluate types.h
Error: operator '/' divided by zero /usr/include/sys/types.h:35:
Error: Symbol #ifdef__USE_BSD#ifndef__u_char_definedtypedef__u_charu_char is not defined in current scope  /usr/include/sys/types.h:35:
!!!Removing cint/lib/G__c_ipc.c cint/lib/G__c_ipc.h !!!
make: *** [cint/lib/G__c_ipc.c] Error 1
make: *** Waiting for unfinished jobs....
rm cint/lib/dll_stl/G__cpp_map.o cint/lib/dll_stl/G__cpp_multiset.o cint/lib/G__c_stdcxxfunc.c cint/lib/dll_stl/G__cpp_set.o cint/lib/dll_stl/G__cpp_deque.o cint/lib/dll_stl/G__cpp_list.o cint/lib/dll_stl/G__cpp_multimap.o

(working directory was the main sources directory).

It seems it did not find or understand the glibc header (sys/cdefs.h) which defined what __BEGIN_DECLS is (namely, an ‘extern “C” {’ line, or nothing if in C mode). If I used “-p” option, it would succeed with some warning like the following:

Note: Link requested for undefined class timespec (ignore this message) :0:

Using cpp instead of cint_tmp, the pre-compilation works fine.

How could I get rid of that error?

Gentoo default-linux/x86/2006.0, gcc-3.4.6, glibc-2.3.6-r5, 2.6.18-gentoo-r2 i686
Last Sync: Sun, 12 Nov 2006 12:50:01 +0000


you’d either have to change the rule which invokes cint_tmp for the ipc dictionary, so it gets called with -p, or update to a newer root version. If I remember correctly this has been fixed a few months ago.

Cheers, Axel.

I confirm and thank you.
ROOT 5.13/04 compiles fine.