diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8bd01b18017cab6332097e3166a9c8647f48e342..82f8bd1261983b739a1a28fcbd1aea6c4ecda933 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}")
 
 #------------------------------------------------------