diff --git a/cmake/compilerFlags.cmake b/cmake/compilerFlags.cmake
index 0418aa61..ae18583f 100644
--- a/cmake/compilerFlags.cmake
+++ b/cmake/compilerFlags.cmake
@@ -1,4 +1,5 @@
 # These flags applies to exiv2lib, the applications, and to the xmp code
+include(CheckCCompilerFlag)
 
 if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN
     if (${CMAKE_CXX_COMPILER_ID} STREQUAL GNU)
@@ -23,22 +24,25 @@ if ( MINGW OR UNIX OR MSYS ) # MINGW, Linux, APPLE, CYGWIN
 
     if (COMPILER_IS_GCC OR COMPILER_IS_CLANG)
 
-        # This fails under Fedora, MinGW GCC 8.3.0 and CYGWIN/MSYS 9.3.0
-        if (NOT (MINGW OR CMAKE_HOST_SOLARIS OR CYGWIN OR MSYS) )
-            if (COMPILER_IS_GCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0)
-                add_compile_options(-fstack-clash-protection -fcf-protection)
+        # This fails under Fedora - MinGW - Gcc 8.3
+        if (NOT MINGW)
+	    check_c_compiler_flag(-fstack-clash-protection HAS_FSTACK_CLASH_PROTECTION)
+	    check_c_compiler_flag(-fcf-protection HAS_FCF_PROTECTION)
+	    check_c_compiler_flag(-fstack-protector-strong HAS_FSTACK_PROTECTOR_STRONG)
+	    if(HAS_FSTACK_CLASH_PROTECTION)
+                add_compile_options(-fstack-clash-protection)
             endif()
-
-            if( (COMPILER_IS_GCC   AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0) # Not in GCC 4.8
-            OR  (COMPILER_IS_CLANG AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 3.7) # Not in Clang 3.4.2
-            )
+	    if(GCC_HAS_FCF_PROTECTION)
+		add_compile_options(-fcf-protection)
+	    endif()
+	    if(GCC_HAS_FSTACK_PROTECTOR_STRONG)
                 add_compile_options(-fstack-protector-strong)
             endif()
         endif()
 
         add_compile_options(-Wp,-D_GLIBCXX_ASSERTIONS)
 
-        if (CMAKE_BUILD_TYPE STREQUAL Release AND NOT APPLE AND NOT MSYS)
+        if (CMAKE_BUILD_TYPE STREQUAL Release AND NOT APPLE)
             add_compile_options(-Wp,-D_FORTIFY_SOURCE=2) # Requires to compile with -O2
         endif()
 
@@ -90,7 +94,6 @@ endif ()
 
 # http://stackoverflow.com/questions/10113017/setting-the-msvc-runtime-in-cmake
 if(MSVC)
-
     find_program(CLCACHE name clcache.exe
         PATHS ENV CLCACHE_PATH
         PATH_SUFFIXES Scripts clcache-4.1.0
@@ -137,10 +140,4 @@ if(MSVC)
     # Object Level Parallelism
     add_compile_options(/MP)
     add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN)
-    
-    # https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
-    if (MSVC_VERSION GREATER_EQUAL "1910") # VS2017 and up
-        add_compile_options("/Zc:__cplusplus")
-    endif()
-
 endif()