From 3eb2b17541b5b444c453517e8b60c98b681cd857 Mon Sep 17 00:00:00 2001 From: Chuck Atkins Date: Mon, 19 Oct 2020 15:58:38 -0500 Subject: [PATCH] Fortran: Fix submodule and preprocessor issues with Cray Fortran --- bindings/Fortran/CMakeLists.txt | 7 ++++++- .../modules/adios2_adios_init_mod_mpi.F90 | 16 ++++++---------- .../modules/adios2_adios_init_mod_serial.F90 | 16 ++++++---------- .../Fortran/modules/adios2_io_open_mod_mpi.F90 | 7 +++---- .../modules/adios2_io_open_mod_serial.F90 | 7 +++---- 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/bindings/Fortran/CMakeLists.txt b/bindings/Fortran/CMakeLists.txt index 5ad3fe7c95..7dfb13121c 100644 --- a/bindings/Fortran/CMakeLists.txt +++ b/bindings/Fortran/CMakeLists.txt @@ -9,7 +9,12 @@ FortranCInterface_HEADER(FC.h MACRO_NAMESPACE "FC_") FortranCInterface_VERIFY(CXX QUIET) # Check whether the compiler supports Fortran submodule constructs we need. -adios2_check_fortran_submodules(ADIOS2_HAVE_FORTRAN_SUBMODULES) +if(CMAKE_Fortran_COMPILER_ID MATCHES "Cray") + # Cray submodules have naming issues so just don't use them for now + set(ADIOS2_HAVE_FORTRAN_SUBMODULES 0 CACHE INTERNAL "" FORCE) +else() + adios2_check_fortran_submodules(ADIOS2_HAVE_FORTRAN_SUBMODULES) +endif() if(ADIOS2_USE_Fortran_flag_argument_mismatch) set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fallow-argument-mismatch") diff --git a/bindings/Fortran/modules/adios2_adios_init_mod_mpi.F90 b/bindings/Fortran/modules/adios2_adios_init_mod_mpi.F90 index 5132ad17ac..407a608bb7 100644 --- a/bindings/Fortran/modules/adios2_adios_init_mod_mpi.F90 +++ b/bindings/Fortran/modules/adios2_adios_init_mod_mpi.F90 @@ -7,9 +7,9 @@ ! #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES -# define ADIOS2_MODULE_PROCEDURE module & +# define ADIOS2_MODULE_SUBROUTINE module subroutine #else -# define ADIOS2_MODULE_PROCEDURE +# define ADIOS2_MODULE_SUBROUTINE subroutine #endif #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES @@ -33,8 +33,7 @@ module adios2_adios_init_mod_mpi contains - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_mpi(adios, comm, adios2_debug_mode, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_mpi(adios, comm, adios2_debug_mode, ierr) type(adios2_adios), intent(out) :: adios integer, intent(in) :: comm logical, intent(in) :: adios2_debug_mode @@ -44,8 +43,7 @@ subroutine adios2_init_mpi(adios, comm, adios2_debug_mode, ierr) end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_debug_mpi(adios, comm, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_debug_mpi(adios, comm, ierr) type(adios2_adios), intent(out) :: adios integer, intent(in) :: comm integer, intent(out) :: ierr @@ -54,8 +52,7 @@ subroutine adios2_init_debug_mpi(adios, comm, ierr) end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_config_mpi(adios, config_file, comm, adios2_debug_mode, & + ADIOS2_MODULE_SUBROUTINE adios2_init_config_mpi(adios, config_file, comm, adios2_debug_mode, & ierr) type(adios2_adios), intent(out) :: adios character*(*), intent(in) :: config_file @@ -73,8 +70,7 @@ subroutine adios2_init_config_mpi(adios, config_file, comm, adios2_debug_mode, & end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_config_debug_mpi(adios, config_file, comm, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_config_debug_mpi(adios, config_file, comm, ierr) type(adios2_adios), intent(out) :: adios character*(*), intent(in) :: config_file integer, intent(in) :: comm diff --git a/bindings/Fortran/modules/adios2_adios_init_mod_serial.F90 b/bindings/Fortran/modules/adios2_adios_init_mod_serial.F90 index f92fe15d3f..735a08f52d 100644 --- a/bindings/Fortran/modules/adios2_adios_init_mod_serial.F90 +++ b/bindings/Fortran/modules/adios2_adios_init_mod_serial.F90 @@ -7,9 +7,9 @@ ! #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES -# define ADIOS2_MODULE_PROCEDURE module & +# define ADIOS2_MODULE_SUBROUTINE module subroutine #else -# define ADIOS2_MODULE_PROCEDURE +# define ADIOS2_MODULE_SUBROUTINE subroutine #endif #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES @@ -33,8 +33,7 @@ module adios2_adios_init_mod_serial contains - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_serial(adios, adios2_debug_mode, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_serial(adios, adios2_debug_mode, ierr) type(adios2_adios), intent(out) :: adios logical, intent(in) :: adios2_debug_mode integer, intent(out) :: ierr @@ -43,8 +42,7 @@ subroutine adios2_init_serial(adios, adios2_debug_mode, ierr) end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_debug_serial(adios, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_debug_serial(adios, ierr) type(adios2_adios), intent(out) :: adios integer, intent(out) :: ierr @@ -52,8 +50,7 @@ subroutine adios2_init_debug_serial(adios, ierr) end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_config_serial(adios, config_file, adios2_debug_mode, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_config_serial(adios, config_file, adios2_debug_mode, ierr) type(adios2_adios), intent(out) :: adios character*(*), intent(in) :: config_file logical, intent(in) :: adios2_debug_mode @@ -67,8 +64,7 @@ subroutine adios2_init_config_serial(adios, config_file, adios2_debug_mode, ierr end subroutine - ADIOS2_MODULE_PROCEDURE - subroutine adios2_init_config_debug_serial(adios, config_file, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_init_config_debug_serial(adios, config_file, ierr) type(adios2_adios), intent(out) :: adios character*(*), intent(in) :: config_file integer, intent(out) :: ierr diff --git a/bindings/Fortran/modules/adios2_io_open_mod_mpi.F90 b/bindings/Fortran/modules/adios2_io_open_mod_mpi.F90 index 94b2eb917e..e34565557c 100644 --- a/bindings/Fortran/modules/adios2_io_open_mod_mpi.F90 +++ b/bindings/Fortran/modules/adios2_io_open_mod_mpi.F90 @@ -7,9 +7,9 @@ ! #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES -# define ADIOS2_MODULE_PROCEDURE module & +# define ADIOS2_MODULE_SUBROUTINE module subroutine #else -# define ADIOS2_MODULE_PROCEDURE +# define ADIOS2_MODULE_SUBROUTINE subroutine #endif #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES @@ -29,8 +29,7 @@ module adios2_io_open_mod_mpi contains - ADIOS2_MODULE_PROCEDURE - subroutine adios2_open_new_comm(engine, io, name, adios2_mode, comm, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_open_new_comm(engine, io, name, adios2_mode, comm, ierr) type(adios2_engine), intent(out) :: engine type(adios2_io), intent(in) :: io character*(*), intent(in) :: name diff --git a/bindings/Fortran/modules/adios2_io_open_mod_serial.F90 b/bindings/Fortran/modules/adios2_io_open_mod_serial.F90 index 6aacc908dd..9c3ea8345a 100644 --- a/bindings/Fortran/modules/adios2_io_open_mod_serial.F90 +++ b/bindings/Fortran/modules/adios2_io_open_mod_serial.F90 @@ -7,9 +7,9 @@ ! #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES -# define ADIOS2_MODULE_PROCEDURE module & +# define ADIOS2_MODULE_SUBROUTINE module subroutine #else -# define ADIOS2_MODULE_PROCEDURE +# define ADIOS2_MODULE_SUBROUTINE subroutine #endif #ifdef ADIOS2_HAVE_FORTRAN_SUBMODULES @@ -29,8 +29,7 @@ module adios2_io_open_mod_serial contains - ADIOS2_MODULE_PROCEDURE - subroutine adios2_open_old_comm(engine, io, name, adios2_mode, ierr) + ADIOS2_MODULE_SUBROUTINE adios2_open_old_comm(engine, io, name, adios2_mode, ierr) type(adios2_engine), intent(out) :: engine type(adios2_io), intent(in) :: io character*(*), intent(in) :: name