Linux Compile Notes: /lib/cpp, MPICH, etc.

Gentle users,

This entry concerns some works around for Linux compiles. Thanks for the note, Bart.

-Rotang, May 4, 2001



From: Brashers,Bart [Bart.Brashers@mfgenv.com]
Sent: Friday, May 04, 2001 11:22 AM
Subject: Some adjustments to section 7g. of configure.user (Linux Cluster)


Dear Rotang,

I recently got MM5 MPP up and running on a small cluster of 1.5 GHz P-IVs,
using RedHat 7.0, MPICH 1.2.1 and pgf77 3.2-4.  I ran into a few troubles,
so I thought I'd share the changes I had to make with you.

In configure.user, in section "7g. Linux PCs", the line:

 CPP = /lib/cpp -C -P 

should read

 CPP = /lib/cpp -C -P -traditional

Sometime recently, the author of Linux cpp decided it should no longer be
used to parse FORTRAN code.  The man page for cpp version 2.96 says:

 The C preprocessor is intended only for macro processing of C, C++ and
 Objective C source files.  For macro processing of other files, you
 are strongly encouraged to use alternatives like M4, which will likely
 give you better results and avoid many problems.  For example,
 normally the C preprocessor does not preserve arbitrary whitespace
 verbatim, but instead replaces each sequence with a single space.

This affects the label field (statement numbers):

% cat test.F
   10 continue
 23   continue
 9999 continue
% cpp -C -P test.F
   10 continue
 23 continue
 9999 continue

This causes the parser in FLIC to fail on some dozen files, e.g. addall.F,
since it moves code into the continuation and label columns.  Using the
-traditional flag overcomes this 'error'.  cpp still works 'correctly' on
SunOS 5.8, by the way.

Also in configure.user, in section "7g. Linux PCs", the line :

 CFLAGS = -DMPI -I/usr/local/mpi/include

should probably read 

 CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include

The only problem I had compiling MPICH 1.2.1 was that I had an alias (as
root) for /usr/bin/find, which caused ./configure to fail.  After `unalias
find` it worked ok.  That and I don't have all the java stuff (swing libs, a
functioning javac) to compile the mpe part, so I used --without-mpe.  

Bart
--
Bart Brashers                   MFG Inc.
Air Quality Meteorologist       19203 36th Ave W Suite 101
bart.brashers@mfgenv.com        Lynnwood WA 98036-5707
http://www.mfgenv.com           425.921.4000 Fax: 425.921.4040