find_program(CCACHE_BIN NAMES ccache sccache)
if(CCACHE_BIN)
  set(_CCACHE_SUPPORTED_LAUCHERS C CXX OBJC OBJCXX)
  foreach(LAUNCHER ${_CCACHE_SUPPORTED_LAUCHERS})
    if (NOT CMAKE_${LAUNCHER}_COMPILER_LAUNCHER MATCHES "ccache")
      list(INSERT CMAKE_${LAUNCHER}_COMPILER_LAUNCHER 0 ${CCACHE_BIN})
    endif()
    # ccache uses -I when compiling without preprocessor, which makes clang complain.
    if("${CMAKE_${LAUNCHER}_COMPILER_ID}" MATCHES "Clang")
      set(CMAKE_${LAUNCHER}_FLAGS "${CMAKE_${LAUNCHER}_FLAGS} -Qunused-arguments -fcolor-diagnostics")
    endif()
  endforeach()
endif()
