From 9f0c321e1566b17995515a74d6bf13162048a523 Mon Sep 17 00:00:00 2001
From: Stephane Del Pino <stephane.delpino44@gmail.com>
Date: Fri, 27 Apr 2018 00:38:53 +0200
Subject: [PATCH] Few CMake configuration improvements

- C++-17 is now default
- Default build type is now 'RelWithDebInfo'
- for non Release build types
  - Kokkos is built in debug mode (=> checks for bounds)
  - standard C++ library is built in debug mode (=> checks for bounds)
---
 CMakeLists.txt | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8bd01b180..82f8bd126 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,15 +20,37 @@ set(PASTIS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
 
 # Kokkos
 set(KOKKOS_ENABLE_OPENMP ON CACHE BOOL "")
+
+if (CMAKE_BUILD_TYPE MATCHES "Release")
+  set (KOKKOS_ENABLE_DEBUG OFF)
+else()
+  set (KOKKOS_ENABLE_DEBUG ON)
+endif()
+
+set(CMAKE_CXX_STANDARD "17")
+
 add_subdirectory(${PASTIS_SOURCE_DIR}/packages/kokkos)
 include_directories(${Kokkos_INCLUDE_DIRS_RET})
 
-# Compiler flags
+# Default build type is RelWIthDebInfo
+if(NOT CMAKE_BUILD_TYPE)
+  set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
+      "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
+      FORCE)
+endif(NOT CMAKE_BUILD_TYPE)
+
+# Pastis default compiler flags
+set(PASTIS_CXX_FLAGS "-Wall")
+
+# Kokkso compiler flags
 include(GetKokkosCompilerFlags)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
+
+# Compiler flags
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PASTIS_CXX_FLAGS}")
 
 # Add debug mode for Standard C++ library
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1")
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PASTIS_CXX_FLAGS}")
+set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -D_GLIBCXX_DEBUG -D_LIBCPP_DEBUG=1 ${PASTIS_CXX_FLAGS}")
 
 #------------------------------------------------------
 
-- 
GitLab