Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/cmake/Modules/FindParMetis.cmake
3206 views
# CMake script for finding ParMetis

# If libraries are already defined, do nothing
IF(ParMetis_LIBRARIES AND ParMetis_INCLUDE_DIR)
  SET(ParMetis_FOUND TRUE)
  MESSAGE(STATUS "Found ParMetis")
  ADD_DEFINITIONS(-DHAVE_PARMETIS)
  RETURN()
ENDIF()

SET(ParMetis_FOUND FALSE)
MESSAGE(STATUS "Finding ParMetis")

SET(PARMETISINCLUDE
  "${PARMETISROOT}/include"
  "$ENV{PARMETISROOT}/include"
  "$ENV{PARMETIS_ROOT}/include"
  "${CMAKE_SOURCE_DIR}/parmetis/include"
  INTERNAL)

# Find include
SET(PARMETIS_INCLUDENAME "parmetis.h" INTERNAL)
FIND_PATH(ParMetis_INCLUDE_DIR
  NAMES
  ${PARMETIS_INCLUDENAME}
  HINTS
  ${PARMETISINCLUDE}
  )

SET(PARMETISLIB
  "${PARMETISROOT}/lib"
  "$ENV{PARMETISROOT}/lib"
  "$ENV{PARMETIS_ROOT}/lib"
  "${CMAKE_SOURCE_DIR}/parmetis/lib"
  INTERNAL)

# Find library
FIND_LIBRARY(ParMetis_LIBRARIES
  parmetis
  HINTS
  ${PARMETISLIB}
  )

IF (ParMetis_LIBRARIES AND ParMetis_INCLUDE_DIR)
  SET(ParMetis_FOUND TRUE)
  ADD_DEFINITIONS(-DHAVE_PARMETIS)
ENDIF()

IF (ParMetis_FOUND)
  IF (NOT ParMetis_FIND_QUIETLY)
    MESSAGE(STATUS "A library with ParMetis API found.")
    MESSAGE(STATUS "ParMetis include dir: ${ParMetis_INCLUDE_DIR}")
    MESSAGE(STATUS "ParMetis libraries: ${ParMetis_LIBRARIES}")
  ENDIF()
ELSE()
  IF (ParMetis_FIND_REQUIRED)
    MESSAGE(FATAL_ERROR "ParMetis libraries not found.")
  ENDIF()
ENDIF()

MARK_AS_ADVANCED(
  PARMETISINCLUDE
  PARMETISLIB
  PARMETIS_INCLUDENAME
  ParMetis_INCLUDE_DIR
  ParMetis_LIBRARIES
  )