diff --git a/cmake/modules/CheckCompiler.cmake b/cmake/modules/CheckCompiler.cmake
index 3fb0a4e166c142eabf5920c1278e68c7c1368cf4..cf6350fdaea688b92a19a98eb13e874873e7a5a4 100644
--- a/cmake/modules/CheckCompiler.cmake
+++ b/cmake/modules/CheckCompiler.cmake
@@ -163,7 +163,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_THREAD_FLAG}")
 
 if(cxx11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
-  if(${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
+  if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wc++11-narrowing -Wsign-compare -Wsometimes-uninitialized -Wconditional-uninitialized -Wheader-guard -Warray-bounds -Wcomment -Wtautological-compare -Wstrncat-size -Wloop-analysis -Wbool-conversion")
   endif()
 endif()
diff --git a/cmake/modules/SearchInstalledSoftware.cmake b/cmake/modules/SearchInstalledSoftware.cmake
index 88372545e12af63267567117f166ddc0287b4c8b..f8657ebf513a1fd5a747ce9410bdbcb732dd75ed 100644
--- a/cmake/modules/SearchInstalledSoftware.cmake
+++ b/cmake/modules/SearchInstalledSoftware.cmake
@@ -201,7 +201,7 @@ if(builtin_lzma)
     set(LZMA_LIBRARIES ${CMAKE_BINARY_DIR}/LZMA/src/LZMA/lib/liblzma.lib)
     set(LZMA_INCLUDE_DIR ${CMAKE_BINARY_DIR}/LZMA/src/LZMA/include)
   else()
-    if(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
+    if(CMAKE_CXX_COMPILER_ID MATCHES Clang)
       set(LZMA_CFLAGS "-Wno-format-nonliteral")
       set(LZMA_LDFLAGS "-Qunused-arguments")
     elseif( CMAKE_CXX_COMPILER_ID STREQUAL Intel)
diff --git a/cmake/modules/SetUpMacOS.cmake b/cmake/modules/SetUpMacOS.cmake
index 709956981d01ada89846943b81e4330e4e807f87..b8e66385f32c06fb4de1f39e04d026c7221745ea 100644
--- a/cmake/modules/SetUpMacOS.cmake
+++ b/cmake/modules/SetUpMacOS.cmake
@@ -20,7 +20,7 @@ if (CMAKE_SYSTEM_NAME MATCHES Darwin)
                   COMMAND cut -d . -f 2
                   OUTPUT_VARIABLE MACOSX_MINOR OUTPUT_STRIP_TRAILING_WHITESPACE)
 
-  if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
+  if(MACOSX_VERSION VERSION_GREATER 10.7 AND ${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
     set(libcxx ON CACHE BOOL "Build using libc++" FORCE)
   endif()
 
diff --git a/core/meta/CMakeLists.txt b/core/meta/CMakeLists.txt
index b6e278010b6308c294689bffb5d64388128c3f54..9fe56a5fb8a9415ca033f6b5105bc832f5209e8a 100644
--- a/core/meta/CMakeLists.txt
+++ b/core/meta/CMakeLists.txt
@@ -19,14 +19,10 @@ else()
   set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/src/TClingCallbacks.cxx COMPILE_FLAGS -fno-rtti)
 endif()
 
-if(${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
-   # This to avoid warning coming from  message coming from llvm/src/tools/clang/include/clang/Sema/Lookup.h:441
-   # in clang + llvm version r227800.
-   set(CLANG_ADDITIONAL_FLAGS "-Wno-conditional-uninitialized")
-   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CLANG_ADDITIONAL_FLAGS}")
-endif()
-
-ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS  -Wno-shadow)
+# This to avoid warning coming from  message coming from llvm/src/tools/clang/include/clang/Sema/Lookup.h:441
+# in clang + llvm version r227800.
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-conditional-uninitialized)
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-shadow)
 
 ROOT_OBJECT_LIBRARY(MetaLLVM ${sources})
 add_dependencies(MetaLLVM CLING)
diff --git a/graf2d/qt/CMakeLists.txt b/graf2d/qt/CMakeLists.txt
index e3be2d6f41041aab1b6133368176edd70b7be509..9870258efc20cb9077d2cddd7c0eb8edce56cf4e 100644
--- a/graf2d/qt/CMakeLists.txt
+++ b/graf2d/qt/CMakeLists.txt
@@ -9,11 +9,9 @@ set(headers TGQt.h TQtTimer.h TQtApplication.h TQtBrush.h
             TQMimeTypes.h TQtClientFilter.h TQtClientWidget.h TQtWidget.h
             TQtMarker.h TQtTimer.h TQtRootSlot.h TQtPadFont.h)
 
-if(CMAKE_COMPILER_IS_GNUCXX)
-  add_definitions(-Wno-deprecated-register -Wno-uninitialized)
-elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  add_definitions(-Wno-deprecated -Wno-uninitialized)
-endif()
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-deprecated-register)
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-deprecated)
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-uninitialized)
 
 QT4_WRAP_CPP(mocfiles inc/TQtWidget.h inc/TQtEmitter.h inc/TQtClientFilter.h
                       inc/TQtClientGuard.h inc/TQtClientWidget.h inc/TQtTimer.h
diff --git a/gui/qtroot/CMakeLists.txt b/gui/qtroot/CMakeLists.txt
index 7096f7ef5bd61a8b853af4b64f40d650688b6fcf..8f27b689dfc32fbeba5f2bb7d70f35ab9ac31433 100644
--- a/gui/qtroot/CMakeLists.txt
+++ b/gui/qtroot/CMakeLists.txt
@@ -5,11 +5,9 @@
 
 include(${QT_USE_FILE})
 
-if(CMAKE_COMPILER_IS_GNUCXX)
-  add_definitions(-Wno-deprecated-register -Wno-uninitialized)
-elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang)
-  add_definitions(-Wno-deprecated -Wno-uninitialized)
-endif()
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-deprecated-register)
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-deprecated)
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-uninitialized)
 
 ROOT_GENERATE_DICTIONARY(G__QtRoot *.h MODULE QtRoot LINKDEF LinkDef.h)
 
diff --git a/misc/memstat/CMakeLists.txt b/misc/memstat/CMakeLists.txt
index f8bfb9a0dfea4408fe2bd5a9cc5570b31a1260a5..c6825cb37792a077657f1c866ec8819db845d6e8 100644
--- a/misc/memstat/CMakeLists.txt
+++ b/misc/memstat/CMakeLists.txt
@@ -3,9 +3,7 @@
 # @author Pere Mato, CERN
 ############################################################################
 
-if(CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_CXX_COMPILER_ID} STREQUAL Clang)
-   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
-endif()
+ROOT_ADD_CXX_FLAG(CMAKE_CXX_FLAGS -Wno-deprecated-declarations)
 
 set(sources TMemStat.cxx TMemStatMng.cxx TMemStatBacktrace.cxx TMemStatHelpers.cxx TMemStatHook.cxx)
 set(headers TMemStatHelpers.h TMemStat.h TMemStatBacktrace.h TMemStatDef.h TMemStatMng.h TMemStatHook.h )