From 716ae59fb79d85eccccddc948ee49dcc14f1b897 Mon Sep 17 00:00:00 2001 From: degomme Date: Wed, 19 Oct 2016 11:50:48 +0200 Subject: [PATCH] cleanup handling of Fortran compiler in cmake (Patch from M. Volat) --- CMakeLists.txt | 36 ++++++++++++------------------------ src/smpi/smpif90.in | 2 +- src/smpi/smpiff.in | 2 +- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 76a32dabdd..892895526b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,34 +66,22 @@ include(${CMAKE_HOME_DIRECTORY}/tools/cmake/Option.cmake) ### SMPI vs. Fortran if ((NOT DEFINED enable_smpi) OR enable_smpi) + # First unset the compiler in case we're re-running cmake over a previous + # configuration where it was saved as smpiff + unset(CMAKE_Fortran_COMPILER) + if(enable_fortran) - include(FindGFortran) + enable_language(Fortran OPTIONAL) else() SET(SMPI_FORTRAN 0) endif() - if(NOT APPLE) # smpi is enabled by default - # Call enable_language(Fortran) in order to load the build rules for this language, needed by - # teshsuite/smpi/mpich-test/. Use CMAKE_FORCE_Fortran_COMPILER to bypass checks for a working compiler (smpiff - # doesn't exist at configure time). - include(CMakeForceCompiler) - if(NOT COMMAND CMAKE_FORCE_Fortran_COMPILER) - MACRO(CMAKE_FORCE_Fortran_COMPILER compiler id) - SET(CMAKE_Fortran_COMPILER "${compiler}") - SET(CMAKE_Fortran_COMPILER_ID_RUN TRUE) - SET(CMAKE_Fortran_COMPILER_ID ${id}) - SET(CMAKE_Fortran_COMPILER_WORKS TRUE) - SET(CMAKE_Fortran_COMPILER_FORCED TRUE) - - # Set old compiler id variables. - IF("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") - SET(CMAKE_COMPILER_IS_GNUG77 1) - ENDIF("${CMAKE_Fortran_COMPILER_ID}" MATCHES "GNU") - ENDMACRO(CMAKE_FORCE_Fortran_COMPILER) - endif() - CMAKE_FORCE_Fortran_COMPILER(smpiff smpiff) - enable_language(Fortran OPTIONAL) - endif() + if(CMAKE_Fortran_COMPILER) + # Fortran compiler detected: save it, then replace by smpiff + set(SAVED_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "The real Fortran compiler") + set(CMAKE_Fortran_COMPILER smpiff) + set(SMPI_FORTRAN 1) + endif(CMAKE_Fortran_COMPILER) endif() #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# @@ -947,7 +935,7 @@ else() endif() endif() if(CMAKE_Fortran_COMPILER) - message(" Compiler: Fortran ...........: ${CMAKE_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})") + message(" Compiler: Fortran ...........: ${SAVED_Fortran_COMPILER} (id: ${CMAKE_Fortran_COMPILER_ID})") message(" version .............: ${CMAKE_Fortran_COMPILER_VERSION}") endif() message(" Linker: .....................: ${CMAKE_LINKER}") diff --git a/src/smpi/smpif90.in b/src/smpi/smpif90.in index 231a4b795a..cccf2141bf 100644 --- a/src/smpi/smpif90.in +++ b/src/smpi/smpif90.in @@ -9,7 +9,7 @@ SIMGRID_VERSION="@SIMGRID_VERSION_STRING@" SIMGRID_GITHASH="@SIMGRID_GITHASH@" -F90=@GFORTRAN_EXE@ +F90=@SAVED_Fortran_COMPILER@ INCLUDEARGS="@includeflag@" CMAKE_LINKARGS="-L@libdir@" diff --git a/src/smpi/smpiff.in b/src/smpi/smpiff.in index fe27e142a5..ca37fc494c 100644 --- a/src/smpi/smpiff.in +++ b/src/smpi/smpiff.in @@ -9,7 +9,7 @@ SIMGRID_VERSION="@SIMGRID_VERSION_STRING@" SIMGRID_GITHASH="@SIMGRID_GITHASH@" -F77=@GFORTRAN_EXE@ +F77=@SAVED_Fortran_COMPILER@ INCLUDEARGS="@includeflag@" CMAKE_LINKARGS="-L@libdir@" -- 2.20.1