Make the use of PROTECTED in the mpi_f08 module be optional.
Add a configure test to see if the Fortran compiler supports the PROTECTED keyword. If it does, use in mpi-f08-types.F90 (via a macro defined in configure-fortran-output-bottom.h). This is needed to support the PGI 9 Fortran compiler, which does not support the PROTECTED keyword. Note that regardless of whether we want to support the PGI 9 Fortran compiler + mpi_f08, we need to correctly detect whether PROTECTED works or not, and then use that determination as a criteria for building the mpi_f08 module. Previously, mpi-f08-types.F90 used PROTECTED unconditionally, and we didn't test for it in configure. So if a compiler (e.g., PGI 9) supported everything else but didn't support PROTECTED, it would try to compile the mpi_f08 stuff and choke on the use of PROTECTED. Refs trac:4093 This commit was SVN r30273. The following Trac tickets were found above: Ticket 4093 --> https://svn.open-mpi.org/trac/ompi/ticket/4093
Этот коммит содержится в:
родитель
c6c6cbddb2
Коммит
5f17bc3c2c
44
config/ompi_fortran_check_protected.m4
Обычный файл
44
config/ompi_fortran_check_protected.m4
Обычный файл
@ -0,0 +1,44 @@
|
||||
dnl -*- shell-script -*-
|
||||
dnl
|
||||
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
dnl University Research and Technology
|
||||
dnl Corporation. All rights reserved.
|
||||
dnl Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
dnl of Tennessee Research Foundation. All rights
|
||||
dnl reserved.
|
||||
dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
dnl University of Stuttgart. All rights reserved.
|
||||
dnl Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
dnl All rights reserved.
|
||||
dnl Copyright (c) 2010-2014 Cisco Systems, Inc. All rights reserved.
|
||||
dnl $COPYRIGHT$
|
||||
dnl
|
||||
dnl Additional copyrights may follow
|
||||
dnl
|
||||
dnl $HEADER$
|
||||
dnl
|
||||
|
||||
# Check whether or not the Fortran compiler supports the "protected"
|
||||
# keyword in derived types or not.
|
||||
|
||||
# OMPI_FORTRAN_CHECK_PROTECTED([action if found],
|
||||
# [action if not found])
|
||||
# ----------------------------------------------------
|
||||
AC_DEFUN([OMPI_FORTRAN_CHECK_PROTECTED],[
|
||||
AS_VAR_PUSHDEF([protected_var], [ompi_cv_fortran_protected])
|
||||
|
||||
AC_CACHE_CHECK([if Fortran compiler supports PROTECTED], protected_var,
|
||||
[AC_LANG_PUSH([Fortran])
|
||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[module test_for_protected
|
||||
integer, protected :: bogus
|
||||
end module test_for_protected]])],
|
||||
[AS_VAR_SET(protected_var, yes)],
|
||||
[AS_VAR_SET(protected_var, no)])
|
||||
touch conftest_foo.mod
|
||||
rm -rf *.mod 2>/dev/null
|
||||
AC_LANG_POP([Fortran])
|
||||
])
|
||||
|
||||
AS_VAR_IF(protected_var, [yes], [$1], [$2])
|
||||
AS_VAR_POPDEF([protected_var])dnl
|
||||
])
|
@ -395,15 +395,23 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
OMPI_FORTRAN_HAVE_PRIVATE=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[ # Does the compiler support the "private"
|
||||
[ # Does the compiler support "private"
|
||||
OMPI_FORTRAN_CHECK_PRIVATE(
|
||||
[OMPI_FORTRAN_HAVE_PRIVATE=1],
|
||||
[OMPI_FORTRAN_HAVE_PRIVATE=0])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_PROTECTED=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[ # Does the compiler support "protected"
|
||||
OMPI_FORTRAN_CHECK_PROTECTED(
|
||||
[OMPI_FORTRAN_HAVE_PROTECTED=1],
|
||||
[OMPI_FORTRAN_HAVE_PROTECTED=0])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_ABSTRACT=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[ # Does the compiler support the "abstract"
|
||||
[ # Does the compiler support "abstract"
|
||||
OMPI_FORTRAN_CHECK_ABSTRACT(
|
||||
[OMPI_FORTRAN_HAVE_ABSTRACT=1],
|
||||
[OMPI_FORTRAN_HAVE_ABSTRACT=0])])
|
||||
@ -411,7 +419,7 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[ # Does the compiler support the "asynchronous"
|
||||
[ # Does the compiler support "asynchronous"
|
||||
OMPI_FORTRAN_CHECK_ASYNCHRONOUS(
|
||||
[OMPI_FORTRAN_HAVE_ASYNCHRONOUS=1],
|
||||
[OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0])])
|
||||
@ -419,7 +427,7 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
OMPI_FORTRAN_HAVE_PROCEDURE=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 -a \
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[ # Does the compiler support the "procedure"
|
||||
[ # Does the compiler support "procedure"
|
||||
OMPI_FORTRAN_CHECK_PROCEDURE(
|
||||
[OMPI_FORTRAN_HAVE_PROCEDURE=1],
|
||||
[OMPI_FORTRAN_HAVE_PROCEDURE=0])])
|
||||
@ -658,6 +666,12 @@ end type test_mpi_handle],
|
||||
[$OMPI_FORTRAN_HAVE_PRIVATE],
|
||||
[For mpi-f08-types.f90 and ompi_info: whether the compiler supports the "private" keyword or not (used in MPI_Status)])
|
||||
|
||||
# For configure-fortran-output.h, mpi-f08-types.F90 (and ompi_info)
|
||||
AC_SUBST([OMPI_FORTRAN_HAVE_PROTECTED])
|
||||
AC_DEFINE_UNQUOTED([OMPI_FORTRAN_HAVE_PROTECTED],
|
||||
[$OMPI_FORTRAN_HAVE_PROTECTED],
|
||||
[For mpi-f08-types.f90 and .F90 and ompi_info: whether the compiler supports the "protected" keyword or not])
|
||||
|
||||
# For configure-fortran-output.h, mpi-f08-interfaces-callbacks.F90
|
||||
# (and ompi_info)
|
||||
AC_SUBST([OMPI_FORTRAN_HAVE_ABSTRACT])
|
||||
|
@ -1,6 +1,6 @@
|
||||
! -*- f90 -*-
|
||||
!
|
||||
! Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2014 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All rights reserved.
|
||||
! $COPYRIGHT$
|
||||
@ -87,47 +87,47 @@ module mpi_f08_types
|
||||
! Pre-defined handles
|
||||
!
|
||||
|
||||
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_world") :: MPI_COMM_WORLD
|
||||
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_self") :: MPI_COMM_SELF
|
||||
type(MPI_Comm), bind(C, name="ompi_f08_mpi_comm_world") OMPI_PROTECTED :: MPI_COMM_WORLD
|
||||
type(MPI_Comm), bind(C, name="ompi_f08_mpi_comm_self") OMPI_PROTECTED :: MPI_COMM_SELF
|
||||
|
||||
type(MPI_Group), protected, bind(C, name="ompi_f08_mpi_group_empty") :: MPI_GROUP_EMPTY
|
||||
type(MPI_Group), bind(C, name="ompi_f08_mpi_group_empty") OMPI_PROTECTED :: MPI_GROUP_EMPTY
|
||||
|
||||
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_are_fatal") :: MPI_ERRORS_ARE_FATAL
|
||||
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errors_return") :: MPI_ERRORS_RETURN
|
||||
type(MPI_Errhandler), bind(C, name="ompi_f08_mpi_errors_are_fatal") OMPI_PROTECTED :: MPI_ERRORS_ARE_FATAL
|
||||
type(MPI_Errhandler), bind(C, name="ompi_f08_mpi_errors_return") OMPI_PROTECTED :: MPI_ERRORS_RETURN
|
||||
|
||||
type(MPI_Message), protected, bind(C, name="ompi_f08_mpi_message_no_proc") :: MPI_MESSAGE_NO_PROC
|
||||
type(MPI_Message), bind(C, name="ompi_f08_mpi_message_no_proc") OMPI_PROTECTED :: MPI_MESSAGE_NO_PROC
|
||||
|
||||
type(MPI_Info), protected, bind(C, name="ompi_f08_mpi_info_env") :: MPI_INFO_ENV
|
||||
type(MPI_Info), bind(C, name="ompi_f08_mpi_info_env") OMPI_PROTECTED :: MPI_INFO_ENV
|
||||
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_max" ) :: MPI_MAX
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_min" ) :: MPI_MIN
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_sum" ) :: MPI_SUM
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_prod" ) :: MPI_PROD
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_land" ) :: MPI_LAND
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_band" ) :: MPI_BAND
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_lor" ) :: MPI_LOR
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_bor" ) :: MPI_BOR
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_lxor" ) :: MPI_LXOR
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_bxor" ) :: MPI_BXOR
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_maxloc" ) :: MPI_MAXLOC
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_minloc" ) :: MPI_MINLOC
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_replace" ) :: MPI_REPLACE
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_max" ) OMPI_PROTECTED :: MPI_MAX
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_min" ) OMPI_PROTECTED :: MPI_MIN
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_sum" ) OMPI_PROTECTED :: MPI_SUM
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_prod" ) OMPI_PROTECTED :: MPI_PROD
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_land" ) OMPI_PROTECTED :: MPI_LAND
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_band" ) OMPI_PROTECTED :: MPI_BAND
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_lor" ) OMPI_PROTECTED :: MPI_LOR
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_bor" ) OMPI_PROTECTED :: MPI_BOR
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_lxor" ) OMPI_PROTECTED :: MPI_LXOR
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_bxor" ) OMPI_PROTECTED :: MPI_BXOR
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_maxloc" ) OMPI_PROTECTED :: MPI_MAXLOC
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_minloc" ) OMPI_PROTECTED :: MPI_MINLOC
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_replace" ) OMPI_PROTECTED :: MPI_REPLACE
|
||||
|
||||
!
|
||||
! NULL "handles" (indices)
|
||||
!
|
||||
|
||||
type(MPI_Comm), protected, bind(C, name="ompi_f08_mpi_comm_null") :: MPI_COMM_NULL;
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_datatype_null") :: MPI_DATATYPE_NULL;
|
||||
type(MPI_Errhandler), protected, bind(C, name="ompi_f08_mpi_errhandler_null") :: MPI_ERRHANDLER_NULL;
|
||||
type(MPI_Group), protected, bind(C, name="ompi_f08_mpi_group_null") :: MPI_GROUP_NULL;
|
||||
type(MPI_Info), protected, bind(C, name="ompi_f08_mpi_info_null") :: MPI_INFO_NULL;
|
||||
type(MPI_Message), protected, bind(C, name="ompi_f08_mpi_message_null") :: MPI_MESSAGE_NULL;
|
||||
type(MPI_Op), protected, bind(C, name="ompi_f08_mpi_op_null") :: MPI_OP_NULL;
|
||||
type(MPI_Request), protected, bind(C, name="ompi_f08_mpi_request_null") :: MPI_REQUEST_NULL;
|
||||
type(MPI_Win), protected, bind(C, name="ompi_f08_mpi_win_null") :: MPI_WIN_NULL;
|
||||
type(MPI_Comm), bind(C, name="ompi_f08_mpi_comm_null") OMPI_PROTECTED :: MPI_COMM_NULL;
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_datatype_null") OMPI_PROTECTED :: MPI_DATATYPE_NULL;
|
||||
type(MPI_Errhandler), bind(C, name="ompi_f08_mpi_errhandler_null") OMPI_PROTECTED :: MPI_ERRHANDLER_NULL;
|
||||
type(MPI_Group), bind(C, name="ompi_f08_mpi_group_null") OMPI_PROTECTED :: MPI_GROUP_NULL;
|
||||
type(MPI_Info), bind(C, name="ompi_f08_mpi_info_null") OMPI_PROTECTED :: MPI_INFO_NULL;
|
||||
type(MPI_Message), bind(C, name="ompi_f08_mpi_message_null") OMPI_PROTECTED :: MPI_MESSAGE_NULL;
|
||||
type(MPI_Op), bind(C, name="ompi_f08_mpi_op_null") OMPI_PROTECTED :: MPI_OP_NULL;
|
||||
type(MPI_Request), bind(C, name="ompi_f08_mpi_request_null") OMPI_PROTECTED :: MPI_REQUEST_NULL;
|
||||
type(MPI_Win), bind(C, name="ompi_f08_mpi_win_null") OMPI_PROTECTED :: MPI_WIN_NULL;
|
||||
#if OMPI_PROVIDE_MPI_FILE_INTERFACE
|
||||
type(MPI_File), protected, bind(C, name="ompi_f08_mpi_file_null") :: MPI_FILE_NULL;
|
||||
type(MPI_File), bind(C, name="ompi_f08_mpi_file_null") OMPI_PROTECTED :: MPI_FILE_NULL;
|
||||
#endif
|
||||
|
||||
!
|
||||
@ -137,48 +137,48 @@ module mpi_f08_types
|
||||
! They are defined in ompi/runtime/ompi_mpi_init.c
|
||||
!
|
||||
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_byte") :: MPI_BYTE
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_packed") :: MPI_PACKED
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_ub") :: MPI_UB
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_lb") :: MPI_LB
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_character") :: MPI_CHARACTER
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical") :: MPI_LOGICAL
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer") :: MPI_INTEGER
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer1") :: MPI_INTEGER1
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer2") :: MPI_INTEGER2
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer4") :: MPI_INTEGER4
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer8") :: MPI_INTEGER8
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_integer16") :: MPI_INTEGER16
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_real") :: MPI_REAL
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_real4") :: MPI_REAL4
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_real8") :: MPI_REAL8
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_real16") :: MPI_REAL16
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_double_precision") :: MPI_DOUBLE_PRECISION
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_complex") :: MPI_COMPLEX
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_complex8") :: MPI_COMPLEX8
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_complex16") :: MPI_COMPLEX16
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_complex32") :: MPI_COMPLEX32
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_double_complex") :: MPI_DOUBLE_COMPLEX
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_2real") :: MPI_2REAL
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_2double_precision") :: MPI_2DOUBLE_PRECISION
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_2integer") :: MPI_2INTEGER
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_2complex") :: MPI_2COMPLEX
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_2double_complex") :: MPI_2DOUBLE_COMPLEX
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_real2") :: MPI_REAL2
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical1") :: MPI_LOGICAL1
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical2") :: MPI_LOGICAL2
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical4") :: MPI_LOGICAL4
|
||||
type(MPI_Datatype), protected, bind(C, name="ompi_f08_mpi_logical8") :: MPI_LOGICAL8
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_byte") OMPI_PROTECTED :: MPI_BYTE
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_packed") OMPI_PROTECTED :: MPI_PACKED
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_ub") OMPI_PROTECTED :: MPI_UB
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_lb") OMPI_PROTECTED :: MPI_LB
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_character") OMPI_PROTECTED :: MPI_CHARACTER
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_logical") OMPI_PROTECTED :: MPI_LOGICAL
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer") OMPI_PROTECTED :: MPI_INTEGER
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer1") OMPI_PROTECTED :: MPI_INTEGER1
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer2") OMPI_PROTECTED :: MPI_INTEGER2
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer4") OMPI_PROTECTED :: MPI_INTEGER4
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer8") OMPI_PROTECTED :: MPI_INTEGER8
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_integer16") OMPI_PROTECTED :: MPI_INTEGER16
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_real") OMPI_PROTECTED :: MPI_REAL
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_real4") OMPI_PROTECTED :: MPI_REAL4
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_real8") OMPI_PROTECTED :: MPI_REAL8
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_real16") OMPI_PROTECTED :: MPI_REAL16
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_double_precision") OMPI_PROTECTED :: MPI_DOUBLE_PRECISION
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_complex") OMPI_PROTECTED :: MPI_COMPLEX
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_complex8") OMPI_PROTECTED :: MPI_COMPLEX8
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_complex16") OMPI_PROTECTED :: MPI_COMPLEX16
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_complex32") OMPI_PROTECTED :: MPI_COMPLEX32
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_double_complex") OMPI_PROTECTED :: MPI_DOUBLE_COMPLEX
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_2real") OMPI_PROTECTED :: MPI_2REAL
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_2double_precision") OMPI_PROTECTED :: MPI_2DOUBLE_PRECISION
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_2integer") OMPI_PROTECTED :: MPI_2INTEGER
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_2complex") OMPI_PROTECTED :: MPI_2COMPLEX
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_2double_complex") OMPI_PROTECTED :: MPI_2DOUBLE_COMPLEX
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_real2") OMPI_PROTECTED :: MPI_REAL2
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_logical1") OMPI_PROTECTED :: MPI_LOGICAL1
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_logical2") OMPI_PROTECTED :: MPI_LOGICAL2
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_logical4") OMPI_PROTECTED :: MPI_LOGICAL4
|
||||
type(MPI_Datatype), bind(C, name="ompi_f08_mpi_logical8") OMPI_PROTECTED :: MPI_LOGICAL8
|
||||
|
||||
!... Special sentinel constants
|
||||
!------------------------------
|
||||
type(MPI_STATUS), bind(C, name="mpi_fortran_status_ignore") :: MPI_STATUS_IGNORE
|
||||
type(MPI_STATUS), bind(C, name="mpi_fortran_statuses_ignore") :: MPI_STATUSES_IGNORE(1)
|
||||
integer, bind(C, name="mpi_fortran_bottom") :: MPI_BOTTOM
|
||||
integer, bind(C, name="mpi_fortran_in_place") :: MPI_IN_PLACE
|
||||
integer, bind(C, name="mpi_fortran_argv_null") :: MPI_ARGV_NULL
|
||||
integer, bind(C, name="mpi_fortran_argvs_null") :: MPI_ARGVS_NULL
|
||||
integer, bind(C, name="mpi_fortran_errcodes_ignore") :: MPI_ERRCODES_IGNORE
|
||||
type(MPI_STATUS), bind(C, name="mpi_fortran_status_ignore") OMPI_PROTECTED :: MPI_STATUS_IGNORE
|
||||
type(MPI_STATUS), bind(C, name="mpi_fortran_statuses_ignore") OMPI_PROTECTED :: MPI_STATUSES_IGNORE(1)
|
||||
integer, bind(C, name="mpi_fortran_bottom") OMPI_PROTECTED :: MPI_BOTTOM
|
||||
integer, bind(C, name="mpi_fortran_in_place") OMPI_PROTECTED :: MPI_IN_PLACE
|
||||
integer, bind(C, name="mpi_fortran_argv_null") OMPI_PROTECTED :: MPI_ARGV_NULL
|
||||
integer, bind(C, name="mpi_fortran_argvs_null") OMPI_PROTECTED :: MPI_ARGVS_NULL
|
||||
integer, bind(C, name="mpi_fortran_errcodes_ignore") OMPI_PROTECTED :: MPI_ERRCODES_IGNORE
|
||||
|
||||
!... Interfaces for operators with handles
|
||||
!-----------------------------------------
|
||||
|
@ -1,6 +1,6 @@
|
||||
! -*- fortran -*-
|
||||
!
|
||||
! Copyright (c) 2006-2013 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All rights reserved.
|
||||
!
|
||||
@ -45,4 +45,11 @@
|
||||
#define OMPI_PRIVATE
|
||||
#endif
|
||||
|
||||
! PROTECTED or not
|
||||
#if OMPI_FORTRAN_HAVE_PROTECTED
|
||||
#define OMPI_PROTECTED , PROTECTED
|
||||
#else
|
||||
#define OMPI_PROTECTED
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
! -*- fortran -*-
|
||||
!
|
||||
! Copyright (c) 2006-2012 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2006-2014 Cisco Systems, Inc. All rights reserved.
|
||||
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||
! All rights reserved.
|
||||
!
|
||||
@ -26,6 +26,9 @@
|
||||
! 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@
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
* University of Stuttgart. All rights reserved.
|
||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2007-2012 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2007-2014 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
@ -93,6 +93,7 @@ void ompi_info_do_config(bool want_all)
|
||||
char *fortran_have_bind_c_type;
|
||||
char *fortran_have_bind_c_type_name;
|
||||
char *fortran_have_private;
|
||||
char *fortran_have_protected;
|
||||
char *fortran_have_abstract;
|
||||
char *fortran_have_asynchronous;
|
||||
char *fortran_have_procedure;
|
||||
@ -173,6 +174,7 @@ void ompi_info_do_config(bool want_all)
|
||||
fortran_have_bind_c_type_name = OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME ?
|
||||
"yes" : "no";
|
||||
fortran_have_private = OMPI_FORTRAN_HAVE_PRIVATE ? "yes" : "no";
|
||||
fortran_have_protected = OMPI_FORTRAN_HAVE_PROTECTED ? "yes" : "no";
|
||||
fortran_have_abstract = OMPI_FORTRAN_HAVE_ABSTRACT ? "yes" : "no";
|
||||
fortran_have_asynchronous = OMPI_FORTRAN_HAVE_ASYNCHRONOUS ? "yes" : "no";
|
||||
fortran_have_procedure = OMPI_FORTRAN_HAVE_PROCEDURE ? "yes" : "no";
|
||||
@ -183,7 +185,9 @@ void ompi_info_do_config(bool want_all)
|
||||
module has */
|
||||
if (OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
|
||||
/* Do we have everything? */
|
||||
/* Do we have everything? (not including PROTECTED, which
|
||||
isn't *needed* for the mpi_f08 module compliance -- it's
|
||||
just *nice to have*) */
|
||||
if (OMPI_BUILD_FORTRAN_F08_SUBARRAYS &&
|
||||
OMPI_FORTRAN_HAVE_PRIVATE &&
|
||||
OMPI_FORTRAN_HAVE_ABSTRACT &&
|
||||
@ -390,6 +394,9 @@ void ompi_info_do_config(bool want_all)
|
||||
opal_info_out("Fort PRIVATE",
|
||||
"compiler:fortran:private",
|
||||
fortran_have_private);
|
||||
opal_info_out("Fort PROTECTED",
|
||||
"compiler:fortran:protected",
|
||||
fortran_have_protected);
|
||||
opal_info_out("Fort ABSTRACT",
|
||||
"compiler:fortran:abstract",
|
||||
fortran_have_abstract);
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user