Re: [ROOT] compatibilities w. libstdc++

From: Brett Viren (bv@bnl.gov)
Date: Tue Sep 24 2002 - 19:49:42 MEST


Hi Rene,

Rene Brun writes:
 > The current version of ROOT 3.03/09 compiles and executes without
 > problems on RH7.2, RH7.3 with gcc2.95.3, gcc2.96, gcc3.0, gcc3.1, gcc3.2.

Ah, so the "make cintdlls" works for 3.2 now.  Great, I'll check it
out.

 > We provide binary versions for RH7.2 with gcc2.95.3, gcc2.96 and gcc3.2
 > see: http://root.cern.ch/root/Version303.html
 > 
 > When installing from source, no modifications of the Makefile
 > are required.

Well, yes and no.  

If interested in the tedious details of the "no" then read on:


I need to use the non-system GCC 3.0.4 because Debian's system GCC
(v2.95.4) has bugs with exception handling and optimization.  This
means I need to tell ROOT's Makefiles to use the compiler executables
installed as "gcc-3.0", "g++-3.0", etc, instead of plain "gcc", "g++",
etc.  

To do this I edit the config/Makefile.linux and set:

CXX = g++-$(GCC_VERSION)
CC = gcc-$(GCC_VERSION)
LD = g++-$(GCC_VERSION)
F77 = g77-$(GCC_VERSION)

(I also must set F77LIBS to add -lfrtbegin if using GCC 3.2)

Here, GCC_VERSION is an external env. var. which I set to "3.0" for
GCC 3.0, "3.2" for GCC 3.2, etc.

A better, general solution would be to wrap all the CXX, CC, etc
variables in ifndef/endif protection, ie:

ifndef CXX
CXX = g++
endif

This lets the user override them in the usual autoconf-ish way.  This
could be incorporated into the official Makefile.*'s w/out affecting
those who's system GCC's are sufficient.

-Brett.



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:11 MET