Try to get around that.. Ugly for now.
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(SMPI_Fortran_FLAGS "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
set(SMPI_Fortran_LIBS "\"-lgfortran\"")
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(SMPI_Fortran_FLAGS "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
set(SMPI_Fortran_LIBS "\"-lgfortran\"")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(SMPI_Fortran_FLAGS "\"-fPIC\" \"-nofor-main\"")
set(SMPI_Fortran_LIBS "\"-lifcore\"")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
set(SMPI_Fortran_FLAGS "\"-fPIC\" \"-nofor-main\"")
set(SMPI_Fortran_LIBS "\"-lifcore\"")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI|Flang") # flang
set(SMPI_Fortran_FLAGS "\"-fPIC\"")
set(SMPI_Fortran_LIBS "")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI|Flang") # flang
set(SMPI_Fortran_FLAGS "\"-fPIC\"")
set(SMPI_Fortran_LIBS "")
endif()
set(SMPI_FORTRAN 1)
endif()
set(SMPI_FORTRAN 1)
#include <boost/tokenizer.hpp>
#include <boost/algorithm/string.hpp> /* trim_right / trim_left */
#include <boost/tokenizer.hpp>
#include <boost/algorithm/string.hpp> /* trim_right / trim_left */
-#if defined(__INTEL_COMPILER) || defined(__ICC)
extern "C" void for_rtl_init_ (int *, char **);
extern "C" void for_rtl_init_ (int *, char **);
extern "C" void __io_set_argc(int);
extern "C" void __io_set_argv(char **);
extern "C" void __io_set_argc(int);
extern "C" void __io_set_argv(char **);
extern "C" void _gfortran_set_args(int, char **);
#endif
extern "C" void _gfortran_set_args(int, char **);
#endif
argv[argc] = nullptr;
char ** argvptr=argv.get();
simgrid::smpi::ActorExt::init(&argc, &argvptr);
argv[argc] = nullptr;
char ** argvptr=argv.get();
simgrid::smpi::ActorExt::init(&argc, &argvptr);
-#if defined(__INTEL_COMPILER) || defined(__ICC)
for_rtl_init_ (&argc, argvptr);
for_rtl_init_ (&argc, argvptr);
__io_set_argc(argc);
__io_set_argv(argvptr);
__io_set_argc(argc);
__io_set_argv(argvptr);
_gfortran_set_args(argc, argvptr);
#endif
int res = entry_point(argc, argvptr);
_gfortran_set_args(argc, argvptr);
#endif
int res = entry_point(argc, argvptr);
/* SMPI variables */
/* SMPI enabled */
#cmakedefine01 HAVE_SMPI
/* SMPI variables */
/* SMPI enabled */
#cmakedefine01 HAVE_SMPI
-/* Fortran language is available for SMPI */
+/* Fortran language is available for SMPI, and which one */
#cmakedefine01 SMPI_FORTRAN
#cmakedefine01 SMPI_FORTRAN
+#cmakedefine01 SMPI_GFORTRAN
+#cmakedefine01 SMPI_FLANG
+#cmakedefine01 SMPI_IFORT
/* We have mmap and objdump to handle privatization */
#cmakedefine01 HAVE_PRIVATIZATION
/* We have PAPI to fine-grain trace execution time */
/* We have mmap and objdump to handle privatization */
#cmakedefine01 HAVE_PRIVATIZATION
/* We have PAPI to fine-grain trace execution time */