From de3e2c10ec6ab7dbc92e2555cbb108944eb979e7 Mon Sep 17 00:00:00 2001 From: vsr Date: Thu, 24 Mar 2022 19:43:28 +0300 Subject: [PATCH] Attune detection procedure for ptscotch, to properly pick native headers / libraries --- cmake/FindPTScotch.cmake | 45 +++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/cmake/FindPTScotch.cmake b/cmake/FindPTScotch.cmake index 469fe6c..7eb4d2b 100644 --- a/cmake/FindPTScotch.cmake +++ b/cmake/FindPTScotch.cmake @@ -26,33 +26,40 @@ IF(PTSCOTCH_ROOT_DIR) LIST(APPEND CMAKE_PREFIX_PATH "${PTSCOTCH_ROOT_DIR}") ENDIF(PTSCOTCH_ROOT_DIR) -FIND_LIBRARY(PTSCOTCH_LIBRARIES ptscotch) -FIND_LIBRARY(PTSCOTCH_ERR_LIBRARIES ptscotcherr) -set(PTSCOTCH_LIBRARIES ${PTSCOTCH_LIBRARIES} ${PTSCOTCH_ERR_LIBRARIES}) -set(SCOTCH_HEADER scotch.h) -FIND_PATH(PTSCOTCH_INCLUDE_DIRS ${SCOTCH_HEADER} PATH_SUFFIXES "/scotch") +FIND_LIBRARY(PTSCOTCH_LIBRARIES ptscotch PATH_SUFFIXES openmpi/lib) +FIND_LIBRARY(PTSCOTCH_ERR_LIBRARIES ptscotcherr PATH_SUFFIXES openmpi/lib) +SET(PTSCOTCH_LIBRARIES ${PTSCOTCH_LIBRARIES} ${PTSCOTCH_ERR_LIBRARIES}) +SET(SCOTCH_HEADER scotch.h) +IF(PTSCOTCH_USE_LONG) + SET(PTSCOTCH_SUFFIXES scotch-long) +ELSEIF(PTSCOTCH_USE_INT64) + SET(PTSCOTCH_SUFFIXES scotch-int64) +ELSEIF(PTSCOTCH_USE_INT32) + SET(PTSCOTCH_SUFFIXES scotch-int32) +ENDIF() +FIND_PATH(PTSCOTCH_INCLUDE_DIRS ${SCOTCH_HEADER} PATH_SUFFIXES ${PTSCOTCH_SUFFIXES} scotch) # Detect version of scotch/ptscotch -file(TO_NATIVE_PATH "${PTSCOTCH_INCLUDE_DIRS}/${SCOTCH_HEADER}" SCOTCH_HEADER_FILE) -file(READ ${SCOTCH_HEADER_FILE} SCOTCH_HEADER_FILE_CONTENT) +FILE(TO_NATIVE_PATH "${PTSCOTCH_INCLUDE_DIRS}/${SCOTCH_HEADER}" SCOTCH_HEADER_FILE) +FILE(READ ${SCOTCH_HEADER_FILE} SCOTCH_HEADER_FILE_CONTENT) -set(ITER VERSION_MAJOR RELEASE_MINOR PATCHLEVEL_PATCH) -foreach(mmp ${ITER}) - string(REPLACE "_" ";" mmp_list ${mmp}) - list(GET mmp_list 0 mmp_search) - list(GET mmp_list 1 mmp_client) - string( REGEX MATCH "#define[\t ]+SCOTCH_${mmp_search}[\t ]+([0-9]+)" SCOTCH_MAJOR_VERSION_LINE "${SCOTCH_HEADER_FILE_CONTENT}" ) - string( REGEX MATCH "([0-9]+)" SCOTCH_VERSION_${mmp_client} "${SCOTCH_MAJOR_VERSION_LINE}" ) -endforeach() +SET(ITER VERSION_MAJOR RELEASE_MINOR PATCHLEVEL_PATCH) +FOREACH(mmp ${ITER}) + STRING(REPLACE "_" ";" mmp_list ${mmp}) + LIST(GET mmp_list 0 mmp_search) + LIST(GET mmp_list 1 mmp_client) + STRING(REGEX MATCH "#define[\t ]+SCOTCH_${mmp_search}[\t ]+([0-9]+)" SCOTCH_MAJOR_VERSION_LINE "${SCOTCH_HEADER_FILE_CONTENT}") + STRING(REGEX MATCH "([0-9]+)" SCOTCH_VERSION_${mmp_client} "${SCOTCH_MAJOR_VERSION_LINE}") +ENDFOREACH() # End of detection of scotch/ptscotch -if("${SCOTCH_VERSION_MAJOR}.${SCOTCH_VERSION_MINOR}.${SCOTCH_VERSION_PATCH}" VERSION_GREATER_EQUAL "6.0.0") +IF("${SCOTCH_VERSION_MAJOR}.${SCOTCH_VERSION_MINOR}.${SCOTCH_VERSION_PATCH}" VERSION_GREATER_EQUAL "6.0.0") # for ptscotch client of version >= 6.0.0 scotch.a library needs to be added - find_library(SCOTCH_LIBRARY scotch) - list(APPEND PTSCOTCH_LIBRARIES ${SCOTCH_LIBRARY}) -endif() + FIND_LIBRARY(SCOTCH_LIBRARY scotch) + LIST(APPEND PTSCOTCH_LIBRARIES ${SCOTCH_LIBRARY}) +ENDIF() INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(PTScotch REQUIRED_VARS PTSCOTCH_INCLUDE_DIRS PTSCOTCH_LIBRARIES) -- 2.39.2