Fix issues with removing try_compile input file.
- Don't remove input file - Put output in ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY} - Remove try_compile variable from the cache after using
This commit is contained in:
parent
e00d2c4d51
commit
8756e77fb4
|
@ -443,10 +443,14 @@ function (interrogate_mpi_compiler lang try_libs)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
# This function attempts to compile with the regular compiler, to see if MPI programs
|
||||||
|
# work with it. This is a last ditch attempt after we've tried interrogating mpicc and
|
||||||
|
# friends, and after we've tried to find generic libraries. Works on machines like
|
||||||
|
# Cray XE6, where the modules environment changes what MPI version cc, CC, and ftn use.
|
||||||
function(try_regular_compiler lang success)
|
function(try_regular_compiler lang success)
|
||||||
# last ditch attempt: just try to compile something with the regular compiler
|
set(scratch_directory ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
|
||||||
if (${lang} STREQUAL Fortran)
|
if (${lang} STREQUAL Fortran)
|
||||||
set(test_file ${CMAKE_CURRENT_BINARY_DIR}/cmake_mpi_test.f90)
|
set(test_file ${scratch_directory}/cmake_mpi_test.f90)
|
||||||
file(WRITE ${test_file}
|
file(WRITE ${test_file}
|
||||||
"program hello\n"
|
"program hello\n"
|
||||||
"include 'mpif.h'\n"
|
"include 'mpif.h'\n"
|
||||||
|
@ -456,9 +460,9 @@ function(try_regular_compiler lang success)
|
||||||
"end\n")
|
"end\n")
|
||||||
else()
|
else()
|
||||||
if (${lang} STREQUAL CXX)
|
if (${lang} STREQUAL CXX)
|
||||||
set(test_file ${CMAKE_CURRENT_BINARY_DIR}/cmake_mpi_test.cpp)
|
set(test_file ${scratch_directory}/cmake_mpi_test.cpp)
|
||||||
else()
|
else()
|
||||||
set(test_file ${CMAKE_CURRENT_BINARY_DIR}/cmake_mpi_test.c)
|
set(test_file ${scratch_directory}/cmake_mpi_test.c)
|
||||||
endif()
|
endif()
|
||||||
file(WRITE ${test_file}
|
file(WRITE ${test_file}
|
||||||
"#include <mpi.h>\n"
|
"#include <mpi.h>\n"
|
||||||
|
@ -467,8 +471,8 @@ function(try_regular_compiler lang success)
|
||||||
" MPI_Finalize();\n"
|
" MPI_Finalize();\n"
|
||||||
"}\n")
|
"}\n")
|
||||||
endif()
|
endif()
|
||||||
try_compile(worked ${CMAKE_CURRENT_BINARY_DIR} ${test_file})
|
try_compile(compiler_has_mpi ${scratch_directory} ${test_file})
|
||||||
if (worked)
|
if (compiler_has_mpi)
|
||||||
set(MPI_${lang}_NO_INTERROGATE ${CMAKE_${lang}_COMPILER} CACHE STRING "Whether to interrogate MPI ${lang} compiler" FORCE)
|
set(MPI_${lang}_NO_INTERROGATE ${CMAKE_${lang}_COMPILER} CACHE STRING "Whether to interrogate MPI ${lang} compiler" FORCE)
|
||||||
set(MPI_${lang}_COMPILER ${CMAKE_${lang}_COMPILER} CACHE STRING "MPI ${lang} compiler" FORCE)
|
set(MPI_${lang}_COMPILER ${CMAKE_${lang}_COMPILER} CACHE STRING "MPI ${lang} compiler" FORCE)
|
||||||
set(MPI_${lang}_COMPILE_FLAGS "" CACHE STRING "MPI ${lang} compilation flags" FORCE)
|
set(MPI_${lang}_COMPILE_FLAGS "" CACHE STRING "MPI ${lang} compilation flags" FORCE)
|
||||||
|
@ -476,8 +480,8 @@ function(try_regular_compiler lang success)
|
||||||
set(MPI_${lang}_LINK_FLAGS "" CACHE STRING "MPI ${lang} linking flags" FORCE)
|
set(MPI_${lang}_LINK_FLAGS "" CACHE STRING "MPI ${lang} linking flags" FORCE)
|
||||||
set(MPI_${lang}_LIBRARIES "" CACHE STRING "MPI ${lang} libraries to link against" FORCE)
|
set(MPI_${lang}_LIBRARIES "" CACHE STRING "MPI ${lang} libraries to link against" FORCE)
|
||||||
endif()
|
endif()
|
||||||
set(${success} ${worked} PARENT_SCOPE)
|
set(${success} ${compiler_has_mpi} PARENT_SCOPE)
|
||||||
file(REMOVE ${test_file})
|
unset(compiler_has_mpi CACHE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# End definitions, commence real work here.
|
# End definitions, commence real work here.
|
||||||
|
|
Loading…
Reference in New Issue