@@ -421,10 +421,7 @@ AC_DEFUN([OMPI_SETUP_MPI_FORTRAN],[
421421 # module
422422 AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
423423 test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1],
424- [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS
425- OMPI_FORTRAN_F08_PREDECL= $OMPI_FORTRAN_IGNORE_TKR_PREDECL
426- OMPI_FORTRAN_F08_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
427- ])
424+ [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS ])
428425
429426 # The overall "_BIND_C" variable will be set to 1 if we have all
430427 # the necessary forms of BIND(C)
@@ -558,17 +555,13 @@ end type test_mpi_handle],
558555 ])
559556
560557 OMPI_FORTRAN_NEED_WRAPPER_ROUTINES= 1
561- OMPI_FORTRAN_F08_PREDECL= ' !'
562- OMPI_FORTRAN_F08_TYPE= real
563558 OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 0
564559 AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
565560 test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
566561 [ # Look for Fortran 2008 assumed rank syntax
567562 OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK(
568563 [ # If we have assumed rank, we can build the use
569564 # mpi_f08 module "better"
570- OMPI_FORTRAN_F08_PREDECL= ' !'
571- OMPI_FORTRAN_F08_TYPE= ' type(*), dimension(..)'
572565 OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 1])
573566
574567 # Which mpi_f08 implementation are we using?
@@ -598,6 +591,12 @@ end type test_mpi_handle],
598591 [OMPI_FORTRAN_ELEMENTAL_TYPE= ])])
599592 AC_SUBST(OMPI_FORTRAN_ELEMENTAL_TYPE)
600593
594+ OMPI_FORTRAN_HAVE_C_ISO_FORTRAN= 0
595+ AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
596+ test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
597+ [OMPI_FORTRAN_CHECK_TS([OMPI_FORTRAN_HAVE_TS= 1],
598+ [OMPI_FORTRAN_HAVE_TS= 0])])
599+
601600 # Note: the current implementation *only* has wrappers;
602601 # there is no optimized implementation for a "good"
603602 # compiler. I'm leaving the above logic in place for
@@ -620,6 +619,8 @@ end type test_mpi_handle],
620619 AS_IF([test $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS -gt $OMPI_BUILD_FORTRAN_BINDINGS ],
621620 [AC_MSG_ERROR([Cannot build requested Fortran bindings, aborting])])
622621
622+ AC_CONFIG_FILES([ompi/mpi/fortran/use-mpi-f08/bindings/mpi-f-interfaces-bind.h])
623+
623624 # -------------------
624625 # mpif.h final setup
625626 # -------------------
@@ -760,10 +761,9 @@ end type test_mpi_handle],
760761 # This goes into mpifort-wrapper-data.txt
761762 AC_SUBST(OMPI_FORTRAN_USEMPIF08_LIB)
762763
763- # These go into interfaces/mpi-f08-interfaces-[no]bind.h (and
764- # mpi-f*-interfaces*.h files)
765- AC_SUBST(OMPI_FORTRAN_F08_PREDECL)
766- AC_SUBST(OMPI_FORTRAN_F08_TYPE)
764+ # These go into mod/mpi-f08-interfaces.h
765+ AC_SUBST(OMPI_F08_IGNORE_TKR_PREDECL)
766+ AC_SUBST(OMPI_F08_IGNORE_TKR_TYPE)
767767
768768 AC_SUBST(OMPI_MPI_PREFIX)
769769 AC_SUBST(OMPI_MPI_BIND_PREFIX)
@@ -845,6 +845,22 @@ end type test_mpi_handle],
845845 # For configure-fortran-output.h
846846 AC_SUBST(OMPI_FORTRAN_HAVE_BIND_C)
847847
848+ AM_CONDITIONAL(OMPI_FORTRAN_HAVE_TS,
849+ [test $OMPI_FORTRAN_HAVE_TS -eq 1])
850+ AC_SUBST(OMPI_FORTRAN_HAVE_TS)
851+
852+ AS_IF([test $OMPI_FORTRAN_HAVE_TS -eq 1],
853+ [OMPI_F08_IGNORE_TKR_TYPE= " type(*), dimension(..)"
854+ OMPI_F08_IGNORE_TKR_PREDECL= " ! no attribute required for"
855+ OMPI_F08_BINDINGS_EXTENSION= " ts"
856+ OMPI_F08_BINDINGS_TS_SUFFIX= " ts" ],
857+ [OMPI_F08_IGNORE_TKR_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
858+ OMPI_F08_IGNORE_TKR_PREDECL= $OMPI_FORTRAN_IGNORE_TKR_PREDECL
859+ OMPI_F08_BINDINGS_EXTENSION= " f"
860+ OMPI_F08_BINDINGS_TS_SUFFIX= " " ])
861+ AC_SUBST(OMPI_F08_BINDINGS_EXTENSION)
862+ AC_SUBST(OMPI_F08_BINDINGS_TS_SUFFIX)
863+
848864 # Somewhat redundant because ompi/Makefile.am won't traverse into
849865 # ompi/mpi/fortran/use-mpi-f08 if it's not to be built, but we
850866 # might as well have ompi/mpi/fortran/use-mpi-f08/Makefile.am be
0 commit comments