Compiling Root with Open64 5.0

Dear Rooters,

I’d like to compile root with open54 5.0 due to the bulldozer optimisations coming along. For this, I downloaded 5.32.03 and issued the following configure command:

./configure --enable-python --with-thread-libdir=/usr/lib --enable-roofit --enable-mathmore --enable-roofit --enable-minuit2 --with-cc="opencc -O3 -fno-math-errno -ffast-math -march=bdver1 -OPT:Ofast" --with-cxx="openCC -O3 -fno-math-errno -ffast-math -march=bdver1 -OPT:Ofast" --with-ld="openCC -O3 -fno-math-errno -ffast-math -march=bdver1 -OPT:Ofast" --build=debug

Upon compiling (which produces a lot of warnings), I keep being stuck with the following error message.

$ make
...
bin/rmkdepend -R -fcint/cint/src/dict/libstrm.d -Y -w 1000 -- -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude  -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__STD_EXCEPTION -DG__64BIT -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/fastfs/steinba/root53203/cint/cint/inc -I/fastfs/steinba/root53203/cint/cint/src -I/fastfs/steinba/root53203/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -D__cplusplus -- cint/cint/src/dict/libstrm.cxx
openCC -O3 -fno-math-errno -ffast-math -march=bdver1 -OPT:Ofast -g -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude  -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__STD_EXCEPTION -DG__64BIT -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/fastfs/steinba/root53203/cint/cint/inc -I/fastfs/steinba/root53203/cint/cint/src -I/fastfs/steinba/root53203/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -o cint/cint/src/dict/libstrm.o -c cint/cint/src/dict/libstrm.cxx
In file included from /sw/global/compilers/open64/5.0/open64-gcc-4.2.0/bin/../lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/backward/iostream.h:31,
                 from cint/cint/lib/stream/iostrm.h:24,
                 from cint/cint/src/dict/libstrm.h:37,
                 from cint/cint/src/dict/libstrm.cxx:14:
/sw/global/compilers/open64/5.0/open64-gcc-4.2.0/bin/../lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
In file included from cint/cint/src/dict/libstrm.h:39,
                 from cint/cint/src/dict/libstrm.cxx:14:
cint/cint/lib/stream/stdiostr.h:27:25: error: stdiostream.h: No such file or directory
In file included from cint/cint/src/dict/libstrm.h:41,
                 from cint/cint/src/dict/libstrm.cxx:14:
cint/cint/lib/stream/strstrm.h:25:23: error: strstream.h: No such file or directory
make: *** [cint/cint/src/dict/libstrm.o] Error 1

This seems to be caused by include statements of STL string/stream handling libs in CINT. Any help would be appreciated.

Cheers -
P

Yes the CINT makefile has to be updated to support an alternative compiler like openCC. Have a look in cint/cint/Module.mk.

Cheers, Fons.

Dear all,

I’m also trying to compile root with open64 5.0 but I do not succeed.
Here is my options :

./configure --prefix=/home/gjegou/programs/root/root_v5.34.02_open64/install/ --with-cc="opencc" --with-cxx="openCC" --with-ld="openCC"

I went into the same error as psteinb, but I tried to turn around by changing stdiostream into iostream in cint/cint/lib/stream/stdiostr.h and cint/cint/lib/stream/strstrm.h

Then I get the following errors:

bin/rmkdepend -R -fcint/cint/src/dict/libstrm.d -Y -w 1000 -- -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG  -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__STD_EXCEPTION -DG__64BIT -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/inc -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/src -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -D__cplusplus -- cint/cint/src/dict/libstrm.cxx
openCC -O2 -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG  -DG__REGEXP -DG__UNIX -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -DG__REDIRECTIO -DG__STD_EXCEPTION -DG__64BIT -DG__HAVE_CONFIG -DG__NOMAKEINFO -DG__CINTBODY  -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/inc -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/src -I/home/gjegou/programs/root/root_v5.34.02_open64/cint/cint/src/dict -pthread -Icint/cint/lib/libstrm -Icint/cint/lib/stream -I. -o cint/cint/src/dict/libstrm.o -c cint/cint/src/dict/libstrm.cxx
In file included from /opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/backward/iostream.h:31,
                 from cint/cint/lib/stream/iostrm.h:24,
                 from cint/cint/src/dict/libstrm.h:37,
                 from cint/cint/src/dict/libstrm.cxx:14:
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/streambuf: In function 'int G__G__stream_0_1_0(G__value*, const char*, G__param*, int)':
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/streambuf:763: error: 'typename _Traits::int_type std::basic_streambuf<_CharT, _Traits>::overflow(typename _Traits::int_type) [with _CharT = char, _Traits = std::char_traits<char>]' is protected
cint/cint/src/dict/libstrm.cxx:42: error: within this context
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/streambuf:763: error: 'typename _Traits::int_type std::basic_streambuf<_CharT, _Traits>::overflow(typename _Traits::int_type) [with _CharT = char, _Traits = std::char_traits<char>]' is protected
cint/cint/src/dict/libstrm.cxx:45: error: within this context
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/streambuf: In function 'int G__G__stream_0_2_0(G__value*, const char*, G__param*, int)':
/opt/open64/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/../../../../include/c++/4.2.0/streambuf:683: error: 'typename _Traits::int_type std::basic_streambuf<_CharT, _Traits>::underflow() [with _CharT = char, _Traits = std::char_traits<char>]' is protected
cint/cint/src/dict/libstrm.cxx:53: error: within this context
...
...
make: *** [cint/cint/src/dict/libstrm.o] Error 1

This kind of errors continue

So my modifications don’t seem to be a good idea.

Do you have any suggestions ? I am not running root interpreter on this machine, I only need TH3 and TFile libs to link in my geant4 code.

Any help would be appreciated

Best regards
Guillaume

Hi,

look in cint/cint/Module.mk and make sure that open64 uses gcc4strm.cxx, like gcc 4 and clang. Assuming that gcc4strm.cxx will work.

Cheers, Fons.

Great, it works.
Here are the added lines in cint/cint/Module.mk

in the bloc : ##### libCint #####

ifneq ($(OPENCC_MAJOR),4)
CINTS2       := $(filter-out $(MODDIRSD)/libstrm.%,$(CINTS2))
CINTS2       += $(MODDIRSD)/gcc4strm.cxx
endif

in the bloc : ##### iosenum.h #####

ifneq ($(OPENCC_MAJOR),4)
IOSENUMA     := $(CINTDIRIOSEN)/iosenum.$(ARCH)3
else
...
endif

Is there a flag “Solved” I should check ?

Thank you for your help.
Best regards
Guillaume