Problem compiling xrootd

hello rooters.

I am trying to compile the HEAD of Root with the Intel C++ compiler :
Intel® C++ Compiler for 32-bit applications, Version 8.1
Build 20040803Z Package ID: l_cc_p_8.1.021

I configured root :
./configure linuxicc
and started the build, which died at xrootd :
gmake[1]: Entering directory `/opt/root/xrootd/src/xrootd’
Making ouc component…

icc -c -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_ALL_SOURCE -D_REENTRANT -D_GNU_SOURCE -fPIC -rdynamic -ansi -D__linux__ -D__ICC__ -wd1224 -O3 -DXrdDEBUG=0 -I. -I… XrdOucLink.cc -o …/…/obj/XrdOucLink.o
/usr/include/netinet/in.h(482): error: invalid combination of type specifiers
extern int getipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(482): error: expected either a definition or a tag name
extern int getipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(488): error: invalid combination of type specifiers
extern int setipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(488): error: expected either a definition or a tag name
extern int setipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(496): error: invalid combination of type specifiers
extern int getsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(496): error: expected either a definition or a tag name
extern int getsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(503): error: invalid combination of type specifiers
extern int setsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(503): error: expected either a definition or a tag name
extern int setsourcefilter (int __s, uint32_t __interface,
^

compilation aborted for XrdOucLink.cc (code 2)
gmake[5]: *** […/…/obj/XrdOucLink.o] Error 2
gmake[4]: *** [Linuxall] Error 2
gmake[3]: *** [all] Error 2
gmake[2]: *** [XrdOuc] Error 2
gmake[1]: *** [all] Error 2
gmake[1]: Leaving directory `/opt/root/xrootd/src/xrootd’
gmake: *** [xrootd/src/xrootd/bin/xrootd] Error 2
I see references to /usr/include/netinet/in.h above, which is owned by the RPM package glibc-headers-2.3.3-82. I’m running Fedora Core 3 kernel 2.6.9-1.667

Any way to fix this error ?
Thanks,
Bruce

Hi Bruce,

obviously something seems to have changed in FC3’s headers. Can you compile using g++? If so I am afraid we have to wait for Intel to come with a version of icc that works with FC3. For the time being you can disable xrootd:

./configure linuxicc --disable-xrootd

I am in the process of installing FC3 to make an official ROOT port.

Cheers, Fons.

Hi Fons.

Thanks for the reply. I managed to compile the code, with one small bug related to mmx in asimage, with g++ on my new FC3 box. No matter how much I fudged and fiddled, I could not get ROOT to compile with icc - it died at other places, which is a pity :

icc -O -fPIC -wd1476 -Iinclude -wd1572 -pthread -o unix/src/TUnixSystem.o -c unix/src/TUnixSystem.cxx
/usr/include/netinet/in.h(482): error: invalid combination of type specifiers
extern int getipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(482): error: expected either a definition or a tag name
extern int getipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(488): error: invalid combination of type specifiers
extern int setipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(488): error: expected either a definition or a tag name
extern int setipv4sourcefilter (int __s, struct in_addr __interface,
^

/usr/include/netinet/in.h(496): error: invalid combination of type specifiers
extern int getsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(496): error: expected either a definition or a tag name
extern int getsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(503): error: invalid combination of type specifiers
extern int setsourcefilter (int __s, uint32_t __interface,
^

/usr/include/netinet/in.h(503): error: expected either a definition or a tag name
extern int setsourcefilter (int __s, uint32_t __interface,
^

compilation aborted for unix/src/TUnixSystem.cxx (code 2)
gmake: *** [unix/src/TUnixSystem.o] Error 2

Should I write to Intel ? GCC compiled ROOT is OK for me, but icc is so much faster…

thanks
Bruce