Fix --with-fortran=... logic
This commit is contained in:
parent
ab148e4e0c
commit
dd572a0838
@ -104,69 +104,60 @@ AM_CONDITIONAL(WANT_PERUSE, test "$WANT_PERUSE" = "1")
|
||||
AC_MSG_CHECKING([if want Fortran MPI bindings])
|
||||
AC_ARG_ENABLE(mpi-fortran,
|
||||
AC_HELP_STRING([--enable-mpi-fortran],
|
||||
[specify which Fortran MPI bindings to build: all (or yes), none (or no), mpifh (build only mpif.h support), usempi (build mpif.h and the mpi module), or usempif08 (build mpifh, the mpi module, and the mpi_f08 module) (default: "all" if Fortran compiler found)]))
|
||||
[specify which Fortran MPI bindings to build: yes, none (or no), best-effort, mpifh (build only mpif.h support), usempi (build mpif.h and the mpi module), or usempif08 (or all, build mpifh, the mpi module, and the mpi_f08 module) (default: "yes" if Fortran compiler found)]))
|
||||
|
||||
OMPI_FORTRAN_NO_BINDINGS=0
|
||||
OMPI_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_FORTRAN_USEMPI_BINDINGS=2
|
||||
OMPI_FORTRAN_USEMPIF08_BINDINGS=3
|
||||
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
|
||||
OMPI_FORTRAN_USER_REQUESTED=0
|
||||
case "x$enable_mpi_fortran" in
|
||||
x)
|
||||
AC_MSG_RESULT([yes (all/default)])
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=1
|
||||
x|xbest-effort)
|
||||
AC_MSG_RESULT([ (try)])
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS
|
||||
;;
|
||||
|
||||
xyes|xall)
|
||||
AC_MSG_RESULT([yes (all)])
|
||||
OMPI_FORTRAN_USER_REQUESTED=1
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=1
|
||||
xyes)
|
||||
AC_MSG_RESULT([yes (default)])
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS
|
||||
;;
|
||||
|
||||
xall|xusempif08)
|
||||
AC_MSG_RESULT([all (usempif08)])
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS
|
||||
;;
|
||||
|
||||
xno|xnone)
|
||||
AC_MSG_RESULT([no (none)])
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=0
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=0
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=0
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
;;
|
||||
|
||||
xmpifh)
|
||||
AC_MSG_RESULT([yes (mpif.h)])
|
||||
OMPI_FORTRAN_USER_REQUESTED=1
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=0
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=0
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS
|
||||
;;
|
||||
|
||||
xusempi)
|
||||
AC_MSG_RESULT([yes (mpif.h, mpi module)])
|
||||
OMPI_FORTRAN_USER_REQUESTED=1
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=0
|
||||
;;
|
||||
|
||||
xusempif08)
|
||||
AC_MSG_RESULT([yes (mpif.h, mpi and mpi_f08 modules)])
|
||||
OMPI_FORTRAN_USER_REQUESTED=1
|
||||
OMPI_WANT_FORTRAN_MPIFH_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPI_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS=1
|
||||
OMPI_WANT_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS
|
||||
OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_RESULT([unknown: $binding])
|
||||
AC_MSG_WARN([--enable-mpi-fortran only one of the following values: all, none, mpifh, usempi, or usempif08])
|
||||
AC_MSG_WARN([--enable-mpi-fortran only one of the following values: yes, all, none, best-effort, mpifh, usempi, or usempif08])
|
||||
AC_MSG_ERROR([Cannot continue])
|
||||
;;
|
||||
esac
|
||||
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_MPIFH_BINDINGS -eq 1 || \
|
||||
test $OMPI_WANT_FORTRAN_USEMPI_BINDINGS -eq 1 || \
|
||||
test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
[OMPI_WANT_FORTRAN_BINDINGS=1],
|
||||
[OMPI_WANT_FORTRAN_BINDINGS=0])
|
||||
|
||||
#
|
||||
# MPI profiling
|
||||
#
|
||||
@ -263,7 +254,7 @@ AC_ARG_ENABLE(mpi-f08-subarray-prototype,
|
||||
AC_HELP_STRING([--enable-mpi-f08-subarray-prototype],
|
||||
[Use the PROTOTYPE and SEVERLY FUNCTIONALITY-LIMITED Fortran 08 'use mpi_f08' implementation that supports subarrrays (via Fortran descriptors). This option will disable the normal 'use mpi_f08' implementation and *only* build the prototype implementation.]))
|
||||
OMPI_BUILD_FORTRAN_F08_SUBARRAYS=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 0],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -lt $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[AC_MSG_RESULT([none (use mpi_f08 disabled)])],
|
||||
[AS_IF([test "$enable_mpi_f08_subarray_prototype" = "yes"],
|
||||
[OMPI_BUILD_FORTRAN_F08_SUBARRAYS=1
|
||||
|
@ -15,6 +15,8 @@
|
||||
# Copyright (c) 2006-2007 Los Alamos National Security, LLC. All rights
|
||||
# reserved.
|
||||
# Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||
# Copyright (c) 2014 Research Organization for Information Science
|
||||
# and Technology (RIST). All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
@ -28,7 +30,7 @@ AC_DEFUN([OMPI_FIND_MPI_AINT_COUNT_OFFSET],[
|
||||
_OMPI_FIND_MPI_OFFSET_TYPE
|
||||
|
||||
if test "$ompi_fortran_happy" == "1" && \
|
||||
test "$OMPI_WANT_FORTRAN_BINDINGS" == "1"; then
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS"; then
|
||||
_OMPI_FIND_MPI_INTEGER_KIND
|
||||
_OMPI_FIND_MPI_ADDRESS_KIND
|
||||
_OMPI_FIND_MPI_COUNT_KIND
|
||||
|
@ -47,7 +47,7 @@ AC_DEFUN([OMPI_FORTRAN_CHECK], [
|
||||
# Fortran compiler. This allows us to call this macro, even if
|
||||
# there is no Fortran compiler. If we have no Fortran compiler,
|
||||
# then just set a bunch of defaults.
|
||||
if test $OMPI_WANT_FORTRAN_BINDINGS -eq 1; then
|
||||
if test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS; then
|
||||
OMPI_FORTRAN_CHECK_TYPE([$1], [ofc_have_type=1], [ofc_have_type=0])
|
||||
else
|
||||
AC_MSG_CHECKING([if Fortran compiler supports $1])
|
||||
|
@ -24,7 +24,9 @@ AC_DEFUN([OMPI_FORTRAN_CHECK_LOGICAL_ARRAY],[
|
||||
|
||||
AC_CACHE_CHECK([for correct handling of Fortran logical arrays],
|
||||
logical_array_var,
|
||||
[if test "$1" = "none" || test $OMPI_WANT_FORTRAN_BINDINGS -eq 0 || test $ompi_fortran_happy -eq 0; then
|
||||
[if test "$1" = "none" || \
|
||||
test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \
|
||||
test $ompi_fortran_happy -eq 0; then
|
||||
value=skipped
|
||||
else
|
||||
# Fortran module
|
||||
@ -107,7 +109,7 @@ EOF
|
||||
[value=no])])
|
||||
fi
|
||||
AS_VAR_SET(logical_array_var, [$value])
|
||||
])
|
||||
])
|
||||
|
||||
AS_VAR_COPY([ompi_fortran_logical_array_correct], [logical_array_var])
|
||||
if test "$ompi_fortran_logical_array_correct" = "no" ; then
|
||||
|
@ -31,52 +31,54 @@ AC_DEFUN([OMPI_FORTRAN_CHECK_REAL16_C_EQUIV],[
|
||||
# We have to do this as a cache check for cross-compilation platforms
|
||||
AC_CACHE_CHECK([for C type matching bit representation of REAL*16],
|
||||
real16_matches_c_var,
|
||||
[AS_IF([test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" && test "$OMPI_HAVE_FORTRAN_REAL16" = "1"],[
|
||||
# AC_CACHE_CHECK automatically does its own AC_MSG_CHECKING, so close it out
|
||||
AC_MSG_RESULT([pending])
|
||||
[AS_IF([test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \
|
||||
test "$OMPI_HAVE_FORTRAN_REAL16" = "1"],
|
||||
[
|
||||
# AC_CACHE_CHECK automatically does its own AC_MSG_CHECKING, so close it out
|
||||
AC_MSG_RESULT([pending])
|
||||
|
||||
# First check the type that we found was the same length in C
|
||||
AC_MSG_CHECKING([if $OMPI_FORTRAN_REAL16_C_TYPE == REAL*16])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([$OMPI_FORTRAN_REAL16_C_TYPE], [L])
|
||||
# If that didn't work, see if we have a compiler-specific
|
||||
# type that might work
|
||||
AS_IF([test "$happy" = "no"],
|
||||
[AC_MSG_RESULT([$happy])
|
||||
# Intel compiler has a special type that should work
|
||||
AS_IF([test "$opal_cv_c_compiler_vendor" = "intel"],
|
||||
[AC_MSG_CHECKING([if intel compiler _Quad == REAL*16])
|
||||
CFLAGS_save="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Qoption,cpp,--extended_float_types"
|
||||
OPAL_UNIQ([CFLAGS])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([_Quad], [q])
|
||||
AS_IF([test "$happy" = "yes"],
|
||||
[OMPI_FORTRAN_REAL16_C_TYPE="_Quad"
|
||||
AC_MSG_RESULT([works!])],
|
||||
[CFLAGS="$CFLAGS_save"
|
||||
AC_MSG_RESULT([does not work])])
|
||||
])
|
||||
AS_IF([test "$opal_cv_c_compiler_vendor" = "gnu" && test "$ac_cv_type___float128" = "yes"],
|
||||
[AC_MSG_CHECKING([if gnu compiler __float128 == REAL*16])
|
||||
OPAL_UNIQ([CFLAGS])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([__float128], [q])
|
||||
AS_IF([test "$happy" = "yes"],
|
||||
[OMPI_FORTRAN_REAL16_C_TYPE="__float128"
|
||||
AC_MSG_RESULT([works!])],
|
||||
[AC_MSG_RESULT([does not work])])
|
||||
])
|
||||
# We have to [re-]print a new message here, because
|
||||
# AC_CACHE_CHECK will automatically AC_MSG_RESULT
|
||||
AC_MSG_CHECKING([for C type matching bit representation of REAL*16])
|
||||
])
|
||||
AS_VAR_SET(real16_matches_c_var, [$happy])
|
||||
],[
|
||||
# No fortran bindings or no REAL*16
|
||||
AS_IF([test "$OMPI_WANT_FORTRAN_BINDINGS" = "0"],
|
||||
[msg="skipped (no Fortran MPI bindings)"],
|
||||
[msg="skipped (no REAL*16)"])
|
||||
AS_VAR_SET(real16_matches_c_var, [$msg])
|
||||
# First check the type that we found was the same length in C
|
||||
AC_MSG_CHECKING([if $OMPI_FORTRAN_REAL16_C_TYPE == REAL*16])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([$OMPI_FORTRAN_REAL16_C_TYPE], [L])
|
||||
# If that didn't work, see if we have a compiler-specific
|
||||
# type that might work
|
||||
AS_IF([test "$happy" = "no"],
|
||||
[AC_MSG_RESULT([$happy])
|
||||
# Intel compiler has a special type that should work
|
||||
AS_IF([test "$opal_cv_c_compiler_vendor" = "intel"],
|
||||
[AC_MSG_CHECKING([if intel compiler _Quad == REAL*16])
|
||||
CFLAGS_save="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Qoption,cpp,--extended_float_types"
|
||||
OPAL_UNIQ([CFLAGS])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([_Quad], [q])
|
||||
AS_IF([test "$happy" = "yes"],
|
||||
[OMPI_FORTRAN_REAL16_C_TYPE="_Quad"
|
||||
AC_MSG_RESULT([works!])],
|
||||
[CFLAGS="$CFLAGS_save"
|
||||
AC_MSG_RESULT([does not work])])
|
||||
])
|
||||
AS_IF([test "$opal_cv_c_compiler_vendor" = "gnu" -a "$ac_cv_type___float128" = "yes"],
|
||||
[AC_MSG_CHECKING([if gnu compiler __float128 == REAL*16])
|
||||
OPAL_UNIQ([CFLAGS])
|
||||
OMPI_FORTRAN_CHECK_REAL16_EQUIV_TYPE([__float128], [q])
|
||||
AS_IF([test "$happy" = "yes"],
|
||||
[OMPI_FORTRAN_REAL16_C_TYPE="__float128"
|
||||
AC_MSG_RESULT([works!])],
|
||||
[AC_MSG_RESULT([does not work])])
|
||||
])
|
||||
# We have to [re-]print a new message here, because
|
||||
# AC_CACHE_CHECK will automatically AC_MSG_RESULT
|
||||
AC_MSG_CHECKING([for C type matching bit representation of REAL*16])
|
||||
])
|
||||
AS_VAR_SET(real16_matches_c_var, [$happy])
|
||||
],[
|
||||
# No fortran bindings or no REAL*16
|
||||
AS_IF([test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS"],
|
||||
[msg="skipped (no Fortran MPI bindings)"],
|
||||
[msg="skipped (no REAL*16)"])
|
||||
AS_VAR_SET(real16_matches_c_var, [$msg])
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
AS_VAR_COPY([ompi_real16_matches_c], [real16_matches_c_var])
|
||||
AS_VAR_POPDEF([real16_matches_c_var])
|
||||
|
@ -34,7 +34,8 @@ AC_DEFUN([OMPI_FORTRAN_FIND_EXT_SYMBOL_CONVENTION], [
|
||||
|
||||
AC_CACHE_CHECK([$FORTRAN external symbol convention],
|
||||
[ompi_cv_fortran_external_symbol],
|
||||
[if test "$FC" = "none" || test "$OMPI_WANT_FORTRAN_BINDINGS" = "0"; then
|
||||
[if test "$FC" = "none" || \
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS"; then
|
||||
ompi_cv_fortran_external_symbol="skipped"
|
||||
else
|
||||
cat >conftest.f <<EOF
|
||||
|
@ -30,7 +30,8 @@ AC_DEFUN([OMPI_FORTRAN_GET_KIND_VALUE],[
|
||||
|
||||
rm -f conftest.out
|
||||
AC_CACHE_CHECK([KIND value of Fortran $1], kind_value_var,
|
||||
[if test $OMPI_WANT_FORTRAN_BINDINGS -eq 0 || test $ompi_fortran_happy -eq 0; then
|
||||
[if test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \
|
||||
test $ompi_fortran_happy -eq 0; then
|
||||
value=skipped
|
||||
else
|
||||
AC_LANG_PUSH([Fortran])
|
||||
@ -75,7 +76,8 @@ AC_DEFUN([_OMPI_FORTRAN_SELECTED_INT_KIND],[
|
||||
AC_CACHE_CHECK([Fortran value of selected_int_kind($1)], sel_int_kind_var,
|
||||
[outval=no
|
||||
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_BINDINGS -eq 1 && test $ompi_fortran_happy -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS && \
|
||||
test $ompi_fortran_happy -eq 1],
|
||||
[rm -f conftest.out
|
||||
AC_LANG_PUSH([Fortran])
|
||||
AC_RUN_IFELSE(AC_LANG_PROGRAM(, [[
|
||||
|
@ -33,7 +33,9 @@ AC_DEFUN([OMPI_FORTRAN_GET_VALUE_TRUE],[
|
||||
|
||||
AC_CACHE_CHECK([Fortran value for .TRUE. logical type],
|
||||
fortran_true_var,
|
||||
[if test "$1" = "none" || test $OMPI_WANT_FORTRAN_BINDINGS -eq 0 || test $ompi_fortran_happy -eq 0 ; then
|
||||
[if test "$1" = "none" || \
|
||||
test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS || \
|
||||
test $ompi_fortran_happy -eq 0 ; then
|
||||
value=77
|
||||
else
|
||||
#
|
||||
|
@ -26,9 +26,7 @@ dnl
|
||||
|
||||
AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
# Default to building nothing
|
||||
OMPI_BUILD_FORTRAN_MPIFH_BINDINGS=0
|
||||
OMPI_BUILD_FORTRAN_USEMPI_BINDINGS=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
|
||||
OMPI_FORTRAN_BUILD_SIZEOF=0
|
||||
|
||||
@ -86,7 +84,17 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
ompi_fortran_caps=0
|
||||
ompi_fortran_plain=0
|
||||
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_BINDINGS -eq 1],
|
||||
AC_DEFINE_UNQUOTED([OMPI_FORTRAN_MPIFH_BINDINGS],
|
||||
[$OMPI_FORTRAN_MPIFH_BINDINGS],
|
||||
[Support for mpif.h bindings])
|
||||
AC_DEFINE_UNQUOTED([OMPI_FORTRAN_USEMPI_BINDINGS],
|
||||
[$OMPI_FORTRAN_USEMPI_BINDINGS],
|
||||
[Support for use mpi bindings])
|
||||
AC_DEFINE_UNQUOTED([OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[$OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[Support for use mpif08 bindings])
|
||||
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS],
|
||||
[OMPI_SETUP_FC([ompi_fortran_happy=1])])
|
||||
|
||||
# These values will be determined by SETUP_FC. We must always
|
||||
@ -108,7 +116,8 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
# Check to see if any of the MPI Fortran bindings were
|
||||
# specifically requested. If so, and we weren't able to setup the
|
||||
# Fortran compiler properly, it's an error.
|
||||
AS_IF([test $ompi_fortran_happy -eq 0 && test $OMPI_FORTRAN_USER_REQUESTED -eq 1],
|
||||
AS_IF([test $ompi_fortran_happy -eq 0 && \
|
||||
test $OMPI_WANT_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS],
|
||||
[AC_MSG_WARN([MPI Fortran bindings requested, but no suitable Fortran compiler found])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
|
||||
@ -263,9 +272,10 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
|
||||
AC_MSG_CHECKING([if building Fortran mpif.h bindings])
|
||||
AS_IF([test $ompi_fortran_happy -eq 1],
|
||||
[AC_MSG_RESULT([yes])
|
||||
OMPI_BUILD_FORTRAN_MPIFH_BINDINGS=1],
|
||||
[AC_MSG_RESULT([no])])
|
||||
[OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS
|
||||
AC_MSG_RESULT([yes])],
|
||||
[OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_NO_BINDINGS
|
||||
AC_MSG_RESULT([no])])
|
||||
|
||||
# "INTERFACE" is needed for MPI_SIZEOF
|
||||
AS_IF([test $ompi_fortran_happy -eq 1],
|
||||
@ -303,8 +313,7 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
#--------------------------------------------
|
||||
|
||||
AS_IF([test $ompi_fortran_happy -eq 1 && \
|
||||
( test $OMPI_WANT_FORTRAN_USEMPI_BINDINGS -eq 1 || \
|
||||
test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 )],
|
||||
test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS],
|
||||
[ # Look for the fortran module compiler flag
|
||||
OMPI_FORTRAN_FIND_MODULE_INCLUDE_FLAG([],
|
||||
[AC_MSG_WARN([*** Could not determine the fortran compiler flag to indicate where modules reside])
|
||||
@ -317,9 +326,9 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
# If we got here, we can build the mpi module if it was requested.
|
||||
# Decide whether to build the ignore TKR version or the
|
||||
# non-ignore-TKR/legacy version.
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPI_BINDINGS -eq 1 && \
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \
|
||||
test $ompi_fortran_happy -eq 1],
|
||||
[OMPI_BUILD_FORTRAN_USEMPI_BINDINGS=1
|
||||
[OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS
|
||||
AS_IF([test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1],
|
||||
[OMPI_FORTRAN_USEMPI_DIR=mpi/fortran/use-mpi-ignore-tkr
|
||||
OMPI_FORTRAN_USEMPI_LIB=-lmpi_usempi_ignore_tkr],
|
||||
@ -328,16 +337,17 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
])
|
||||
|
||||
OMPI_FORTRAN_HAVE_ISO_C_BINDING=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPI_BINDINGS -eq 1 && \
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \
|
||||
test $ompi_fortran_happy -eq 1],
|
||||
[OMPI_FORTRAN_CHECK_ISO_C_BINDING(
|
||||
[OMPI_FORTRAN_HAVE_ISO_C_BINDING=1],
|
||||
[OMPI_FORTRAN_HAVE_ISO_C_BINDING=0])])
|
||||
|
||||
AC_MSG_CHECKING([if building Fortran 'use mpi' bindings])
|
||||
AS_IF([test $OMPI_BUILD_FORTRAN_USEMPI_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])])
|
||||
[OMPI_TRY_FORTRAN_BINDINGS=$OMPI_FORTRAN_MPIFH_BINDINGS
|
||||
AC_MSG_RESULT([no])])
|
||||
|
||||
#---------------------------------
|
||||
# Fortran use mpi_f08 MPI bindings
|
||||
@ -348,9 +358,9 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
|
||||
# We need to have ignore TKR functionality to build the mpi_f08
|
||||
# module
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 &&
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS &&
|
||||
test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1],
|
||||
[OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=1
|
||||
[OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPIF08_BINDINGS
|
||||
OMPI_FORTRAN_F08_PREDECL=$OMPI_FORTRAN_IGNORE_TKR_PREDECL
|
||||
OMPI_FORTRAN_F08_TYPE=$OMPI_FORTRAN_IGNORE_TKR_TYPE
|
||||
])
|
||||
@ -359,29 +369,29 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
# the necessary forms of BIND(C)
|
||||
OMPI_FORTRAN_HAVE_BIND_C=0
|
||||
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # If we don't have ISO C bindings, we won't build mpi_f08 at all
|
||||
AS_IF([test "$OMPI_FORTRAN_HAVE_ISO_C_BINDING" -eq 0],
|
||||
[OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
[OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_BIND_C_SUB=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # If we don't have SUBROUTINE BIND(C), we won't build mpi_f08 at all
|
||||
OMPI_FORTRAN_CHECK_BIND_C_SUB(
|
||||
[OMPI_FORTRAN_HAVE_BIND_C_SUB=1],
|
||||
[OMPI_FORTRAN_HAVE_BIND_C_SUB=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_BIND_C_TYPE=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # If we don't have TYPE, BIND(C), we won't build mpi_f08 at all
|
||||
OMPI_FORTRAN_CHECK_BIND_C_TYPE(
|
||||
[OMPI_FORTRAN_HAVE_BIND_C_TYPE=1],
|
||||
[OMPI_FORTRAN_HAVE_BIND_C_TYPE=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
# Per discussion on the devel list starting here:
|
||||
# http://www.open-mpi.org/community/lists/devel/2014/01/13799.php
|
||||
@ -396,8 +406,8 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
# to ensure that BIND(C, name="foo") works, where "foo" is
|
||||
# actually a name >32 characters.
|
||||
OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # If we don't have TYPE, BIND(C, name="foo"), we won't build mpi_f08 at all
|
||||
OMPI_FORTRAN_CHECK_BIND_C_TYPE_NAME(
|
||||
[ # If we got here, we have all the required forms of
|
||||
@ -405,74 +415,74 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
|
||||
OMPI_FORTRAN_HAVE_BIND_C=1
|
||||
OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=1],
|
||||
[OMPI_FORTRAN_HAVE_BIND_C_TYPE_NAME=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
# Per https://svn.open-mpi.org/trac/ompi/ticket/4590, if the
|
||||
# Fortran compiler doesn't support PROCEDURE in the way we
|
||||
# want/need, disable the mpi_f08 module.
|
||||
OMPI_FORTRAN_HAVE_PROCEDURE=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Does the compiler support "procedure"
|
||||
OMPI_FORTRAN_CHECK_PROCEDURE(
|
||||
[OMPI_FORTRAN_HAVE_PROCEDURE=1],
|
||||
[OMPI_FORTRAN_HAVE_PROCEDURE=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Does the compiler have optional arguments?
|
||||
OMPI_FORTRAN_CHECK_OPTIONAL_ARGS(
|
||||
[OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=1],
|
||||
[OMPI_FORTRAN_HAVE_OPTIONAL_ARGS=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_C_FUNLOC=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Does the compiler supports c_funloc per
|
||||
# TS 29113 subclause 8.1 ?
|
||||
OMPI_FORTRAN_CHECK_C_FUNLOC(
|
||||
[OMPI_FORTRAN_HAVE_C_FUNLOC=1],
|
||||
[OMPI_FORTRAN_HAVE_C_FUNLOC=0
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS=0])])
|
||||
OMPI_BUILD_FORTRAN_BINDINGS=$OMPI_FORTRAN_USEMPI_BINDINGS])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_PRIVATE=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # 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 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # 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 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Does the compiler support "abstract"
|
||||
OMPI_FORTRAN_CHECK_ABSTRACT(
|
||||
[OMPI_FORTRAN_HAVE_ABSTRACT=1],
|
||||
[OMPI_FORTRAN_HAVE_ABSTRACT=0])])
|
||||
|
||||
OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Does the compiler support "asynchronous"
|
||||
OMPI_FORTRAN_CHECK_ASYNCHRONOUS(
|
||||
[OMPI_FORTRAN_HAVE_ASYNCHRONOUS=1],
|
||||
[OMPI_FORTRAN_HAVE_ASYNCHRONOUS=0])])
|
||||
|
||||
OMPI_FORTRAN_F08_HANDLE_SIZE=4
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # How big are derived types with a single INTEGER?
|
||||
OMPI_FORTRAN_GET_SIZEOF([type, BIND(C) :: test_mpi_handle
|
||||
integer :: MPI_VAL
|
||||
@ -485,8 +495,8 @@ end type test_mpi_handle],
|
||||
OMPI_FORTRAN_F08_PREDECL='!'
|
||||
OMPI_FORTRAN_F08_TYPE=real
|
||||
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK=0
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_USEMPIF08_BINDINGS -eq 1 && \
|
||||
test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[ # Look for Fortran 2008 assumed rank syntax
|
||||
OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK(
|
||||
[ # If we have assumed rank, we can build the use
|
||||
@ -533,14 +543,23 @@ end type test_mpi_handle],
|
||||
# implementation, but for now, I'm just hard-wiring
|
||||
# OMPI_FORTRAN_NEED_WRAPPER_ROUTINES to 1 when we're
|
||||
# building the F08 wrappers.
|
||||
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS
|
||||
if test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS; then
|
||||
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=1
|
||||
else
|
||||
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES=0
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING([if building Fortran 'use mpi_f08' bindings])
|
||||
AS_IF([test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1],
|
||||
AS_IF([test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS],
|
||||
[OMPI_FORTRAN_USEMPIF08_LIB=-lmpi_usempif08
|
||||
AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([no])])
|
||||
[OMPI_TRY_FORTRAN_BINDIGS=$OMPI_FORTRAN_USEMPI_BINDINGS
|
||||
AC_MSG_RESULT([no])])
|
||||
|
||||
# If Fortran bindings is requested, make sure at least one can be built
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_BINDINGS -gt $OMPI_BUILD_FORTRAN_BINDINGS],
|
||||
[AC_MSG_ERROR([Cannot build requested Fortran bindings, aborting])])
|
||||
|
||||
# -------------------
|
||||
# mpif.h final setup
|
||||
# -------------------
|
||||
@ -606,15 +625,12 @@ end type test_mpi_handle],
|
||||
|
||||
AM_CONDITIONAL(BUILD_MPI_FORTRAN_MPIFH_BINDINGS_LAYER,
|
||||
[( test $WANT_MPI_PROFILING -eq 0 || test $OMPI_PROFILING_COMPILE_SEPARATELY -eq 1 ) && \
|
||||
test $OMPI_BUILD_FORTRAN_MPIFH_BINDINGS -eq 1])
|
||||
test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS])
|
||||
AM_CONDITIONAL(BUILD_PMPI_FORTRAN_MPIFH_BINDINGS_LAYER,
|
||||
[test $OMPI_BUILD_FORTRAN_MPIFH_BINDINGS -eq 1 && \
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS && \
|
||||
test $WANT_MPI_PROFILING -eq 1])
|
||||
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_MPIFH_BINDINGS,
|
||||
$OMPI_BUILD_FORTRAN_MPIFH_BINDINGS,
|
||||
[Whether we will build the MPI Fortran mpif.h bindings or not])
|
||||
AM_CONDITIONAL(OMPI_BUILD_FORTRAN_MPIFH_BINDINGS,
|
||||
[test $OMPI_BUILD_FORTRAN_MPIFH_BINDINGS -eq 1])
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS])
|
||||
|
||||
# -------------------
|
||||
# use mpi final setup
|
||||
@ -636,9 +652,6 @@ end type test_mpi_handle],
|
||||
AC_DEFINE_UNQUOTED([OMPI_FORTRAN_IGNORE_TKR_TYPE],
|
||||
[$type],
|
||||
[Type declaration for FORTRAN ignore parameter TKR behavior])
|
||||
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_USEMPI_BINDINGS,
|
||||
$OMPI_BUILD_FORTRAN_USEMPI_BINDINGS,
|
||||
[Whether we will build the MPI Fortran "use mpi" bindings or not])
|
||||
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_IGNORE_TKR,
|
||||
[$OMPI_FORTRAN_HAVE_IGNORE_TKR],
|
||||
[Whether the Fortran compiler supports ignore TKR functionality or not])
|
||||
@ -648,15 +661,15 @@ end type test_mpi_handle],
|
||||
# ompi/mpi/fortran/use-mpi*/Makefile.ams be safe, too.
|
||||
# True if we're building either "use mpi" bindings
|
||||
AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_BINDINGS,
|
||||
[test $OMPI_BUILD_FORTRAN_USEMPI_BINDINGS -eq 1 || \
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS || \
|
||||
test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1])
|
||||
# True if we're building the old TKR-style bindings
|
||||
AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_TKR_BINDINGS,
|
||||
[test $OMPI_BUILD_FORTRAN_USEMPI_BINDINGS -eq 1 && \
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \
|
||||
test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 0])
|
||||
# True if we're building the new ignore-TKR-style bindings
|
||||
AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPI_IGNORE_TKR_BINDINGS,
|
||||
[test $OMPI_BUILD_FORTRAN_USEMPI_BINDINGS -eq 1 && \
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPI_BINDINGS && \
|
||||
test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1])
|
||||
|
||||
# -------------------
|
||||
@ -697,9 +710,6 @@ end type test_mpi_handle],
|
||||
[How many bytes the mpi_f08 TYPE(MPI_<foo>) handles will be])
|
||||
|
||||
# These go into ompi/info/param.c
|
||||
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
||||
$OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
||||
[For ompi_info: Whether we will build the MPI Fortran "use mpi_f08" bindings or not])
|
||||
AC_DEFINE_UNQUOTED(OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK,
|
||||
[$OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK],
|
||||
[For ompi_info: Whether the Fortran compiler supports the Fortran 2008 "assumed rank" syntax or not])
|
||||
@ -771,5 +781,9 @@ end type test_mpi_handle],
|
||||
# might as well have ompi/mpi/fortran/use-mpi-f08/Makefile.am be
|
||||
# safe, too.
|
||||
AM_CONDITIONAL(OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS,
|
||||
[test $OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS -eq 1])
|
||||
[test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS])
|
||||
|
||||
AC_DEFINE_UNQUOTED(OMPI_BUILD_FORTRAN_BINDINGS,
|
||||
$OMPI_BUILD_FORTRAN_BINDINGS,
|
||||
[The level of fortran bindings to be built])
|
||||
])
|
||||
|
@ -218,7 +218,9 @@ AC_DEFUN([OPAL_INTL_POSIX_THREADS_PLAIN_FC], [
|
||||
#
|
||||
# Fortran compiler
|
||||
#
|
||||
if test "$opal_pthread_fortran_success" = "0" && test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" && test $ompi_fortran_happy -eq 1; then
|
||||
if test "$opal_pthread_fortran_success" = "0" && \
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \
|
||||
test $ompi_fortran_happy -eq 1; then
|
||||
AC_MSG_CHECKING([if Fortran compiler and POSIX threads work as is])
|
||||
|
||||
AC_LANG_PUSH(C)
|
||||
@ -322,7 +324,9 @@ AC_DEFUN([OPAL_INTL_POSIX_THREADS_SPECIAL_FLAGS_FC], [
|
||||
#
|
||||
# Fortran compiler
|
||||
#
|
||||
if test "$opal_pthread_fortran_success" = "0" && test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" && test $ompi_fortran_happy -eq 1; then
|
||||
if test "$opal_pthread_fortran_success" = "0" && \
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \
|
||||
test $ompi_fortran_happy -eq 1; then
|
||||
for pf in $pflags; do
|
||||
AC_MSG_CHECKING([if Fortran compiler and POSIX threads work with $pf])
|
||||
FCFLAGS="$orig_FCFLAGS $pf"
|
||||
@ -507,7 +511,9 @@ AC_DEFUN([OPAL_INTL_POSIX_THREADS_LIBS_FC],[
|
||||
#
|
||||
# Fortran compiler
|
||||
#
|
||||
if test "$opal_pthread_fortran_success" = "0" && test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" && test $ompi_fortran_happy -eq 1; then
|
||||
if test "$opal_pthread_fortran_success" = "0" && \
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \
|
||||
test $ompi_fortran_happy -eq 1; then
|
||||
if test ! "$opal_pthread_c_success" = "0" && test ! "$PTHREAD_LIBS" = "" ; then
|
||||
AC_MSG_CHECKING([if Fortran compiler and POSIX threads work with $PTHREAD_LIBS])
|
||||
LIBS="$orig_LIBS $PTHREAD_LIBS"
|
||||
@ -650,7 +656,8 @@ CXXCPPFLAGS="$orig_CXXCPPFLAGS"
|
||||
LDFLAGS="$orig_LDFLAGS"
|
||||
LIBS="$orig_LIBS"
|
||||
|
||||
if test "$OMPI_WANT_FORTRAN_BINDINGS" != "1" || test $ompi_fortran_happy -ne 1; then
|
||||
if test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS" || \
|
||||
test $ompi_fortran_happy -ne 1; then
|
||||
opal_pthread_fortran_success=1
|
||||
fi
|
||||
|
||||
|
@ -440,7 +440,7 @@ AC_DEFUN([OPAL_SETUP_WRAPPER_FINAL],[
|
||||
AC_SUBST([OMPI_WRAPPER_CXX_LIB])
|
||||
AC_SUBST([OMPI_WRAPPER_CXX_REQUIRED_FILE])
|
||||
|
||||
if test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" ; then
|
||||
if test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" ; then
|
||||
OMPI_WRAPPER_FORTRAN_REQUIRED_FILE=""
|
||||
else
|
||||
OMPI_WRAPPER_FORTRAN_REQUIRED_FILE="not supported"
|
||||
|
@ -133,13 +133,14 @@ AC_HELP_STRING([--enable-oshmem-fortran],
|
||||
[enable OSHMEM Fortran bindings (default: enabled if Fortran compiler found)]))
|
||||
if test "$enable_oshmem" != "no" && test "$enable_oshmem_fortran" != "no"; then
|
||||
# If no OMPI FORTRAN, bail
|
||||
AS_IF([test $OMPI_WANT_FORTRAN_BINDINGS -eq 0 && test "$enable_oshmem_fortran" = "yes"],
|
||||
[AC_MSG_RESULT([bad value OMPI_WANT_FORTRAN_BINDINGS: ($OMPI_WANT_FORTRAN_BINDINGS)])
|
||||
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -eq $OMPI_FORTRAN_NO_BINDINGS && \
|
||||
test "$enable_oshmem_fortran" = "yes"],
|
||||
[AC_MSG_RESULT([bad value OMPI_TRY_FORTRAN_BINDINGS: ($OMPI_TRY_FORTRAN_BINDINGS)])
|
||||
AC_MSG_WARN([Your request to --enable-oshmem-fortran can only be satisfied if fortran support is enabled in OMPI.
|
||||
You see this message because OMPI fortran support has been explicitly disabled via --disable-mpi-fortran and OSHMEM fortran support was explicitly enabled with --enable-oshmem-fortran.
|
||||
Configure will abort because you, a human, have asked for something that cannot be provided.])
|
||||
AC_MSG_ERROR([Cannot continue])])
|
||||
if test $OMPI_WANT_FORTRAN_BINDINGS -eq 1; then
|
||||
if test $OMPI_TRY_FORTRAN_BINDINGS -gt $OMPI_FORTRAN_NO_BINDINGS; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
|
@ -578,7 +578,7 @@ m4_ifdef([project_ompi], [OMPI_SETUP_MPI_FORTRAN], [ompi_fortran_happy=0])
|
||||
AM_CONDITIONAL(OSHMEM_BUILD_FORTRAN_BINDINGS,
|
||||
[test "$enable_oshmem" = "yes" && \
|
||||
test "$ompi_fortran_happy" = "1" && \
|
||||
test "$OMPI_WANT_FORTRAN_BINDINGS" = "1" && \
|
||||
test "$OMPI_TRY_FORTRAN_BINDINGS" -gt "$OMPI_FORTRAN_NO_BINDINGS" && \
|
||||
test "$enable_oshmem_fortran" != "no"])
|
||||
|
||||
# checkpoint results
|
||||
@ -1212,7 +1212,7 @@ fi
|
||||
# do this for C++, because even if we're not building the MPI C++
|
||||
# bindings, we *do* still want to setup the mpicxx wrapper if we have
|
||||
# a C++ compiler.
|
||||
AS_IF([test "$OMPI_WANT_FORTRAN_BINDINGS" != "1"],[F77=no FC=no])
|
||||
AS_IF([test "$OMPI_TRY_FORTRAN_BINDINGS" = "$OMPI_FORTRAN_NO_BINDINGS"],[F77=no FC=no])
|
||||
|
||||
LT_INIT([dlopen win32-dll])
|
||||
|
||||
|
@ -12,6 +12,8 @@
|
||||
* All rights reserved.
|
||||
* Copyright (c) 2007-2012 Cisco Systems, Inc. All rights reserved.
|
||||
* Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved.
|
||||
* Copyright (c) 2014 Research Organization for Information Science
|
||||
* and Technology (RIST). All rights reserved.
|
||||
* $COPYRIGHT$
|
||||
*
|
||||
* Additional copyrights may follow
|
||||
@ -54,11 +56,4 @@
|
||||
# endif
|
||||
# endif
|
||||
|
||||
/* Convenience */
|
||||
#if OMPI_BUILD_FORTRAN_MPIFH_BINDINGS || OMPI_BUILD_FORTRAN_USEMPI_BINDINGS || OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS
|
||||
#define OMPI_BUILD_FORTRAN_BINDINGS 1
|
||||
#else
|
||||
#define OMPI_BUILD_FORTRAN_BINDINGS 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -156,7 +156,7 @@ void ompi_info_do_config(bool want_all)
|
||||
|
||||
/* setup the strings that don't require allocations*/
|
||||
cxx = OMPI_BUILD_CXX_BINDINGS ? "yes" : "no";
|
||||
if (OMPI_BUILD_FORTRAN_USEMPI_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) {
|
||||
if (OMPI_FORTRAN_HAVE_IGNORE_TKR) {
|
||||
fortran_usempi = "yes (full: ignore TKR)";
|
||||
} else {
|
||||
@ -165,7 +165,7 @@ void ompi_info_do_config(bool want_all)
|
||||
} else {
|
||||
fortran_usempi = "no";
|
||||
}
|
||||
fortran_usempif08 = OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
||||
fortran_usempif08 = OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
||||
fortran_have_f08_assumed_rank = OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK ?
|
||||
"yes" : "no";
|
||||
fortran_build_f08_subarrays = OMPI_BUILD_FORTRAN_F08_SUBARRAYS ?
|
||||
@ -197,7 +197,7 @@ void ompi_info_do_config(bool want_all)
|
||||
/* Build a string describing what level of compliance the mpi_f08
|
||||
module has */
|
||||
char f08_msg[1024];
|
||||
if (OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
|
||||
/* Do we have everything? (not including PROTECTED, which
|
||||
isn't *needed* for the mpi_f08 module compliance -- it's
|
||||
@ -255,9 +255,9 @@ void ompi_info_do_config(bool want_all)
|
||||
cprofiling = OMPI_ENABLE_MPI_PROFILING ? "yes" : "no";
|
||||
cxxprofiling = (OMPI_BUILD_CXX_BINDINGS && OMPI_ENABLE_MPI_PROFILING) ? "yes" : "no";
|
||||
cxxexceptions = (OMPI_BUILD_CXX_BINDINGS && OMPI_HAVE_CXX_EXCEPTION_SUPPORT) ? "yes" : "no";
|
||||
fortran_mpifh_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempi_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_USEMPI_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempif08_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) ? "yes" : "no";
|
||||
fortran_mpifh_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempi_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempif08_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) ? "yes" : "no";
|
||||
have_dl = OPAL_HAVE_DL_SUPPORT ? "yes" : "no";
|
||||
#if OMPI_RTE_ORTE
|
||||
mpirun_prefix_by_default = ORTE_WANT_ORTERUN_PREFIX_BY_DEFAULT ? "yes" : "no";
|
||||
@ -269,7 +269,7 @@ void ompi_info_do_config(bool want_all)
|
||||
topology_support = OPAL_HAVE_HWLOC ? "yes" : "no";
|
||||
|
||||
/* setup strings that require allocation */
|
||||
if (OMPI_BUILD_FORTRAN_MPIFH_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
|
||||
(void)asprintf(&fortran_mpifh, "yes (%s)",
|
||||
(OPAL_HAVE_WEAK_SYMBOLS ? "all" :
|
||||
(OMPI_FORTRAN_CAPS ? "caps" :
|
||||
@ -453,9 +453,7 @@ void ompi_info_do_config(bool want_all)
|
||||
|
||||
/* May or may not have the other Fortran sizes */
|
||||
|
||||
if (OMPI_BUILD_FORTRAN_MPIFH_BINDINGS ||
|
||||
OMPI_BUILD_FORTRAN_USEMPI_BINDINGS ||
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
|
||||
opal_info_out("Fort have integer1", "compiler:fortran:have:integer1",
|
||||
OMPI_HAVE_FORTRAN_INTEGER1 ? "yes" : "no");
|
||||
opal_info_out("Fort have integer2", "compiler:fortran:have:integer2",
|
||||
|
@ -146,7 +146,7 @@ void oshmem_info_do_config(bool want_all)
|
||||
|
||||
/* setup the strings that don't require allocations*/
|
||||
cxx = OMPI_BUILD_CXX_BINDINGS ? "yes" : "no";
|
||||
if (OMPI_BUILD_FORTRAN_USEMPI_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) {
|
||||
if (OMPI_FORTRAN_HAVE_IGNORE_TKR) {
|
||||
fortran_usempi = "yes (full: ignore TKR)";
|
||||
} else {
|
||||
@ -155,7 +155,7 @@ void oshmem_info_do_config(bool want_all)
|
||||
} else {
|
||||
fortran_usempi = "no";
|
||||
}
|
||||
fortran_usempif08 = OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
||||
fortran_usempif08 = OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS ? "yes" : "no";
|
||||
fortran_have_f08_assumed_rank = OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK ?
|
||||
"yes" : "no";
|
||||
fortran_build_f08_subarrays = OMPI_BUILD_FORTRAN_F08_SUBARRAYS ?
|
||||
@ -174,7 +174,7 @@ void oshmem_info_do_config(bool want_all)
|
||||
/* Build a string describing what level of compliance the mpi_f08
|
||||
module has */
|
||||
char f08_msg[1024];
|
||||
if (OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
|
||||
/* Do we have everything? */
|
||||
if (OMPI_BUILD_FORTRAN_F08_SUBARRAYS &&
|
||||
@ -230,9 +230,9 @@ void oshmem_info_do_config(bool want_all)
|
||||
cprofiling = OMPI_ENABLE_MPI_PROFILING ? "yes" : "no";
|
||||
cxxprofiling = (OMPI_BUILD_CXX_BINDINGS && OMPI_ENABLE_MPI_PROFILING) ? "yes" : "no";
|
||||
cxxexceptions = (OMPI_BUILD_CXX_BINDINGS && OMPI_HAVE_CXX_EXCEPTION_SUPPORT) ? "yes" : "no";
|
||||
fortran_mpifh_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempi_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_USEMPI_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempif08_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) ? "yes" : "no";
|
||||
fortran_mpifh_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempi_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPI_BINDINGS) ? "yes" : "no";
|
||||
fortran_usempif08_profiling = (OMPI_ENABLE_MPI_PROFILING && OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_USEMPIF08_BINDINGS) ? "yes" : "no";
|
||||
have_dl = OPAL_HAVE_DL_SUPPORT ? "yes" : "no";
|
||||
#if OMPI_RTE_ORTE
|
||||
mpirun_prefix_by_default = ORTE_WANT_ORTERUN_PREFIX_BY_DEFAULT ? "yes" : "no";
|
||||
@ -244,7 +244,7 @@ void oshmem_info_do_config(bool want_all)
|
||||
topology_support = OPAL_HAVE_HWLOC ? "yes" : "no";
|
||||
|
||||
/* setup strings that require allocation */
|
||||
if (OMPI_BUILD_FORTRAN_MPIFH_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
|
||||
(void)asprintf(&fortran_mpifh, "yes (%s)",
|
||||
(OPAL_HAVE_WEAK_SYMBOLS ? "all" :
|
||||
(OMPI_FORTRAN_CAPS ? "caps" :
|
||||
@ -401,9 +401,7 @@ void oshmem_info_do_config(bool want_all)
|
||||
|
||||
/* May or may not have the other Fortran sizes */
|
||||
|
||||
if (OMPI_BUILD_FORTRAN_MPIFH_BINDINGS ||
|
||||
OMPI_BUILD_FORTRAN_USEMPI_BINDINGS ||
|
||||
OMPI_BUILD_FORTRAN_USEMPIF08_BINDINGS) {
|
||||
if (OMPI_BUILD_FORTRAN_BINDINGS >= OMPI_FORTRAN_MPIFH_BINDINGS) {
|
||||
opal_info_out("Fort have integer1", "compiler:fortran:have:integer1",
|
||||
OMPI_HAVE_FORTRAN_INTEGER1 ? "yes" : "no");
|
||||
opal_info_out("Fort have integer2", "compiler:fortran:have:integer2",
|
||||
|
Loading…
Reference in New Issue
Block a user