FindMPI.cmake doesn't work in Linux when finding openmpi
Hello maintainers,
Here is vcpkg member.
Recently I'm trying to install hdf[parallel] on Linux but I got the following error:
CMake Error at /home/usr/work/vcpkg/downloads/tools/cmake-3.22.2-linux/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find MPI (missing: MPI_C_FOUND)
Call Stack (most recent call first):
/home/usr/work/vcpkg/downloads/tools/cmake-3.22.2-linux/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/home/usr/work/vcpkg/downloads/tools/cmake-3.22.2-linux/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindMPI.cmake:1849 (find_package_handle_standard_args)
/home/usr/work/vcpkg/scripts/buildsystems/vcpkg.cmake:824 (_find_package)
CMakeLists.txt:712 (find_package)
Please ignore the line number since I added many message to FindMPI.cmake.
Then I tried to figure out why it doesn't work:
find MPIEXEC_EXECUTABLE : mpiexec;mpiexec.hydra;mpiexec.mpd;mpirun;lamexec;srun : /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpiexec
_MPI_interrogate_compiler
_MPI_check_compiler MPI_COMPILE_CMDLINE cmd: /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpicc -showme:compile
WRAPPER_OUTPUT: -I/home/usr/work/vcpkg/installed/x64-linux/include -pthread
WRAPPER_RETURN: 0
unset WRAPPER_OUTPUT since WRAPPER_RETURN is 0
set MPI_COMPILE_CMDLINE PARENT_SCOPE
set MPI_COMPILER_RETURN 0 PARENT_SCOPE
MPI_COMPILE_CMDLINE:
_MPI_check_compiler MPI_COMPILE_CMDLINE cmd: /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpicc -compile-info
WRAPPER_OUTPUT: gcc: error: unrecognized command line option ‘-compile-info’; did you mean ‘-fopt-info’?
gcc: fatal error: no input files
compilation terminated.
WRAPPER_RETURN: 1
unset WRAPPER_OUTPUT since WRAPPER_RETURN is 255
set MPI_COMPILE_CMDLINE PARENT_SCOPE
set MPI_COMPILER_RETURN 255 PARENT_SCOPE
MPI_COMPILE_CMDLINE:
_MPI_check_compiler MPI_COMPILE_CMDLINE cmd: /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpicc --cray-print-opts=cflags
WRAPPER_OUTPUT: gcc: error: unrecognized command line option ‘--cray-print-opts=cflags’
gcc: fatal error: no input files
compilation terminated.
WRAPPER_RETURN: 1
unset WRAPPER_OUTPUT since WRAPPER_RETURN is 255
set MPI_COMPILE_CMDLINE PARENT_SCOPE
set MPI_COMPILER_RETURN 255 PARENT_SCOPE
MPI_COMPILE_CMDLINE:
_MPI_check_compiler MPI_COMPILE_CMDLINE cmd: /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpicc -show
WRAPPER_OUTPUT: gcc -I/home/usr/work/vcpkg/installed/x64-linux/include -pthread -Wl,-rpath -Wl,/home/usr/work/vcpkg/installed/x64-linux/lib -Wl,--enable-new-dtags -L/home/usr/work/vcpkg/installed/x64-linux/lib -lmpi
WRAPPER_RETURN: 0
unset WRAPPER_OUTPUT since WRAPPER_RETURN is 0
set MPI_COMPILE_CMDLINE PARENT_SCOPE
set MPI_COMPILER_RETURN 0 PARENT_SCOPE
_MPI_check_compiler MPI_COMPILE_CMDLINE cmd: /home/usr/work/vcpkg/installed/x64-linux/tools/openmpi/bin/mpicc -showme
WRAPPER_OUTPUT: gcc -I/home/usr/work/vcpkg/installed/x64-linux/include -pthread -Wl,-rpath -Wl,/home/usr/work/vcpkg/installed/x64-linux/lib -Wl,--enable-new-dtags -L/home/usr/work/vcpkg/installed/x64-linux/lib -lmpi
WRAPPER_RETURN: 0
unset WRAPPER_OUTPUT since WRAPPER_RETURN is 0
set MPI_COMPILE_CMDLINE PARENT_SCOPE
set MPI_COMPILER_RETURN 0 PARENT_SCOPE
MPI_COMPILER_RETURN: 0
MPI_COMPILE_CMDLINE:
return
CMake Error at /home/usr/work/vcpkg/downloads/tools/cmake-3.22.2-linux/cmake-3.22.2-linux-x86_64/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find MPI (missing: MPI_C_FOUND)
It seems that:
if(NOT WRAPPER_RETURN EQUAL 0)
Should be
if(NOT ${WRAPPER_RETURN} EQUAL 0)
if (NOT (MPI_COMPILER_RETURN EQUAL 0) OR NOT (DEFINED MPI_COMPILE_CMDLINE))
Should be
if (NOT (${MPI_COMPILER_RETURN} EQUAL 0) OR NOT (DEFINED MPI_COMPILE_CMDLINE))
I did the changes so it works as expected.
Is that correct?
Edited by Brad King