Merge topic 'FindMPI-Intel-5.0.1'
7626c8dc FindMPI: Workaround Intel MPI 5.0.1 exit code problem (#15182) f5ede300 FindMPI: Factor out compiler wrapper execution into helper
This commit is contained in:
commit
c2b8874289
@ -188,6 +188,21 @@ foreach(SystemPrefixDir ${CMAKE_SYSTEM_PREFIX_PATH})
|
|||||||
endforeach()
|
endforeach()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
function (_mpi_check_compiler compiler options cmdvar resvar)
|
||||||
|
execute_process(
|
||||||
|
COMMAND "${compiler}" ${options}
|
||||||
|
OUTPUT_VARIABLE cmdline OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_VARIABLE cmdline ERROR_STRIP_TRAILING_WHITESPACE
|
||||||
|
RESULT_VARIABLE success)
|
||||||
|
# Intel MPI 5.0.1 will return a zero return code even when the
|
||||||
|
# argument to the MPI compiler wrapper is unknown. Attempt to
|
||||||
|
# catch this case.
|
||||||
|
if("${cmdline}" MATCHES "undefined reference")
|
||||||
|
set(success 255 )
|
||||||
|
endif()
|
||||||
|
set(${cmdvar} "${cmdline}" PARENT_SCOPE)
|
||||||
|
set(${resvar} "${success}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
#
|
#
|
||||||
# interrogate_mpi_compiler(lang try_libs)
|
# interrogate_mpi_compiler(lang try_libs)
|
||||||
@ -220,12 +235,7 @@ function (interrogate_mpi_compiler lang try_libs)
|
|||||||
if (MPI_${lang}_COMPILER)
|
if (MPI_${lang}_COMPILER)
|
||||||
# Check whether the -showme:compile option works. This indicates that we have either OpenMPI
|
# Check whether the -showme:compile option works. This indicates that we have either OpenMPI
|
||||||
# or a newer version of LAM-MPI, and implies that -showme:link will also work.
|
# or a newer version of LAM-MPI, and implies that -showme:link will also work.
|
||||||
execute_process(
|
_mpi_check_compiler("${MPI_${lang}_COMPILER}" "-showme:compile" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
|
||||||
COMMAND ${MPI_${lang}_COMPILER} -showme:compile
|
|
||||||
OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE
|
|
||||||
RESULT_VARIABLE MPI_COMPILER_RETURN)
|
|
||||||
|
|
||||||
if (MPI_COMPILER_RETURN EQUAL 0)
|
if (MPI_COMPILER_RETURN EQUAL 0)
|
||||||
# If we appear to have -showme:compile, then we should
|
# If we appear to have -showme:compile, then we should
|
||||||
# also have -showme:link. Try it.
|
# also have -showme:link. Try it.
|
||||||
@ -257,20 +267,12 @@ function (interrogate_mpi_compiler lang try_libs)
|
|||||||
|
|
||||||
# Older versions of LAM-MPI have "-showme". Try to find that.
|
# Older versions of LAM-MPI have "-showme". Try to find that.
|
||||||
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
||||||
execute_process(
|
_mpi_check_compiler("${MPI_${lang}_COMPILER}" "-showme" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
|
||||||
COMMAND ${MPI_${lang}_COMPILER} -showme
|
|
||||||
OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE
|
|
||||||
RESULT_VARIABLE MPI_COMPILER_RETURN)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# MVAPICH uses -compile-info and -link-info. Try them.
|
# MVAPICH uses -compile-info and -link-info. Try them.
|
||||||
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
||||||
execute_process(
|
_mpi_check_compiler("${MPI_${lang}_COMPILER}" "-compile-info" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
|
||||||
COMMAND ${MPI_${lang}_COMPILER} -compile-info
|
|
||||||
OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE
|
|
||||||
RESULT_VARIABLE MPI_COMPILER_RETURN)
|
|
||||||
|
|
||||||
# If we have compile-info, also have link-info.
|
# If we have compile-info, also have link-info.
|
||||||
if (MPI_COMPILER_RETURN EQUAL 0)
|
if (MPI_COMPILER_RETURN EQUAL 0)
|
||||||
@ -290,11 +292,7 @@ function (interrogate_mpi_compiler lang try_libs)
|
|||||||
|
|
||||||
# MPICH just uses "-show". Try it.
|
# MPICH just uses "-show". Try it.
|
||||||
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
if (NOT MPI_COMPILER_RETURN EQUAL 0)
|
||||||
execute_process(
|
_mpi_check_compiler("${MPI_${lang}_COMPILER}" "-show" MPI_COMPILE_CMDLINE MPI_COMPILER_RETURN)
|
||||||
COMMAND ${MPI_${lang}_COMPILER} -show
|
|
||||||
OUTPUT_VARIABLE MPI_COMPILE_CMDLINE OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
ERROR_VARIABLE MPI_COMPILE_CMDLINE ERROR_STRIP_TRAILING_WHITESPACE
|
|
||||||
RESULT_VARIABLE MPI_COMPILER_RETURN)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MPI_COMPILER_RETURN EQUAL 0)
|
if (MPI_COMPILER_RETURN EQUAL 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user