From c7b8f81fb96e0d6850aa4b1444ce41db14961dcc Mon Sep 17 00:00:00 2001
From: Simon Praetorius <simon.praetorius@tu-dresden.de>
Date: Thu, 11 Jan 2018 16:10:59 +0100
Subject: [PATCH] Added cmake flags for openMP and MPI. Now,
 ENABLE_PARALLEL_DOMAIN requires ENABLE_MPI.

---
 AMDiS/CMakeLists.txt                  | 33 +++++++++++++++++++++++++--
 AMDiS/cmake/amdis_parallel.cmake      |  6 -----
 AMDiS/cmake/enable_mtl4.cmake         | 18 ++++-----------
 AMDiS/cmake3/amdis_parallel.cmake     |  4 ----
 AMDiS/cmake3/target_enable_mtl4.cmake | 10 +++-----
 5 files changed, 39 insertions(+), 32 deletions(-)

diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt
index 2342aaa3..adec7b9d 100644
--- a/AMDiS/CMakeLists.txt
+++ b/AMDiS/CMakeLists.txt
@@ -16,12 +16,35 @@ endif ()
 # ------------------------------------------------------------------------------
 
 # some options to control the build process
-option(ENABLE_PARALLEL_DOMAIN "Use parallel domain decomposition"     false)
+option(ENABLE_MPI             "Compile with MPI compiler and library" false)
 option(ENABLE_UMFPACK         "Enable support for the UMFPACK solver" true)
 option(ENABLE_EXTENSIONS      "Use extensions for AMDiS"              false)
 option(ENABLE_HYPRE           "Use HYPRE AMG solver"                  false)
 option(ENABLE_PNG             "Use png reader/writer"                 false)
-option(ENABLE_SEQ_PETSC       "Use sequential PETSc solvers"          false)
+
+include(CMakeDependentOption)
+cmake_dependent_option(ENABLE_PARALLEL_DOMAIN
+  "Use parallel domain decomposition" true
+  "ENABLE_MPI" false)
+
+# additional options for parallel_domain
+# {
+include(CMakeDependentOption)
+cmake_dependent_option(ENABLE_ZOLTAN
+  "Add support for the Parallel Partitioning suite Zoltan" false
+  "ENABLE_PARALLEL_DOMAIN" false)
+
+include(CMakeDependentOption)
+cmake_dependent_option(ENABLE_PARALLEL_SOLVERS
+  "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true
+  "ENABLE_PARALLEL_DOMAIN" false)
+
+include(CMakeDependentOption)
+cmake_dependent_option(ENABLE_BDDCML
+  "Add support for the BDDCML library" false
+  "ENABLE_PARALLEL_DOMAIN" false)
+# }
+
 
 # enable/disable some more features
 option(ENABLE_COMPRESSION "Use output compression for vtu and arh files" true)
@@ -33,6 +56,12 @@ mark_as_advanced(ENABLE_REINIT)
 option(ENABLE_COMPOSITE_FEM "Compile compositeFEM library" true)
 mark_as_advanced(ENABLE_COMPOSITE_FEM)
 
+option(ENABLE_OPENMP "Compile with OpenMP flags. (Experimental)" false)
+mark_as_advanced(ENABLE_OPENMP)
+
+option(ENABLE_SEQ_PETSC "Use sequential PETSc solvers" false)
+mark_as_advanced(ENABLE_SEQ_PETSC)
+
 option(BUILD_SHARED_LIBS "Build all libraries as shared or static, default: shared" true)
 mark_as_advanced(BUILD_SHARED_LIBS)
 
diff --git a/AMDiS/cmake/amdis_parallel.cmake b/AMDiS/cmake/amdis_parallel.cmake
index c5ea733b..0d325c3b 100644
--- a/AMDiS/cmake/amdis_parallel.cmake
+++ b/AMDiS/cmake/amdis_parallel.cmake
@@ -1,10 +1,4 @@
 if (ENABLE_PARALLEL_DOMAIN)
-    option(ENABLE_ZOLTAN "Add support for the Parallel Partitioning suite Zoltan" false)
-    option(ENABLE_PARALLEL_SOLVERS "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true)
-    option(ENABLE_BDDCML "Add support for the BDDCML library" false)
-    mark_as_advanced(ENABLE_PARALLEL_SOLVERS)
-    mark_as_advanced(ENABLE_BDDCML)
-
     set(PARALLEL_DOMAIN_AMDIS_SRC
         ${SOURCE_DIR}/parallel/DofComm.cc
         ${SOURCE_DIR}/parallel/CheckerPartitioner.cc
diff --git a/AMDiS/cmake/enable_mtl4.cmake b/AMDiS/cmake/enable_mtl4.cmake
index ae2b3e3d..3b24ae48 100644
--- a/AMDiS/cmake/enable_mtl4.cmake
+++ b/AMDiS/cmake/enable_mtl4.cmake
@@ -12,22 +12,14 @@ macro(enable_mtl4 _FLAGS_ _INC_DIRS_ _LIBS_)
     endif (LINK_EXECUTABLE)
     list(APPEND ${_FLAGS_} "-DMTL_ASSERT_FOR_THROW=1")
 
-
-    if (ENABLE_CXX11 OR AMDIS_NEED_CXX11)
-      set (CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL")
-      foreach (feature ${CXX_ELEVEN_FEATURE_LIST})
-        list(APPEND ${_FLAGS_} "-DMTL_WITH_${feature}")
-      endforeach ()
-    endif ()
-
+    set (CXX_ELEVEN_FEATURE_LIST "MOVE" "AUTO" "RANGEDFOR" "INITLIST" "STATICASSERT" "DEFAULTIMPL")
+    foreach (feature ${CXX_ELEVEN_FEATURE_LIST})
+      list(APPEND ${_FLAGS_} "-DMTL_WITH_${feature}")
+    endforeach ()
 
     if (ENABLE_OPENMP)
       find_package(OpenMP REQUIRED)
-      if (OPENMP_FOUND)
-        list(APPEND ${_FLAGS_} "-DMTL_WITH_OPENMP" ${OpenMP_CXX_FLAGS})
-      else ()
-        message(FATAL_ERROR "OpenMP not found")
-      endif (OPENMP_FOUND)
+      list(APPEND ${_FLAGS_} "-DMTL_WITH_OPENMP" "-DHAVE_OPENMP" ${OpenMP_CXX_FLAGS})
     endif (ENABLE_OPENMP)
 
 endmacro(enable_mtl4)
diff --git a/AMDiS/cmake3/amdis_parallel.cmake b/AMDiS/cmake3/amdis_parallel.cmake
index ab09f39c..3a9ebc8b 100644
--- a/AMDiS/cmake3/amdis_parallel.cmake
+++ b/AMDiS/cmake3/amdis_parallel.cmake
@@ -1,8 +1,4 @@
 if (ENABLE_PARALLEL_DOMAIN)
-    option(ENABLE_ZOLTAN "Add support for the Parallel Partitioning suite Zoltan" false)
-    option(ENABLE_PARALLEL_SOLVERS "Add some problem dependent solver, e.g. Feti, Navier-Stokes and Cahn-Hilliard" true)
-    mark_as_advanced(ENABLE_PARALLEL_SOLVERS)
-
     add_library(amdis_parallel INTERFACE)
     target_sources(amdis PRIVATE
         ${SOURCE_DIR}/parallel/DofComm.cc
diff --git a/AMDiS/cmake3/target_enable_mtl4.cmake b/AMDiS/cmake3/target_enable_mtl4.cmake
index 90d5e2c0..517eae51 100644
--- a/AMDiS/cmake3/target_enable_mtl4.cmake
+++ b/AMDiS/cmake3/target_enable_mtl4.cmake
@@ -18,12 +18,8 @@ macro(target_enable_mtl4 _TARGET_ _SCOPE_)
   endforeach ()
 
   if (ENABLE_OPENMP)
-      find_package(OpenMP REQUIRED)
-      if (OPENMP_FOUND)
-        target_compile_definitions(${_TARGET_} ${_SCOPE_} MTL_WITH_OPENMP)
-        target_compile_options(${_TARGET_} ${_SCOPE_} ${OpenMP_CXX_FLAGS})
-      else ()
-        message(FATAL_ERROR "OpenMP not found")
-      endif (OPENMP_FOUND)
+    find_package(OpenMP REQUIRED)
+    target_compile_definitions(${_TARGET_} ${_SCOPE_} MTL_WITH_OPENMP HAVE_OPENMP)
+    target_compile_options(${_TARGET_} ${_SCOPE_} ${OpenMP_CXX_FLAGS})
   endif (ENABLE_OPENMP)
 endmacro(target_enable_mtl4)
-- 
GitLab