From 583dcc956082001bc80ad06427967469d6d0a270 Mon Sep 17 00:00:00 2001
From: Dominik Thoennes <dominik.thoennes@fau.de>
Date: Wed, 3 May 2023 12:47:50 +0200
Subject: [PATCH] refactor metis cmake integration

---
 CMakeLists.txt           | 43 ++++++++++++----------------------------
 cmake/FindParmetis.cmake |  9 +++++++++
 2 files changed, 22 insertions(+), 30 deletions(-)
 create mode 100644 cmake/FindParmetis.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 468a1bd7a..28857123a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -891,41 +891,24 @@ endif(WALBERLA_ENABLE_GUI)
 ##
 ############################################################################################################################
 
+if ( WALBERLA_BUILD_WITH_PARMETIS )
+   # metis is required for parmetis
+   set( WALBERLA_BUILD_WITH_METIS TRUE FORCE )
+endif ()
+
 if ( WALBERLA_BUILD_WITH_METIS )
-    find_package ( Metis QUIET )
+   find_package( Metis REQUIRED )
 
-    if ( METIS_FOUND )
-        include_directories( ${METIS_INCLUDE_DIRS} )
-        link_directories   ( ${METIS_LIBRARY_DIR}  )
-        list ( APPEND SERVICE_LIBS ${METIS_LIBRARIES} )
-        set  ( WALBERLA_BUILD_WITH_METIS TRUE )
-    else()
-        set  ( WALBERLA_BUILD_WITH_METIS OFF CACHE BOOL "Build with metis graph partitioner" FORCE )
-    endif()
-else()
-    set ( METIS_FOUND OFF CACHE BOOL "Metis found" FORCE )
-endif()
+   include_directories( ${METIS_INCLUDE_DIRS} )
+   list( APPEND SERVICE_LIBS ${METIS_LIBRARIES} )
 
+endif()
 
 if ( WALBERLA_BUILD_WITH_PARMETIS )
-   find_path(PARMETIS_INCLUDE_DIR parmetis.h
-      /usr/local/include
-      /usr/include
-      ${PARMETIS_ROOT}/include
-      $ENV{PARMETIS_ROOT}/include
-   )
-
-  find_library(PARMETIS_LIBRARY parmetis
-    /usr/local/lib
-    /usr/lib
-    ${PARMETIS_ROOT}/lib
-    $ENV{PARMETIS_ROOT}/lib
-  )
-
-  if( PARMETIS_INCLUDE_DIR AND PARMETIS_LIBRARY AND METIS_LIBRARY )
-    include_directories( ${PARMETIS_INCLUDE_DIR} )
-    list ( APPEND SERVICE_LIBS ${PARMETIS_LIBRARY} ${METIS_LIBRARY} )
-  endif()
+   find_package( Parmetis REQUIRED )
+
+   include_directories( ${PARMETIS_INCLUDE_DIR} )
+   list( APPEND SERVICE_LIBS ${PARMETIS_LIBRARY} )
 endif()
 
 ############################################################################################################################
diff --git a/cmake/FindParmetis.cmake b/cmake/FindParmetis.cmake
new file mode 100644
index 000000000..427e27673
--- /dev/null
+++ b/cmake/FindParmetis.cmake
@@ -0,0 +1,9 @@
+find_path (PARMETIS_INCLUDE_DIR parmetis.h)
+find_library (PARMETIS_LIBRARY NAMES parmetis)
+
+# handle the QUIETLY and REQUIRED arguments and set PFFT_FOUND to TRUE if
+# all listed variables are TRUE
+include (FindPackageHandleStandardArgs)
+find_package_handle_standard_args (Parmetis DEFAULT_MSG PARMETIS_LIBRARY PARMETIS_INCLUDE_DIR)
+
+mark_as_advanced (PARMETIS_LIBRARY PARMETIS_INCLUDE_DIR)
\ No newline at end of file
-- 
GitLab