option(USE_COMPILE_CACHE "Use ccache or clcache for compilation" OFF)

# Compatibility for old option name
if(USE_CCACHE)
	set(USE_COMPILE_CACHE ON)
endif()

if(USE_COMPILE_CACHE)
	if(MSVC)
		set(CACHE_TOOL_NAME clcache)
	elseif(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|AppleClang|Clang)")
		set(CACHE_TOOL_NAME ccache)
	else()
		message(WARNING "Compile cache only available with MSVC or GNU")
	endif()

	find_program(CACHE_TOOL ${CACHE_TOOL_NAME})
	if (CACHE_TOOL)
		message(STATUS "Using ${CACHE_TOOL} found for caching")
		set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CACHE_TOOL})
		set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CACHE_TOOL})
	else()
		message(WARNING "USE_COMPILE_CACHE enabled, but no ${CACHE_TOOL_NAME} found")
	endif()
endif()
