@@ -453,10 +453,7 @@ end program]])],
453453 # module
454454 AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
455455 test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1],
456- [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS
457- OMPI_FORTRAN_F08_PREDECL= $OMPI_FORTRAN_IGNORE_TKR_PREDECL
458- OMPI_FORTRAN_F08_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
459- ])
456+ [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS ])
460457
461458 # The overall "_BIND_C" variable will be set to 1 if we have all
462459 # the necessary forms of BIND(C)
@@ -590,17 +587,13 @@ end type test_mpi_handle],
590587 ])
591588
592589 OMPI_FORTRAN_NEED_WRAPPER_ROUTINES= 1
593- OMPI_FORTRAN_F08_PREDECL= ' !'
594- OMPI_FORTRAN_F08_TYPE= real
595590 OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 0
596591 AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
597592 test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
598593 [ # Look for Fortran 2008 assumed rank syntax
599594 OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK(
600595 [ # If we have assumed rank, we can build the use
601596 # mpi_f08 module "better"
602- OMPI_FORTRAN_F08_PREDECL= ' !'
603- OMPI_FORTRAN_F08_TYPE= ' type(*), dimension(..)'
604597 OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 1])
605598
606599 # Which mpi_f08 implementation are we using?
@@ -630,6 +623,12 @@ end type test_mpi_handle],
630623 [OMPI_FORTRAN_ELEMENTAL_TYPE= ])])
631624 AC_SUBST(OMPI_FORTRAN_ELEMENTAL_TYPE)
632625
626+ OMPI_FORTRAN_HAVE_C_ISO_FORTRAN= 0
627+ AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
628+ test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
629+ [OMPI_FORTRAN_CHECK_TS([OMPI_FORTRAN_HAVE_TS= 1],
630+ [OMPI_FORTRAN_HAVE_TS= 0])])
631+
633632 # Note: the current implementation *only* has wrappers;
634633 # there is no optimized implementation for a "good"
635634 # compiler. I'm leaving the above logic in place for
@@ -652,6 +651,8 @@ end type test_mpi_handle],
652651 AS_IF([test $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS -gt $OMPI_BUILD_FORTRAN_BINDINGS ],
653652 [AC_MSG_ERROR([Cannot build requested Fortran bindings, aborting])])
654653
654+ AC_CONFIG_FILES([ompi/mpi/fortran/use-mpi-f08/bindings/mpi-f-interfaces-bind.h])
655+
655656 # -------------------
656657 # mpif.h final setup
657658 # -------------------
@@ -792,10 +793,9 @@ end type test_mpi_handle],
792793 # This goes into mpifort-wrapper-data.txt
793794 AC_SUBST(OMPI_FORTRAN_USEMPIF08_LIB)
794795
795- # These go into interfaces/mpi-f08-interfaces-[no]bind.h (and
796- # mpi-f*-interfaces*.h files)
797- AC_SUBST(OMPI_FORTRAN_F08_PREDECL)
798- AC_SUBST(OMPI_FORTRAN_F08_TYPE)
796+ # These go into mod/mpi-f08-interfaces.h
797+ AC_SUBST(OMPI_F08_IGNORE_TKR_PREDECL)
798+ AC_SUBST(OMPI_F08_IGNORE_TKR_TYPE)
799799
800800 AC_SUBST(OMPI_MPI_PREFIX)
801801 AC_SUBST(OMPI_MPI_BIND_PREFIX)
@@ -877,6 +877,22 @@ end type test_mpi_handle],
877877 # For configure-fortran-output.h
878878 AC_SUBST(OMPI_FORTRAN_HAVE_BIND_C)
879879
880+ AM_CONDITIONAL(OMPI_FORTRAN_HAVE_TS,
881+ [test $OMPI_FORTRAN_HAVE_TS -eq 1])
882+ AC_SUBST(OMPI_FORTRAN_HAVE_TS)
883+
884+ AS_IF([test $OMPI_FORTRAN_HAVE_TS -eq 1],
885+ [OMPI_F08_IGNORE_TKR_TYPE= " type(*), dimension(..)"
886+ OMPI_F08_IGNORE_TKR_PREDECL= " ! no attribute required for"
887+ OMPI_F08_BINDINGS_EXTENSION= " ts"
888+ OMPI_F08_BINDINGS_TS_SUFFIX= " ts" ],
889+ [OMPI_F08_IGNORE_TKR_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
890+ OMPI_F08_IGNORE_TKR_PREDECL= $OMPI_FORTRAN_IGNORE_TKR_PREDECL
891+ OMPI_F08_BINDINGS_EXTENSION= " f"
892+ OMPI_F08_BINDINGS_TS_SUFFIX= " " ])
893+ AC_SUBST(OMPI_F08_BINDINGS_EXTENSION)
894+ AC_SUBST(OMPI_F08_BINDINGS_TS_SUFFIX)
895+
880896 # Somewhat redundant because ompi/Makefile.am won't traverse into
881897 # ompi/mpi/fortran/use-mpi-f08 if it's not to be built, but we
882898 # might as well have ompi/mpi/fortran/use-mpi-f08/Makefile.am be
0 commit comments