Browse Source

Fix FindMPI for the intel compiler on linux by looking in implict directories.

Use the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES to look for libraries
that are in the -showme output from mpi<lang> programs. This is because
some libraries reported by -showme are found there, and FindMPI will
fail if they are not found.
Bill Hoffman 14 years ago
parent
commit
2f9ad7c6e6
1 changed files with 14 additions and 0 deletions
  1. 14 0
      Modules/FindMPI.cmake

+ 14 - 0
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