diff --git a/cmake/modules/CheckCXX11Features.cmake b/cmake/modules/CheckCXX11Features.cmake
index 7ddaf3021128453fa385b7bfe627f341268b9f69..78d048d2c604669bab2cde67bf9fd3783f975283 100644
--- a/cmake/modules/CheckCXX11Features.cmake
+++ b/cmake/modules/CheckCXX11Features.cmake
@@ -342,4 +342,18 @@ check_cxx_source_compiles("
 " HAVE_CONSTEXPR
 )
 
+# keyword final
+check_cxx_source_compiles("
+  struct Foo
+  {
+    virtual void foo() final;
+  };
+
+  int main(void)
+  {
+    return 0;
+  }
+" HAVE_KEYWORD_FINAL
+)
+
 cmake_pop_check_state()
diff --git a/config.h.cmake b/config.h.cmake
index 6972a7da4227e5a489fd0fb2009d16c9b5974a0b..9c0b1691863431a4fca4998bd1b4939dca12f164 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -163,6 +163,9 @@
 /* Define to 1 if C++11 constexpr is supported */
 #cmakedefine HAVE_CONSTEXPR 1
 
+/* does the compiler support the keyword 'final'? */
+#cmakedefine HAVE_KEYWORD_FINAL 1
+
 /* Define to if the UMFPack library is available */
 #cmakedefine HAVE_UMFPACK ENABLE_UMFPACK