ENH: Use the HINTS feature of find_library to find the right libraries for

MPI, and act a bit more intelligently when MPI cannot be found.
This commit is contained in:
Douglas Gregor 2008-07-18 08:17:23 -04:00
parent 6e9ea6c65a
commit fa458957ab
1 changed files with 7 additions and 6 deletions

View File

@ -210,11 +210,11 @@ elseif (MPI_COMPILE_CMDLINE)
foreach(LIB ${MPI_LIBNAMES}) foreach(LIB ${MPI_LIBNAMES})
string(REGEX REPLACE "^-l" "" LIB ${LIB}) string(REGEX REPLACE "^-l" "" LIB ${LIB})
set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE) set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE FILEPATH "Cleared" FORCE)
find_library(MPI_LIB ${LIB} PATHS ${MPI_LINK_PATH}) find_library(MPI_LIB ${LIB} HINTS ${MPI_LINK_PATH})
if (MPI_LIB) if (MPI_LIB)
list(APPEND MPI_LIBRARIES ${MPI_LIB}) list(APPEND MPI_LIBRARIES ${MPI_LIB})
else (MPI_LIB) else (MPI_LIB)
status(ERROR "Unable to find MPI library ${LIB}") message(SEND_ERROR "Unable to find MPI library ${LIB}")
endif (MPI_LIB) endif (MPI_LIB)
endforeach(LIB) endforeach(LIB)
set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE INTERNAL "Scratch variable for MPI detection" FORCE) set(MPI_LIB "MPI_LIB-NOTFOUND" CACHE INTERNAL "Scratch variable for MPI detection" FORCE)
@ -222,12 +222,13 @@ elseif (MPI_COMPILE_CMDLINE)
# Chop MPI_LIBRARIES into the old-style MPI_LIBRARY and # Chop MPI_LIBRARIES into the old-style MPI_LIBRARY and
# MPI_EXTRA_LIBRARY. # MPI_EXTRA_LIBRARY.
list(LENGTH MPI_LIBRARIES MPI_NUMLIBS) list(LENGTH MPI_LIBRARIES MPI_NUMLIBS)
if (MPI_NUMLIBS GREATER 0) list(LENGTH MPI_LIBNAMES MPI_NUMLIBS_EXPECTED)
if (MPI_NUMLIBS EQUAL MPI_NUMLIBS_EXPECTED)
list(GET MPI_LIBRARIES 0 MPI_LIBRARY_WORK) list(GET MPI_LIBRARIES 0 MPI_LIBRARY_WORK)
set(MPI_LIBRARY ${MPI_LIBRARY_WORK} CACHE FILEPATH "MPI library to link against" FORCE) set(MPI_LIBRARY ${MPI_LIBRARY_WORK} CACHE FILEPATH "MPI library to link against" FORCE)
else (MPI_NUMLIBS GREATER 0) else (MPI_NUMLIBS EQUAL MPI_NUMLIBS_EXPECTED)
set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND" CACHE STRING "MPI library to link against" FORCE) set(MPI_LIBRARY "MPI_LIBRARY-NOTFOUND" CACHE FILEPATH "MPI library to link against" FORCE)
endif (MPI_NUMLIBS GREATER 0) endif (MPI_NUMLIBS EQUAL MPI_NUMLIBS_EXPECTED)
if (MPI_NUMLIBS GREATER 1) if (MPI_NUMLIBS GREATER 1)
set(MPI_EXTRA_LIBRARY_WORK ${MPI_LIBRARIES}) set(MPI_EXTRA_LIBRARY_WORK ${MPI_LIBRARIES})
list(REMOVE_AT MPI_EXTRA_LIBRARY_WORK 0) list(REMOVE_AT MPI_EXTRA_LIBRARY_WORK 0)