On May 31, 2012, at 7:29 AM, Jeff Squyres wrote:

>>> We should have AC macros for all of these already.
>> 
>> OK, I'll try find them to support (1) usecase described below.
> 
> No, I'll find them -- sorry, I meant to look them up before I sent the last 
> mail.  Let me look them up and get back to you.  Our configury is quite 
> complicated, and I know the right places to look.  :-)

Ok, this might get a little complicated.  You'll probably need to use a pair of 
them (this is trunk only; it's different in v1.6 because we wholly revamped the 
trunk's Fortran support recently):

1. You can see all the OMPI_HAVE_FORTRAN_<type>'s at the top of mpi.h.in.  
These indicate whether the Fortran compiler supports these types or not.

2. We currently define *one* Fortran type in mpi.h.in: ompi_fortran_integer_t.  
It looks like we need to add the rest of them: ompi_fortran_<type>_t (these are 
all in opal/include/opal_config.h, but mpi.h is a standalone, user-includeable 
file, which is why it replicates a subset of all the configure-generated 
results).  Here's a first stab at what I think will be needed in mpi.h.in:

-----
/* A bogus type that allows us to have sentinel type values that are still
   valid */
#define ompi_fortran_bogus_type_t int

/* C type corresponding to Fortran CHARACTER */
#undef ompi_fortran_character_t 

/* C type corresponding to Fortran COMPLEX*16 */
#undef ompi_fortran_complex16_t

/* C type corresponding to Fortran COMPLEX*32 */
#undef ompi_fortran_complex32_t

/* C type corresponding to Fortran COMPLEX*4 */
#undef ompi_fortran_complex4_t

/* C type corresponding to Fortran COMPLEX*8 */
#undef ompi_fortran_complex8_t

/* C type corresponding to Fortran COMPLEX */
#undef ompi_fortran_complex_t

/* C type corresponding to Fortran DOUBLE COMPLEX */
#undef ompi_fortran_double_complex_t

/* C type corresponding to Fortran DOUBLE PRECISION */
#undef ompi_fortran_double_precision_t

/* C type corresponding to Fortran INTEGER*16 */
#undef ompi_fortran_integer16_t

/* C type corresponding to Fortran INTEGER*1 */
#undef ompi_fortran_integer1_t

/* C type corresponding to Fortran INTEGER*2 */
#undef ompi_fortran_integer2_t

/* C type corresponding to Fortran INTEGER*4 */
#undef ompi_fortran_integer4_t

/* C type corresponding to Fortran INTEGER*8 */
#undef ompi_fortran_integer8_t long

/* C type corresponding to Fortran INTEGER */
#undef ompi_fortran_integer_t

/* JMS -- ^^ might as well put the existing ompi_fortran_integer_t in the 
middle of the list here, with all the rest */

/* C type corresponding to Fortran LOGICAL*1 */
#undef ompi_fortran_logical1_t

/* C type corresponding to Fortran LOGICAL*2 */
#undef ompi_fortran_logical2_t

/* C type corresponding to Fortran LOGICAL*4 */
#undef ompi_fortran_logical4_t

/* C type corresponding to Fortran LOGICAL*8 */
#undef ompi_fortran_logical8_t long

/* C type corresponding to Fortran LOGICAL */
#undef ompi_fortran_logical_t

/* C type corresponding to Fortran REAL*16 */
#undef ompi_fortran_real16_t long

/* C type corresponding to Fortran REAL*2 */
#undef ompi_fortran_real2_t

/* C type corresponding to Fortran REAL*4 */
#undef ompi_fortran_real4_t

/* C type corresponding to Fortran REAL*8 */
#undef ompi_fortran_real8_t

/* C type corresponding to Fortran REAL */
#undef ompi_fortran_real_t
-----

Does clang link together with gfortran?  I.e., does the following work:

    ./configure CC=clang CXX=clang++ FC=gfortran ...

-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to