From 4eb8608d57d34d2c8cc3d0c5be802d6824b90578 Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Fri, 20 Dec 2019 15:45:59 +0100
Subject: [PATCH] Update main CMakeLists.txt zu dune 2.7 style

In particular:
* Introduce enable_all_packages()
* Introduce (empty) subdirectory 'cmake/modules'
---
 CMakeLists.txt                           | 25 ++++++++++++++++++------
 cmake/modules/CMakeLists.txt             |  3 +++
 cmake/modules/DuneElasticityMacros.cmake |  1 +
 3 files changed, 23 insertions(+), 6 deletions(-)
 create mode 100644 cmake/modules/CMakeLists.txt
 create mode 100644 cmake/modules/DuneElasticityMacros.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b70fc5..1812950 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,19 +1,31 @@
-project("dune-elasticity" CXX)
-cmake_minimum_required(VERSION 2.8.6)
-
-if(NOT (dune-common_DIR OR dune-common_ROOT))
-  string(REPLACE ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR ${PROJECT_BINARY_DIR})
+# We require version CMake version 3.1 to prevent issues
+# with dune_enable_all_packages and older CMake versions.
+cmake_minimum_required(VERSION 3.1)
+project(dune-elasticity CXX)
+
+if(NOT (dune-common_DIR OR dune-common_ROOT OR
+      "${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*"))
+    string(REPLACE  ${CMAKE_PROJECT_NAME} dune-common dune-common_DIR
+      ${PROJECT_BINARY_DIR})
 endif()
 
+#find dune-common and set the module path
 find_package(dune-common REQUIRED)
-list(APPEND CMAKE_MODULE_PATH ${dune-common_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules"
+  ${dune-common_MODULE_PATH})
+
+#include the dune macros
 include(DuneMacros)
 
+# start a dune project with information from dune.module
 dune_project()
 
+dune_enable_all_packages()
+
 add_subdirectory("test")
 add_subdirectory("dune")
 add_subdirectory("src")
+add_subdirectory("cmake/modules")
 
 if(HAVE_AMIRAMESH AND HAVE_IPOPT AND HAVE_PSURFACE AND HAVE_UG)
   set(programs viscoelast nonlinelast)
@@ -32,4 +44,5 @@ if(HAVE_AMIRAMESH AND HAVE_IPOPT AND HAVE_PSURFACE AND HAVE_UG AND ADOLC_FOUND)
   add_dune_adolc_flags(nonlinelast)
 endif()
 
+# finalize the dune project, e.g. generating config.h etc.
 finalize_dune_project(GENERATE_CONFIG_H_CMAKE)
diff --git a/cmake/modules/CMakeLists.txt b/cmake/modules/CMakeLists.txt
new file mode 100644
index 0000000..5c9f0db
--- /dev/null
+++ b/cmake/modules/CMakeLists.txt
@@ -0,0 +1,3 @@
+set(modules "DuneElasticityMacros.cmake")
+
+install(FILES ${modules} DESTINATION ${DUNE_INSTALL_MODULEDIR})
diff --git a/cmake/modules/DuneElasticityMacros.cmake b/cmake/modules/DuneElasticityMacros.cmake
new file mode 100644
index 0000000..613dfb6
--- /dev/null
+++ b/cmake/modules/DuneElasticityMacros.cmake
@@ -0,0 +1 @@
+# File for module specific CMake tests.
-- 
GitLab