1# Pastix requires METIS or METIS (partitioning and reordering tools) 2 3if (METIS_INCLUDES AND METIS_LIBRARIES) 4 set(METIS_FIND_QUIETLY TRUE) 5endif (METIS_INCLUDES AND METIS_LIBRARIES) 6 7find_path(METIS_INCLUDES 8 NAMES 9 metis.h 10 PATHS 11 $ENV{METISDIR} 12 ${INCLUDE_INSTALL_DIR} 13 PATH_SUFFIXES 14 . 15 metis 16 include 17) 18 19macro(_metis_check_version) 20 file(READ "${METIS_INCLUDES}/metis.h" _metis_version_header) 21 22 string(REGEX MATCH "define[ \t]+METIS_VER_MAJOR[ \t]+([0-9]+)" _metis_major_version_match "${_metis_version_header}") 23 set(METIS_MAJOR_VERSION "${CMAKE_MATCH_1}") 24 string(REGEX MATCH "define[ \t]+METIS_VER_MINOR[ \t]+([0-9]+)" _metis_minor_version_match "${_metis_version_header}") 25 set(METIS_MINOR_VERSION "${CMAKE_MATCH_1}") 26 string(REGEX MATCH "define[ \t]+METIS_VER_SUBMINOR[ \t]+([0-9]+)" _metis_subminor_version_match "${_metis_version_header}") 27 set(METIS_SUBMINOR_VERSION "${CMAKE_MATCH_1}") 28 if(NOT METIS_MAJOR_VERSION) 29 message(WARNING "Could not determine Metis version. Assuming version 4.0.0") 30 set(METIS_VERSION 4.0.0) 31 else() 32 set(METIS_VERSION ${METIS_MAJOR_VERSION}.${METIS_MINOR_VERSION}.${METIS_SUBMINOR_VERSION}) 33 endif() 34 if(${METIS_VERSION} VERSION_LESS ${Metis_FIND_VERSION}) 35 set(METIS_VERSION_OK FALSE) 36 else() 37 set(METIS_VERSION_OK TRUE) 38 endif() 39 40 if(NOT METIS_VERSION_OK) 41 message(STATUS "Metis version ${METIS_VERSION} found in ${METIS_INCLUDES}, " 42 "but at least version ${Metis_FIND_VERSION} is required") 43 endif(NOT METIS_VERSION_OK) 44endmacro(_metis_check_version) 45 46 if(METIS_INCLUDES AND Metis_FIND_VERSION) 47 _metis_check_version() 48 else() 49 set(METIS_VERSION_OK TRUE) 50 endif() 51 52 53find_library(METIS_LIBRARIES metis PATHS $ENV{METISDIR} ${LIB_INSTALL_DIR} PATH_SUFFIXES lib) 54 55include(FindPackageHandleStandardArgs) 56find_package_handle_standard_args(METIS DEFAULT_MSG 57 METIS_INCLUDES METIS_LIBRARIES METIS_VERSION_OK) 58 59mark_as_advanced(METIS_INCLUDES METIS_LIBRARIES) 60