
Older gfortran compilers (e.g., the gfortran that ships in RHEL5) do not support ISO_C_BINDING, and therefore do not support the TYPE(C_PTR) type. As such, they cannot support the overloaded interfaces for MPI_WIN_ALLOCATE_SHARED and MPI_SHARED_QUERY that are mandated in MPI-3. So we separate those interfaces out into a separate .F90 file that is #include'd in the tkr mpi.F90 file. In this separate .F90 file, we use an #if to determine whether the compiler supports ISO_C_BINDING or not. Also re-jiggered the order of testing in ompi_setup_mpi_fortran.m4: we now need to test whether the compiler supports ISO_C_BINDING even when we're only building the mpi module (not strictly when we're building the mpi_f08 module). Finally, tweaked the use-mpi-tkr/Makefile.am to: * Add some proper dependencies for mpi.F90 * Allow the general AM compilation to be used instead of supplying a specific rule for compiling mpi.F90 cmr=v1.8.2:ticket=trac:4736 This commit was SVN r32204. The following Trac tickets were found above: Ticket 4736 --> https://svn.open-mpi.org/trac/ompi/ticket/4736
113 строки
4.1 KiB
Fortran
113 строки
4.1 KiB
Fortran
! -*- fortran -*-
|
|
!
|
|
! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved.
|
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
|
! All rights reserved.
|
|
!
|
|
! $COPYRIGHT$
|
|
!
|
|
! Additional copyrights may follow
|
|
!
|
|
! $HEADER$
|
|
!
|
|
|
|
! This file exists to have a Fortran-safe header file that has
|
|
! results from configure tests.
|
|
|
|
#ifndef OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
|
#define OMPI_FORTRAN_CONFIGURE_OUTPUT_H
|
|
|
|
! Whether we're building the MPI IO interface or not
|
|
#define OMPI_PROVIDE_MPI_FILE_INTERFACE @OMPI_PROVIDE_MPI_FILE_INTERFACE@
|
|
|
|
! Whether we're using wrapper F08 functions or not
|
|
#define OMPI_FORTRAN_NEED_WRAPPER_ROUTINES @OMPI_FORTRAN_NEED_WRAPPER_ROUTINES@
|
|
|
|
! Whether we have PRIVATE or not
|
|
#define OMPI_FORTRAN_HAVE_PRIVATE @OMPI_FORTRAN_HAVE_PRIVATE@
|
|
|
|
! Whether we have PROTECTED or not
|
|
#define OMPI_FORTRAN_HAVE_PROTECTED @OMPI_FORTRAN_HAVE_PROTECTED@
|
|
|
|
! Whether we have ABSTRACT or not
|
|
#define OMPI_FORTRAN_HAVE_ABSTRACT @OMPI_FORTRAN_HAVE_ABSTRACT@
|
|
|
|
! Whether we have ASYNCHRONOUS or not
|
|
#define OMPI_FORTRAN_HAVE_ASYNCHRONOUS @OMPI_FORTRAN_HAVE_ASYNCHRONOUS@
|
|
|
|
! Whether we have ISO C binding or not
|
|
#define OMPI_FORTRAN_HAVE_ISO_C_BINDING @OMPI_FORTRAN_HAVE_ISO_C_BINDING@
|
|
|
|
! Whether we are building the MPI F08 bindings with subarray support or not
|
|
#define OMPI_FORTRAN_SUBARRAYS_SUPPORTED @OMPI_FORTRAN_SUBARRAYS_SUPPORTED@
|
|
|
|
! Line 1 of the ignore TKR syntax
|
|
! ...JMS not figured out yet...
|
|
|
|
! Line 2 of the ignore TKR syntax
|
|
#define OMPI_FORTRAN_IGNORE_TKR_TYPE @OMPI_FORTRAN_IGNORE_TKR_TYPE@
|
|
|
|
! Integers
|
|
|
|
#define OMPI_HAVE_FORTRAN_INTEGER1 @OMPI_HAVE_FORTRAN_INTEGER1@
|
|
#define OMPI_KIND_FORTRAN_INTEGER1 @OMPI_KIND_FORTRAN_INTEGER1@
|
|
#define OMPI_SIZEOF_FORTRAN_INTEGER1 @OMPI_SIZEOF_FORTRAN_INTEGER1@
|
|
|
|
#define OMPI_HAVE_FORTRAN_INTEGER2 @OMPI_HAVE_FORTRAN_INTEGER2@
|
|
#define OMPI_KIND_FORTRAN_INTEGER2 @OMPI_KIND_FORTRAN_INTEGER2@
|
|
#define OMPI_SIZEOF_FORTRAN_INTEGER2 @OMPI_SIZEOF_FORTRAN_INTEGER2@
|
|
|
|
#define OMPI_HAVE_FORTRAN_INTEGER4 @OMPI_HAVE_FORTRAN_INTEGER4@
|
|
#define OMPI_KIND_FORTRAN_INTEGER4 @OMPI_KIND_FORTRAN_INTEGER4@
|
|
#define OMPI_SIZEOF_FORTRAN_INTEGER4 @OMPI_SIZEOF_FORTRAN_INTEGER4@
|
|
|
|
#define OMPI_HAVE_FORTRAN_INTEGER8 @OMPI_HAVE_FORTRAN_INTEGER8@
|
|
#define OMPI_KIND_FORTRAN_INTEGER8 @OMPI_KIND_FORTRAN_INTEGER8@
|
|
#define OMPI_SIZEOF_FORTRAN_INTEGER8 @OMPI_SIZEOF_FORTRAN_INTEGER8@
|
|
|
|
#define OMPI_HAVE_FORTRAN_INTEGER16 @OMPI_HAVE_FORTRAN_INTEGER16@
|
|
#define OMPI_KIND_FORTRAN_INTEGER16 @OMPI_KIND_FORTRAN_INTEGER16@
|
|
#define OMPI_SIZEOF_FORTRAN_INTEGER16 @OMPI_SIZEOF_FORTRAN_INTEGER16@
|
|
|
|
! Reals
|
|
|
|
#define OMPI_HAVE_FORTRAN_REAL2 @OMPI_HAVE_FORTRAN_REAL2@
|
|
#define OMPI_KIND_FORTRAN_REAL2 @OMPI_KIND_FORTRAN_REAL2@
|
|
#define OMPI_SIZEOF_FORTRAN_REAL2 @OMPI_SIZEOF_FORTRAN_REAL2@
|
|
|
|
#define OMPI_HAVE_FORTRAN_REAL4 @OMPI_HAVE_FORTRAN_REAL4@
|
|
#define OMPI_KIND_FORTRAN_REAL4 @OMPI_KIND_FORTRAN_REAL4@
|
|
#define OMPI_SIZEOF_FORTRAN_REAL4 @OMPI_SIZEOF_FORTRAN_REAL4@
|
|
|
|
#define OMPI_HAVE_FORTRAN_REAL8 @OMPI_HAVE_FORTRAN_REAL8@
|
|
#define OMPI_KIND_FORTRAN_REAL8 @OMPI_KIND_FORTRAN_REAL8@
|
|
#define OMPI_SIZEOF_FORTRAN_REAL8 @OMPI_SIZEOF_FORTRAN_REAL8@
|
|
|
|
#define OMPI_HAVE_FORTRAN_REAL16 @OMPI_HAVE_FORTRAN_REAL16@
|
|
#define OMPI_KIND_FORTRAN_REAL16 @OMPI_KIND_FORTRAN_REAL16@
|
|
#define OMPI_SIZEOF_FORTRAN_REAL16 @OMPI_SIZEOF_FORTRAN_REAL16@
|
|
|
|
! Complexes
|
|
|
|
#define OMPI_HAVE_FORTRAN_COMPLEX4 @OMPI_HAVE_FORTRAN_COMPLEX4@
|
|
#define OMPI_KIND_FORTRAN_COMPLEX4 @OMPI_KIND_FORTRAN_COMPLEX4@
|
|
#define OMPI_SIZEOF_FORTRAN_COMPLEX4 @OMPI_SIZEOF_FORTRAN_COMPLEX4@
|
|
|
|
#define OMPI_HAVE_FORTRAN_COMPLEX8 @OMPI_HAVE_FORTRAN_COMPLEX8@
|
|
#define OMPI_KIND_FORTRAN_COMPLEX8 @OMPI_KIND_FORTRAN_COMPLEX8@
|
|
#define OMPI_SIZEOF_FORTRAN_COMPLEX8 @OMPI_SIZEOF_FORTRAN_COMPLEX8@
|
|
|
|
#define OMPI_HAVE_FORTRAN_COMPLEX16 @OMPI_HAVE_FORTRAN_COMPLEX16@
|
|
#define OMPI_KIND_FORTRAN_COMPLEX16 @OMPI_KIND_FORTRAN_COMPLEX16@
|
|
#define OMPI_SIZEOF_FORTRAN_COMPLEX16 @OMPI_SIZEOF_FORTRAN_COMPLEX16@
|
|
|
|
#define OMPI_HAVE_FORTRAN_COMPLEX32 @OMPI_HAVE_FORTRAN_COMPLEX32@
|
|
#define OMPI_KIND_FORTRAN_COMPLEX32 @OMPI_KIND_FORTRAN_COMPLEX32@
|
|
#define OMPI_SIZEOF_FORTRAN_COMPLEX32 @OMPI_SIZEOF_FORTRAN_COMPLEX32@
|
|
|
|
! Include some post-processing, based on the values from above
|
|
|
|
#include "ompi/mpi/fortran/configure-fortran-output-bottom.h"
|
|
|
|
#endif
|