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