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

20030804: udunits on cygwin



Connor,

>Date: Mon, 04 Aug 2003 14:11:36 -0700
>From: "Flynn, Connor J" <address@hidden>
>Organization: NOAA/PNL
>To: Steve Emmerson <address@hidden>
>Subject: RE: 20030804: udunits on cygwin

The above message contained the following:

> I've cc'd the developer (Jason Christy) working for me that actually
> understands what is going on (at least much better than I).  Please
> include Jason on further contact because I'll soon be out of my depth.
...

> Well I'll be...  I didn't believe you at first and proceeded to dig deep
> inside your make files and Cywgin bash and sh to prove it to myself.
> You're absolutely right.  
> 
> Anyway, I guess Cygwin users should be instructed to alter their
> environment space and change the input files.  Instead of changing the
> configure script I also tried modifying src\port\master.mk.in file to
> reverse the test for C vs C++ (so the case-insensitive test defaults to
> C) as below:
> 
> dummy_prog $(PROGRAM):        $(OBJS)
>       @if [ -r address@hidden -o -r address@hidden ]; then \
>           ld='$(FC) -o $@ $(FFLAGS)'; \
>       elif [ -r address@hidden ]; then \
>           ld='$(CC) -o $@ $(CFLAGS)'; \
>       elif [ -r address@hidden -o -r address@hidden ]; then \
>           ld='$(CXX) -o $@ $(CXXFLAGS)'; \
>       else  \
>           ld='$(CC) -o $@ $(CFLAGS)'; \
>       fi; \
> 
> This works too.
> 
> At this point, the cygwin user need only add one environment variable
> (apparently any of the fortran flags) and make one change to the
> master.mk.in file above.  
> 
> Which brings me back to the Fortran flag.  If UDUNITS doesn't use the
> fortran compiler, then why check for it?  Can you please explain?

The UDUNITS package doesn't use a Fortran compiler, but it does build a
Fortran-callable interface from C code.  Because the argument-passing
conventions used by Fortran are compiler-dependent, the C compiler must
be told what set of conventions to use.  This is the reason for defining
a particular C macro in the CPPFLAGS environment variable from the
candidates in the file "cfortran.h".

If the Fortran interface of the UDUNITS package won't be used, then it
doesn't matter which C macro is defined -- only that one is.  If the
Fortran interface will be used, then it is necessary to define the
appropriate C macro.

> Ciao for now!
> Connor 

Regards,
Steve Emmerson


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.