Salome HOME
Attune detection procedure for ptscotch, to properly pick native headers / libraries V9_9_0a2
authorvsr <vsr@opencascade.com>
Thu, 24 Mar 2022 16:43:28 +0000 (19:43 +0300)
committervsr <vsr@opencascade.com>
Thu, 24 Mar 2022 16:43:28 +0000 (19:43 +0300)
cmake/FindPTScotch.cmake

index 469fe6cb4711f19884c172a9b9b35431aeb45028..7eb4d2b00ba3ced15fe1a90156b5cda4e428b842 100644 (file)
@@ -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)