endif()
if(CMAKE_Fortran_COMPILER)
+
# Fortran compiler detected: save it, then replace by smpiff
set(SMPI_Fortran_COMPILER "${CMAKE_Fortran_COMPILER}" CACHE FILEPATH "The real Fortran compiler")
- set(CMAKE_Fortran_COMPILER smpiff)
# Set flags/libs to be used in smpiff
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
SET(HAVE_SMPI 0)
endif()
-#--------------------------------------------------------------------------------------------------
-### Check for GNU dynamic linker
-CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
-if (HAVE_DLFCN_H)
- execute_process(COMMAND ${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/tools/cmake/test_prog/prog_gnu_dynlinker.c ${DL_LIBRARY} -o test_gnu_ld
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- OUTPUT_VARIABLE HAVE_GNU_LD_compil
- )
- if(HAVE_GNU_LD_compil)
- set(HAVE_GNU_LD 0)
- message(STATUS "Warning: test program toward GNU ld failed to compile:")
- message(STATUS "${HAVE_GNU_LD_comp_output}")
- else()
- execute_process(COMMAND ./test_gnu_ld
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
- RESULT_VARIABLE HAVE_GNU_LD_run
- OUTPUT_VARIABLE var_exec
- )
-
- if(NOT HAVE_GNU_LD_run)
- set(HAVE_GNU_LD 1)
- message(STATUS "We are using GNU dynamic linker")
- else()
- set(HAVE_GNU_LD 0)
- message(STATUS "Warning: error while checking for GNU ld:")
- message(STATUS "Test output: '${var_exec}'")
- message(STATUS "Exit status: ${HAVE_GNU_LD_run}")
- endif()
- file(REMOVE test_gnu_ld)
- endif()
-endif()
-
#--------------------------------------------------------------------------------------------------
### Initialize of CONTEXT THREADS
set(SMPIMAIN smpimain)
configure_file(${CMAKE_HOME_DIRECTORY}/include/smpi/mpif.h.in ${CMAKE_BINARY_DIR}/include/smpi/mpif.h @ONLY)
+#configure mpif.f90 to build mpi.mod
+if(SMPI_FORTRAN)
+ set(MODULE_MPIF_IN "module mpi")
+ set(MODULE_MPIF_OUT "end module mpi")
+ configure_file(${CMAKE_HOME_DIRECTORY}/include/smpi/mpif.h.in ${CMAKE_BINARY_DIR}/src/smpi/mpif.f90.generated @ONLY)
+ execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/src/smpi/mpif.f90.generated ${CMAKE_BINARY_DIR}/src/smpi/mpif.f90)
+ set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/include/smpi)
+ add_library(mpi SHARED ${CMAKE_BINARY_DIR}/src/smpi/mpif.f90)
+endif()
+
foreach(script cc cxx ff f90 run)
configure_file(${CMAKE_HOME_DIRECTORY}/src/smpi/smpi${script}.in ${CMAKE_BINARY_DIR}/bin/smpi${script} @ONLY)
endforeach()