# cmake script for finding MUMPS sparse direct solver # If libraries are already defined, do nothing IF(SCALAPACK_LIBRARIES) SET(SCALAPACK_FOUND TRUE) RETURN() ENDIF() message(STATUS "Finding SCALAPACK") SET(SCALAPACKLIB "${SCALAPACKROOT}" "${SCALAPACKROOT}/lib" "$ENV{SCALAPACKROOT}" "$ENV{SCALAPACKROOT}/lib" "$ENV{SCALAPACK_ROOT}" "$ENV{SCALAPACK_ROOT}/lib" "${CMAKE_SOURCE_DIR}/scalapack" "${CMAKE_SOURCE_DIR}/scalapack/lib") FIND_LIBRARY(SCALAPACK_LIBRARIES NAMES "scalapack" "scalapack-pvm" "scalapack-mpi" "scalapack-mpich" "scalapack-mpich2" "scalapack-openmpi" "scalapack-lam" HINTS ${SCALAPACKLIB}) IF (SCALAPACK_LIBRARIES) MESSAGE(STATUS "Checking if BLACS library is needed by SCALAPACK") # Check if separate BLACS libraries are needed UNSET(BLACS_EMBEDDED) INCLUDE(${CMAKE_ROOT}/Modules/CheckFortranFunctionExists.cmake) SET(CMAKE_REQUIRED_LIBRARIES_OLD ${CMAKE_REQUIRED_LIBRARIES}) SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_Fortran_REQUIRED_LIBRARIES} ${SCALAPACK_LIBRARIES}) CHECK_FORTRAN_FUNCTION_EXISTS("blacs_gridinit" BLACS_EMBEDDED) SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_OLD}) IF(NOT BLACS_EMBEDDED) MESSAGE(STATUS "Checking if BLACS library is needed by SCALAPACK -- yes") FIND_PACKAGE(BLACS ${SCALAPACK_FIND_QUIETLY}) IF(BLACS_FOUND) SET(SCALAPACK_LIBRARIES ${SCALAPACK_LIBRARIES} ${BLACS_LIBRARIES}) SET(SCALAPACK_FOUND TRUE) ELSE() SET(SCALAPACK_FOUND FALSE) MESSAGE(FATAL_ERROR "BLACS library not found, needed by found SCALAPACK library.") ENDIF() ELSE() MESSAGE(STATUS "Checking if BLACS library is needed by SCALAPACK -- no") SET(SCALAPACK_FOUND TRUE) ENDIF() ENDIF() IF (SCALAPACK_FOUND) IF (NOT SCALAPACK_FIND_QUIETLY) MESSAGE(STATUS "A library with SCALAPACK API found.") MESSAGE(STATUS "SCALAPACK libraries: ${SCALAPACK_LIBRARIES}") ENDIF() ELSE() IF (SCALAPACK_FIND_REQUIRED) MESSAGE(FATAL_ERROR "SCALAPACK library not found.") ENDIF() ENDIF() MARK_AS_ADVANCED( BLACS_EMBEDDED SCALAPACK_FOUND SCALAPACK_LIBRARIES SCALAPACKLIB )