diff --git a/CMakeLists.txt b/CMakeLists.txt
index c7737156595d2fdf3fdd1e964f2da778334cfd60..e3f79152a073957b20185ce0800bdafc223abeb3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,36 +13,65 @@ include(CheckNotInSources)
 project (Pastis
   VERSION 0.0.4)
 
+#------------------------------------------------------
+
 set(PASTIS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
 set(PASTIS_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
 
+# 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)
+
+#------------------------------------------------------
+
+# Checks if compiler version is compatible with Pastis sources
+set(GNU_CXX_MIN_VERSION "7.0.0")
+set(CLANG_CXX_MIN_VERSION "5.0.0")
+
+# Pastis default compiler flags
+set(PASTIS_CXX_FLAGS "${PASTIS_CXX_FLAGS} -Wall")
+
+if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${GNU_CXX_MIN_VERSION}")
+    message(FATAL_ERROR "Pastis build requires at least g++-${GNU_CXX_MIN_VERSION}")
+  endif()
+elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "${CLANG_CXX_MIN_VERSION}")
+    message(FATAL_ERROR "Pastis build requires at least llvm/clang ++-${CLANG_CXX_MIN_VERSION}")
+  endif()
+  set(PASTIS_CXX_FLAGS "${PASTIS_CXX_FLAGS} -Wsign-compare -Wunused -Wunused-member-function -Wunused-private-field")
+endif()
+
+
 #------------------------------------------------------
 
-# Kokkos
-set(KOKKOS_ENABLE_OPENMP ON CACHE BOOL "")
+# setting Kokkos defaults to OpenMP when available
+include(FindOpenMP)
+if(${OPENMP_FOUND})
+  set(KOKKOS_ENABLE_OPENMP ON CACHE BOOL "")
+endif()
 
+# sets Kokkos debug flags when non release build
 if (CMAKE_BUILD_TYPE MATCHES "Release")
   set (KOKKOS_ENABLE_DEBUG OFF)
 else()
   set (KOKKOS_ENABLE_DEBUG ON)
 endif()
 
-
-# Pastis default compiler flags
-set(PASTIS_CXX_FLAGS "-Wall")
-
-#set(CMAKE_CXX_STANDARD "17")
+# C++ 17 flags
+if(${CMAKE_VERSION} VERSION_LESS "3.8.0")
+  message(WARNING "Please consider to switch to CMake >= 3.8")
+  set(PASTIS_CXX_FLAGS "${PASTIS_CXX_FLAGS}  -std=gnu++1z")
+else()
+  set(CMAKE_CXX_STANDARD "17")
+endif()
 
 add_subdirectory(${PASTIS_SOURCE_DIR}/packages/kokkos)
 include_directories(${Kokkos_INCLUDE_DIRS_RET})
 
-# 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)
-
 # Kokkso compiler flags
 include(GetKokkosCompilerFlags)
 
@@ -89,4 +118,3 @@ target_link_libraries(
   PastisUtils
   PastisMesh
   PastisExperimental)
-