Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Sometimes C and fortran compiler family differs...
authorAugustin Degomme <adegomme@users.noreply.github.com>
Wed, 25 Jul 2018 23:57:28 +0000 (01:57 +0200)
committerAugustin Degomme <adegomme@users.noreply.github.com>
Thu, 26 Jul 2018 00:49:07 +0000 (02:49 +0200)
Try to get around that.. Ugly for now.

CMakeLists.txt
src/smpi/internals/smpi_global.cpp
tools/cmake/src/internal_config.h.in

index 31f0405..25cd68f 100644 (file)
@@ -87,12 +87,15 @@ if ((NOT DEFINED enable_smpi) OR enable_smpi)
     if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
       set(SMPI_Fortran_FLAGS "\"-fpic\" \"-ff2c\" \"-fno-second-underscore\"")
       set(SMPI_Fortran_LIBS "\"-lgfortran\"")
+      set(SMPI_GFORTRAN 1)
     elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
       set(SMPI_Fortran_FLAGS "\"-fPIC\" \"-nofor-main\"")
       set(SMPI_Fortran_LIBS "\"-lifcore\"")
+      set(SMPI_IFORT 1)
     elseif(CMAKE_Fortran_COMPILER_ID MATCHES "PGI|Flang") # flang
       set(SMPI_Fortran_FLAGS "\"-fPIC\"")
       set(SMPI_Fortran_LIBS "")
+      set(SMPI_FLANG 1)
     endif()
 
     set(SMPI_FORTRAN 1)
index 98b9353..66a4be2 100644 (file)
@@ -42,12 +42,12 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_kernel, smpi, "Logging specific to SMPI (ke
 #include <boost/tokenizer.hpp>
 #include <boost/algorithm/string.hpp> /* trim_right / trim_left */
 
-#if defined(__INTEL_COMPILER) || defined(__ICC)
+#if SMPI_IFORT
   extern "C" void for_rtl_init_ (int *, char **);
-#elif defined(__FLANG)
+#elif SMPI_FLANG
   extern "C" void __io_set_argc(int);
   extern "C" void __io_set_argv(char **);
-#elif defined(__GNUC__)
+#elif SMPI_GFORTRAN
   extern "C" void _gfortran_set_args(int, char **);
 #endif
 
@@ -433,12 +433,12 @@ static int smpi_run_entry_point(smpi_entry_point_type entry_point, std::vector<s
   argv[argc] = nullptr;
   char ** argvptr=argv.get();
   simgrid::smpi::ActorExt::init(&argc, &argvptr);
-#if defined(__INTEL_COMPILER) || defined(__ICC)
+#if SMPI_IFORT
   for_rtl_init_ (&argc, argvptr);
-#elif defined(__FLANG)
+#elif SMPI_FLANG
   __io_set_argc(argc);
   __io_set_argv(argvptr);
-#elif defined(__GNUC__)
+#elif SMPI_GFORTRAN
   _gfortran_set_args(argc, argvptr);
 #endif 
   int res = entry_point(argc, argvptr);
index 8b25542..934d648 100644 (file)
 /* 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_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 */