diff --git a/.dd4hep-ci.d/compile_and_test.sh b/.dd4hep-ci.d/compile_and_test.sh
index 66ed5baf4525ff42f6a15dbc7bae8b05c1ef607d..915070b29e9aff3526f98c3a5846403e9b9431a1 100755
--- a/.dd4hep-ci.d/compile_and_test.sh
+++ b/.dd4hep-ci.d/compile_and_test.sh
@@ -8,7 +8,7 @@ source /DD4hep/.dd4hep-ci.d/init_x86_64.sh
 cd /DD4hep
 mkdir build
 cd build
-cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON  -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS .. && \
+cmake -GNinja -D DD4HEP_USE_GEANT4=ON -D DD4HEP_USE_BOOST=ON -DBoost_NO_BOOST_CMAKE=ON -D DD4HEP_USE_LCIO=ON -D BUILD_TESTING=ON  -D Geant4_DIR=$G4INSTALL/lib64/Geant4-10.2.2 -D DD4HEP_USE_CXX11=ON -DCMAKE_BUILD_TYPE=Release -DROOT_DIR=$ROOTSYS -DCMAKE_CXX_FLAGS="-fdiagnostics-color=always" .. && \
 ninja && \
 ninja install && \
 . ../bin/thisdd4hep.sh && \
diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake
index 3aa0e710af88cded7eb24ed2492b859691ddd9b9..c113f2c49ef4e44c78e19efd8489447317927f03 100644
--- a/cmake/DD4hepBuild.cmake
+++ b/cmake/DD4hepBuild.cmake
@@ -34,43 +34,51 @@ endmacro(dd4hep_to_parent_scope)
 #---------------------------------------------------------------------------------------------------
 macro(dd4hep_set_compiler_flags)
   include(CheckCXXCompilerFlag)
-  CHECK_CXX_COMPILER_FLAG("-std=c++14" FLAG_CXX14)
-  CHECK_CXX_COMPILER_FLAG("-std=c++11" FLAG_CXX11)
-  CHECK_CXX_COMPILER_FLAG("-ftls-model=global-dynamic" FLAG_FTLS)
 
-  if (NOT FLAG_CXX11)
+  SET(COMPILER_FLAGS -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated -fdiagnostics-color=auto )
+
+  FOREACH( FLAG ${COMPILER_FLAGS} )
+    CHECK_CXX_COMPILER_FLAG( "${FLAG}" CXX_FLAG_WORKS_${FLAG} )
+    IF( ${CXX_FLAG_WORKS_${FLAG}} )
+      MESSAGE ( STATUS "Adding ${FLAG} to CXX_FLAGS" )
+      SET ( CMAKE_CXX_FLAGS "${FLAG} ${CMAKE_CXX_FLAGS} ")
+    ELSE()
+      MESSAGE ( STATUS "NOT Adding ${FLAG} to CXX_FLAGS" )
+    ENDIF()
+  ENDFOREACH()
+
+  CHECK_CXX_COMPILER_FLAG("-std=c++14" CXX_FLAG_WORKS_C++14)
+  CHECK_CXX_COMPILER_FLAG("-std=c++11" CXX_FLAG_WORKS_C++11)
+  CHECK_CXX_COMPILER_FLAG("-ftls-model=global-dynamic" CXX_FLAG_WORKS_FTLS_global-dynamic)
+
+  if (NOT CXX_FLAG_WORKS_C++11)
     message( FATAL_ERROR "The provided compiler does not support the C++11 standard" )
   endif()
 
-  if (NOT FLAG_FTLS)
+  if (NOT CXX_FLAG_WORKS_FTLS_global-dynamic)
     message( FATAL_ERROR "The provided compiler does not support the flag -ftls-model=global-dynamic" )
   endif()
 
   if ( DD4HEP_USE_CXX14 )
-    set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic")
+    set ( CMAKE_CXX_FLAGS "-std=c++14 -ftls-model=global-dynamic ${CMAKE_CXX_FLAGS} ")
     set ( DD4HEP_USE_CXX11 OFF ) 
     set ( DD4HEP_USE_STDCXX 14 )
     add_definitions(-DDD4HEP_USE_STDCXX=14)
   else()
-    set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic")
+    set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic ${CMAKE_CXX_FLAGS} ")
     set ( DD4HEP_USE_CXX14 OFF )
     set ( DD4HEP_USE_STDCXX 11 )
     add_definitions(-DDD4HEP_USE_STDCXX=11)
   endif()
-  set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated")
 
-  CHECK_CXX_COMPILER_FLAG("-fdiagnostics-color=always" FLAG_COLOR)
-  if (FLAG_COLOR)
-    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=always")
-  endif()
 
-  if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-    set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
-  endif()
+  IF(("${CMAKE_CXX_COMPILER_ID}" EQUAL "GNU") OR ("${CMAKE_CXX_COMPILER_ID}" EQUAL "Clang"))
+    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined")
+  ENDIF()
 
- if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
-   set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
- endif()
+  IF("${CMAKE_CXX_COMPILER_ID}" EQUAL "AppleClang")
+    SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-undefined,error")
+  ENDIF()
 
  #rpath treatment
  if (APPLE)