From d660729727f2f43ab87066ecb3fcc212c264ead6 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Fri, 20 Jan 2017 13:05:52 +0100
Subject: [PATCH] [CMake] OGS_EIGEN_DYNAMIC_SHAPE_MATRICES defaults to OFF on
 Release.

---
 CHANGELOG.md   |  3 +++
 CMakeLists.txt | 18 ++++++++++++++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index da03e7feb98..70ed60ec2fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,9 @@
 
 ### Infrastructure
 
+- CMake option OGS_EIGEN_DYNAMIC_SHAPE_MATRICES defaults to OFF on Release
+  config, ON otherwise. Can be overridden by explicitly setting the option. #1673
+
 ### Fixes
 
 # 6.0.8
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 825e2ba6ca8..52b53e41df9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,9 +82,23 @@ option(OGS_USE_MPI "Use MPI" OFF)
 # Eigen
 option(OGS_USE_EIGEN "Use Eigen linear solver" ON)
 option(OGS_USE_EIGEN_UNSUPPORTED "Use Eigen unsupported modules" ON)
-option(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES "Use dynamically allocated shape matrices" ON)
 option(EIGEN_NO_DEBUG "Disables Eigen's assertions" OFF)
 
+set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES "Default" CACHE STRING "Use dynamically allocated shape matrices")
+set_property(CACHE OGS_EIGEN_DYNAMIC_SHAPE_MATRICES
+             PROPERTY STRINGS "Default" "ON" "OFF")
+
+if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES STREQUAL "Default")
+    if(CMAKE_BUILD_TYPE STREQUAL "Release" OR
+        CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
+        set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL OFF)
+    else()
+        set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL ON)
+    endif()
+else()
+    set(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL ${OGS_EIGEN_DYNAMIC_SHAPE_MATRICES})
+endif()
+
 # MKL
 option(OGS_USE_MKL "Use Intel MKL" OFF)
 
@@ -166,7 +180,7 @@ add_definitions(-DEIGEN_INITIALIZE_MATRICES_BY_ZERO) # TODO check if needed
 if (EIGEN_NO_DEBUG)
     add_definitions(-DEIGEN_NO_DEBUG)
 endif()
-if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES)
+if(OGS_EIGEN_DYNAMIC_SHAPE_MATRICES_INTERNAL)
     add_definitions(-DOGS_EIGEN_DYNAMIC_SHAPE_MATRICES)
 endif()
 
-- 
GitLab