[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

20030520: McIDAS with g77



>From:  "Bill Godfrey" <address@hidden>
>Organization:  NOAA
>Keywords:  200305201633.h4KGXFLd015826 McIDAS-X g77

Hi Bill,

>I was given your name as a possible source of information about
>compiling McIDAS with g77. I am attempting to install McIDAS with g77 on
>Red Hat Linux 9 here at NOAA in Camp Springs, MD, and have succeeded to
>the point of getting it to compile without any fatal errors that might
>halt the install scripts.

The Unidata distribution of McIDAS supports use of the gcc/g77
combination as the preferred non-vendor compilers.

>I had to make some changes to "geo.pgm" and
>"sndskewt.pgm" to correct some compile-time errors, and of course
>"mccomp".

I had to change:

McIDAS-X:

mccomp.sh
gms5_nav.for
batch.pgm
geo.pgm
sndskewt.pgm

McIDAS-XCD:

M0buildidt.c
xcdrelay.cp

There may be others that I did not completely document as being needed
by g77 use.

>The only change I made to "mccomp" was to change "fc=mcfc" to
>"fc=g77" in one place.

I added code needed to support both gcc/f2c/mcfc and gcc/g77.

>Any additional information you can provide about problems you have
>encountered would be greatly appreciated.

What specific problems are you running into?  I have not yet tried to
build on RH 9, so some of the things you are seeing may be new to me.
I do, however, routinely build on RH 6.x, 7.x, and 8.0 and have not
seen run into any problems running the executables built with gcc/g77.

When I did my initial run at supporting gcc/g77, I had to modify
something like 100 McIDAS routines.  I tried to get all of those mods
into core (I have CVS access), but I find that new routines (like
geo.pgm) will repeat some of the same mistakes that I fixed in older
routines.  The biggest problem was in Fortran subroutines' use of
initialized (non-zeroed) variables.  While gcc/f2c/mcfc and vendor
Fortran compliers set all Fortran variables to zero, g77 does not.
There is a flag you can specify to g77 telling it to zero all
variables/arrays, but this is done in a way that balloons the size of
executables by up to a factor of 3.  I found it easier to simply
compile each Fortran module with FFLAGS set to '-O -Wuninitialized
-fno-automatic'; look through the makelog file looking for warnings
about possibly uninitialized variables; and then read the code and
decide if the variables were actually uninitialized and fix ones that
were.

By the way, the set of flags I have users define when building McIDAS
under linux is:

CC=gcc
CPPFLAGS="-DNDEBUG -Df2cFortran"
CFLAGS=-O
FC=g77
FFLAGS="-O -Wuninitialized -fno-automatic"
CXX=

The CPPFLAGS and CXX values are set this way for the netCDF portion of
the McIDAS build.

>If you are still running into
>problems I will be happy to share whatever I might learn when I run into
>them too.

I am pretty happy with what I have so far for using gcc/g77, but I am
always eager to hear other user's perspectives since there may be an
area of McIDAS that I am not exercising that is still broken.

I can let you have access to my distribution of McIDAS-X if you are
interested please let me know.

Cheers,

Tom
--
+-----------------------------------------------------------------------------+
* Tom Yoksas                                             UCAR Unidata Program *
* (303) 497-8642 (last resort)                                  P.O. Box 3000 *
* address@hidden                                   Boulder, CO 80307 *
* Unidata WWW Service                             http://www.unidata.ucar.edu/*
+-----------------------------------------------------------------------------+


NOTE: All email exchanges with Unidata User Support are recorded in the Unidata inquiry tracking system and then made publicly available through the web. If you do not want to have your interactions made available in this way, you must let us know in each email you send to us.