@@ -449,14 +449,27 @@ end program]])],
449
449
# If we got all the stuff from above, then also look for the new
450
450
# F08 syntax that we can use for the use_mpif08 module.
451
451
452
- # We need to have ignore TKR functionality to build the mpi_f08
452
+ OMPI_FORTRAN_HAVE_TS= 0
453
+ OMPI_MPI_SUBARRAYS_SUPPORTED= .false.
454
+ OMPI_MPI_ASYNC_PROTECTS_NONBLOCKING= .false.
455
+ AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
456
+ [OMPI_FORTRAN_CHECK_TS([OMPI_FORTRAN_HAVE_TS= 1])])
457
+
458
+ AC_SUBST(OMPI_MPI_SUBARRAYS_SUPPORTED)
459
+ AC_SUBST(OMPI_MPI_ASYNC_PROTECTS_NONBLOCKING)
460
+
461
+ # We need to have ignore TKR or the ISO Fortran bindings functionality to build the mpi_f08
453
462
# module
454
- AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
455
- 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
- ])
463
+ AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
464
+ [AS_IF([test $OMPI_FORTRAN_HAVE_IGNORE_TKR -eq 1],
465
+ [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS
466
+ OMPI_FORTRAN_F08_PREDECL= $OMPI_FORTRAN_IGNORE_TKR_PREDECL
467
+ OMPI_FORTRAN_F08_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
468
+ ])
469
+ AS_IF([test $OMPI_FORTRAN_HAVE_TS -eq 1],
470
+ [OMPI_BUILD_FORTRAN_BINDINGS= $OMPI_FORTRAN_USEMPIF08_BINDINGS
471
+ OMPI_MPI_SUBARRAYS_SUPPORTED= .true.
472
+ OMPI_MPI_ASYNC_PROTECTS_NONBLOCKING= .true.])])
460
473
461
474
# The overall "_BIND_C" variable will be set to 1 if we have all
462
475
# the necessary forms of BIND(C)
@@ -590,17 +603,13 @@ end type test_mpi_handle],
590
603
])
591
604
592
605
OMPI_FORTRAN_NEED_WRAPPER_ROUTINES= 1
593
- OMPI_FORTRAN_F08_PREDECL= ' !'
594
- OMPI_FORTRAN_F08_TYPE= real
595
606
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 0
596
607
AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
597
608
test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
598
609
[ # Look for Fortran 2008 assumed rank syntax
599
610
OMPI_FORTRAN_CHECK_F08_ASSUMED_RANK(
600
611
[ # If we have assumed rank, we can build the use
601
612
# mpi_f08 module "better"
602
- OMPI_FORTRAN_F08_PREDECL= ' !'
603
- OMPI_FORTRAN_F08_TYPE= ' type(*), dimension(..)'
604
613
OMPI_FORTRAN_HAVE_F08_ASSUMED_RANK= 1])
605
614
606
615
# Which mpi_f08 implementation are we using?
@@ -630,6 +639,12 @@ end type test_mpi_handle],
630
639
[OMPI_FORTRAN_ELEMENTAL_TYPE= ])])
631
640
AC_SUBST(OMPI_FORTRAN_ELEMENTAL_TYPE)
632
641
642
+ OMPI_FORTRAN_HAVE_C_ISO_FORTRAN= 0
643
+ AS_IF([test $OMPI_TRY_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS && \
644
+ test $OMPI_BUILD_FORTRAN_BINDINGS -ge $OMPI_FORTRAN_USEMPIF08_BINDINGS ],
645
+ [OMPI_FORTRAN_CHECK_TS([OMPI_FORTRAN_HAVE_TS= 1],
646
+ [OMPI_FORTRAN_HAVE_TS= 0])])
647
+
633
648
# Note: the current implementation *only* has wrappers;
634
649
# there is no optimized implementation for a "good"
635
650
# compiler. I'm leaving the above logic in place for
@@ -652,6 +667,8 @@ end type test_mpi_handle],
652
667
AS_IF([test $OMPI_MIN_REQUIRED_FORTRAN_BINDINGS -gt $OMPI_BUILD_FORTRAN_BINDINGS ],
653
668
[AC_MSG_ERROR([Cannot build requested Fortran bindings, aborting])])
654
669
670
+ dnl AC_CONFIG_FILES([ompi/mpi/fortran/use-mpi-f08/bindings/mpi-f-interfaces-bind.h])
671
+
655
672
# -------------------
656
673
# mpif.h final setup
657
674
# -------------------
@@ -792,10 +809,9 @@ end type test_mpi_handle],
792
809
# This goes into mpifort-wrapper-data.txt
793
810
AC_SUBST(OMPI_FORTRAN_USEMPIF08_LIB)
794
811
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)
812
+ # These go into mod/mpi-f08-interfaces.h
813
+ AC_SUBST(OMPI_F08_IGNORE_TKR_PREDECL)
814
+ AC_SUBST(OMPI_F08_IGNORE_TKR_TYPE)
799
815
800
816
AC_SUBST(OMPI_MPI_PREFIX)
801
817
AC_SUBST(OMPI_MPI_BIND_PREFIX)
@@ -877,6 +893,22 @@ end type test_mpi_handle],
877
893
# For configure-fortran-output.h
878
894
AC_SUBST(OMPI_FORTRAN_HAVE_BIND_C)
879
895
896
+ AM_CONDITIONAL(OMPI_FORTRAN_HAVE_TS,
897
+ [test $OMPI_FORTRAN_HAVE_TS -eq 1])
898
+ AC_SUBST(OMPI_FORTRAN_HAVE_TS)
899
+
900
+ AS_IF([test $OMPI_FORTRAN_HAVE_TS -eq 1],
901
+ [OMPI_F08_IGNORE_TKR_TYPE= " type(*), dimension(..)"
902
+ OMPI_F08_IGNORE_TKR_PREDECL= " no attribute required for"
903
+ OMPI_F08_BINDINGS_EXTENSION= " ts"
904
+ OMPI_F08_BINDINGS_TS_SUFFIX= " ts" ],
905
+ [OMPI_F08_IGNORE_TKR_TYPE= $OMPI_FORTRAN_IGNORE_TKR_TYPE
906
+ OMPI_F08_IGNORE_TKR_PREDECL= ${OMPI_FORTRAN_IGNORE_TKR_PREDECL: 1}
907
+ OMPI_F08_BINDINGS_EXTENSION= " f"
908
+ OMPI_F08_BINDINGS_TS_SUFFIX= " " ])
909
+ AC_SUBST(OMPI_F08_BINDINGS_EXTENSION)
910
+ AC_SUBST(OMPI_F08_BINDINGS_TS_SUFFIX)
911
+
880
912
# Somewhat redundant because ompi/Makefile.am won't traverse into
881
913
# ompi/mpi/fortran/use-mpi-f08 if it's not to be built, but we
882
914
# might as well have ompi/mpi/fortran/use-mpi-f08/Makefile.am be
0 commit comments