From 2f9ad7c6e6067b162d58d8a8628ba2c38106a6e9 Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Tue, 20 Mar 2012 15:18:53 -0400 Subject: [PATCH] Fix FindMPI for the intel compiler on linux by looking in implict directories. Use the CMAKE__IMPLICIT_LINK_DIRECTORIES to look for libraries that are in the -showme output from mpi programs. This is because some libraries reported by -showme are found there, and FindMPI will fail if they are not found. --- Modules/FindMPI.cmake | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 1be4ccfa7..ae50ca7b9 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -354,6 +354,20 @@ function (interrogate_mpi_compiler lang try_libs) # Extract the set of libraries to link against from the link command # line string(REGEX MATCHALL "(^| )-l([^\" ]+|\"[^\"]+\")" MPI_LIBNAMES "${MPI_LINK_CMDLINE}") + # add the compiler implicit directories because some compilers + # such as the intel compiler have libraries that show up + # in the showme list that can only be found in the implicit + # link directories of the compiler. Do this for C++ and C + # compilers if the implicit link directories are defined. + if (DEFINED CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES) + set(MPI_LINK_PATH + "${MPI_LINK_PATH};${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES}") + endif () + + if (DEFINED CMAKE_C_IMPLICIT_LINK_DIRECTORIES) + set(MPI_LINK_PATH + "${MPI_LINK_PATH};${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}") + endif () # Determine full path names for all of the libraries that one needs # to link against in an MPI program