From df90f4f01780cb39c1b2fb88e5dd23ad859ea04e Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 7 Nov 2013 21:45:53 +0100 Subject: [PATCH 1/1] Look for gfortran before enabling support for smpif90. (cherry picked from commit 85b2dce67ce8e0e1b4c68f6fbbf4d6f427bca3ff) --- buildtools/Cmake/AddTests.cmake | 14 ++++---- buildtools/Cmake/CompleteInFiles.cmake | 11 ++++--- buildtools/Cmake/DefinePackages.cmake | 1 + buildtools/Cmake/Modules/FindGFortran.cmake | 32 +++++++++++++++++++ buildtools/Cmake/PrintArgs.cmake | 1 + examples/smpi/energy/f90/CMakeLists.txt | 2 +- src/smpi/smpif90.in | 2 +- .../smpi/mpich3-test/f90/coll/CMakeLists.txt | 2 +- .../mpich3-test/f90/datatype/CMakeLists.txt | 2 +- .../smpi/mpich3-test/f90/init/CMakeLists.txt | 2 +- .../smpi/mpich3-test/f90/pt2pt/CMakeLists.txt | 2 +- 11 files changed, 54 insertions(+), 17 deletions(-) create mode 100644 buildtools/Cmake/Modules/FindGFortran.cmake diff --git a/buildtools/Cmake/AddTests.cmake b/buildtools/Cmake/AddTests.cmake index 41f7fae252..ee959c333c 100644 --- a/buildtools/Cmake/AddTests.cmake +++ b/buildtools/Cmake/AddTests.cmake @@ -438,9 +438,9 @@ if(NOT enable_memcheck) ADD_TEST(smpi-energy ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/energy.tesh) if(SMPI_F2C) ADD_TEST(smpi-energy-f77 ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f77/energy.tesh) - if(NOT HAVE_MC) - ADD_TEST(smpi-energy-f90 ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90/energy.tesh) - endif() + endif() + if(SMPI_F90) + ADD_TEST(smpi-energy-f90 ${TESH_COMMAND} ${TESH_OPTION} --setenv srcdir=${CMAKE_HOME_DIRECTORY}/examples/smpi/energy --cd ${CMAKE_BINARY_DIR}/examples/smpi/energy ${CMAKE_HOME_DIRECTORY}/examples/smpi/energy/f90/energy.tesh) endif() if(HAVE_TRACING) @@ -530,10 +530,10 @@ if(NOT enable_memcheck) if(SMPI_F2C) ADD_TEST(smpi-mpich3-thread-f77 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f77/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f77/ -tests=testlist -execarg=--cfg=contexts/factory:thread -execarg=--cfg=contexts/stack_size:8000) set_tests_properties(smpi-mpich3-thread-f77 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!") - if(NOT HAVE_MC) - ADD_TEST(smpi-mpich3-thread-f90 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread) - set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!") - endif() + endif() + if(SMPI_F90) + ADD_TEST(smpi-mpich3-thread-f90 ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/teshsuite/smpi/mpich3-test/f90/ perl ${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/runtests -mpiexec=${CMAKE_BINARY_DIR}/smpi_script/bin/smpirun -srcdir=${CMAKE_HOME_DIRECTORY}/teshsuite/smpi/mpich3-test/f90/ -tests=testlist -execarg=--cfg=contexts/factory:thread) + set_tests_properties(smpi-mpich3-thread-f90 PROPERTIES PASS_REGULAR_EXPRESSION "tests passed!") endif() endif() diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index eaf6c294ee..21f068fc00 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -78,10 +78,6 @@ set(HAVE_GTNETS 0) if(enable_gtnets) include(FindGTnets) endif() -if(enable_smpi) - include(FindF2c) - SET(HAVE_SMPI 1) -endif() if(enable_java) find_package(Java REQUIRED COMPONENTS Runtime Development) find_package(JNI REQUIRED) @@ -221,6 +217,13 @@ else() SET(MMALLOC_WANT_OVERRIDE_LEGACY 0) endif() +# must come after having set HAVE_MC (FindGFortran uses it) +if(enable_smpi) + include(FindF2c) + include(FindGFortran) + SET(HAVE_SMPI 1) +endif() + #-------------------------------------------------------------------------------------------------- ### Check for some architecture dependent values CHECK_TYPE_SIZE(int SIZEOF_INT) diff --git a/buildtools/Cmake/DefinePackages.cmake b/buildtools/Cmake/DefinePackages.cmake index 7747b9cfd5..c8652bdef0 100644 --- a/buildtools/Cmake/DefinePackages.cmake +++ b/buildtools/Cmake/DefinePackages.cmake @@ -970,6 +970,7 @@ set(CMAKE_SOURCE_FILES buildtools/Cmake/MakeLib.cmake buildtools/Cmake/MakeLibWin.cmake buildtools/Cmake/Modules/FindF2c.cmake + buildtools/Cmake/Modules/FindGFortran.cmake buildtools/Cmake/Modules/FindGTnets.cmake buildtools/Cmake/Modules/FindGraphviz.cmake buildtools/Cmake/Modules/FindLibunwind.cmake diff --git a/buildtools/Cmake/Modules/FindGFortran.cmake b/buildtools/Cmake/Modules/FindGFortran.cmake new file mode 100644 index 0000000000..b15409e561 --- /dev/null +++ b/buildtools/Cmake/Modules/FindGFortran.cmake @@ -0,0 +1,32 @@ +find_program(GFORTRAN_EXE + NAME gfortran + PATH_SUFFIXES bin/ + PATHS + /opt + /opt/local + /opt/csw + /sw + /usr + ) + +mark_as_advanced(GFORTRAN_EXE) + +message(STATUS "Looking for bin gfortran") +if(GFORTRAN_EXE) + message(STATUS "Found gfortran: ${GFORTRAN_EXE}") +else() + message(STATUS "Looking for bin gfortran - not found") +endif() + +set(SMPI_F90 0) +if(GFORTRAN_EXE) + if(HAVE_MC) + message("-- Fortran 90 support for smpi is currently not compatible with model checking.") + else() + set(SMPI_F90 1) + endif() +endif() + +if(NOT SMPI_F90) + message("-- Fortran 90 support for smpi is disabled.") +endif() diff --git a/buildtools/Cmake/PrintArgs.cmake b/buildtools/Cmake/PrintArgs.cmake index 200f671745..054222c664 100644 --- a/buildtools/Cmake/PrintArgs.cmake +++ b/buildtools/Cmake/PrintArgs.cmake @@ -111,6 +111,7 @@ message(" Compile Lua .........: ${HAVE_LUA}") message(" Compile Smpi ........: ${HAVE_SMPI}") message(" Compile MPI testsuite: ${enable_smpi_MPICH3_testsuite}") message(" Compile Smpi f77 ....: ${SMPI_F2C}") +message(" Compile Smpi f90 ....: ${SMPI_F90}") message(" Compile Static ......: ${enable_lib_static}") message("") message(" Maintainer mode .....: ${enable_maintainer_mode}") diff --git a/examples/smpi/energy/f90/CMakeLists.txt b/examples/smpi/energy/f90/CMakeLists.txt index 03d1288e23..84b55b5e6c 100644 --- a/examples/smpi/energy/f90/CMakeLists.txt +++ b/examples/smpi/energy/f90/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -if(enable_smpi AND SMPI_F2C) +if(enable_smpi AND SMPI_F90) set(CMAKE_Fortran_COMPILER "${CMAKE_BINARY_DIR}/smpi_script/bin/smpif90") set(EXECUTABLE_OUTPUT_PATH "${CMAKE_CURRENT_BINARY_DIR}") diff --git a/src/smpi/smpif90.in b/src/smpi/smpif90.in index 5dd979e574..39ed749836 100644 --- a/src/smpi/smpif90.in +++ b/src/smpi/smpif90.in @@ -1,6 +1,6 @@ #! /bin/bash -F90=gfortran +F90=@GFORTRAN_EXE@ INCLUDEARGS="@includeflag@" CMAKE_LINKARGS="-L@libdir@" diff --git a/teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt b/teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt index 1d9cc9e34b..b2da1526bc 100644 --- a/teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt +++ b/teshsuite/smpi/mpich3-test/f90/coll/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C) +if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90) if(WIN32) set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h") else() diff --git a/teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt b/teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt index a8a0b8490c..ca51980a93 100644 --- a/teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt +++ b/teshsuite/smpi/mpich3-test/f90/datatype/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C) +if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90) if(WIN32) set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h") else() diff --git a/teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt b/teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt index d64be2fbdb..3e4ec844f3 100644 --- a/teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt +++ b/teshsuite/smpi/mpich3-test/f90/init/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C) +if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90) if(WIN32) set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h") else() diff --git a/teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt b/teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt index 682e23c7f2..dfed73b875 100644 --- a/teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt +++ b/teshsuite/smpi/mpich3-test/f90/pt2pt/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.6) -if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F2C) +if(enable_smpi AND enable_smpi_MPICH3_testsuite AND SMPI_F90) if(WIN32) set(CMAKE_C_FLAGS "-include ${CMAKE_HOME_DIRECTORY}/include/smpi/smpi_main.h") else() -- 2.20.1