diff --git a/include/cmake.mk b/include/cmake.mk
index 09a0a2419f8206f2331ce386409a462430f990d6..c83be1522e17a7032d1b6d50bf0afe6faabc2cd4 100644
--- a/include/cmake.mk
+++ b/include/cmake.mk
@@ -2,6 +2,18 @@ PKG_INSTALL:=1
 
 MAKE_FLAGS+=VERBOSE=1
 
+ifeq ($(CONFIG_CCACHE),)
+  CMAKE_C_COMPILER:=$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)
+  CMAKE_C_COMPILER_ARG1:=
+  CMAKE_CXX_COMPILER:=$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX)
+  CMAKE_CXX_COMPILER_ARG1:=
+else
+  CMAKE_C_COMPILER:=$(STAGING_DIR_HOST)/bin/ccache
+  CMAKE_C_COMPILER_ARG1:=$(filter-out ccache,$(TARGET_CC))
+  CMAKE_CXX_COMPILER:=$(STAGING_DIR_HOST)/bin/ccache
+  CMAKE_CXX_COMPILER_ARG1:=$(filter-out ccache,$(TARGET_CXX))
+endif
+
 define Build/Configure/Default
 	(cd $(PKG_BUILD_DIR); \
 		CFLAGS="$(TARGET_CFLAGS) $(EXTRA_CFLAGS)" \
@@ -13,8 +25,10 @@ define Build/Configure/Default
 			-DCMAKE_BUILD_TYPE=Release \
 			-DCMAKE_C_FLAGS_RELEASE="-DNDEBUG" \
 			-DCMAKE_CXX_FLAGS_RELEASE="-DNDEBUG" \
-			-DCMAKE_C_COMPILER=$(TOOLCHAIN_DIR)/bin/$(TARGET_CC) \
-			-DCMAKE_CXX_COMPILER=$(TOOLCHAIN_DIR)/bin/$(TARGET_CXX) \
+			-DCMAKE_C_COMPILER="$(CMAKE_C_COMPILER)" \
+			-DCMAKE_C_COMPILER_ARG1="$(CMAKE_C_COMPILER_ARG1)" \
+			-DCMAKE_CXX_COMPILER="$(CMAKE_CXX_COMPILER)" \
+			-DCMAKE_CXX_COMPILER_ARG1="$(CMAKE_CXX_COMPILER_ARG1)" \
 			-DCMAKE_EXE_LINKER_FLAGS="$(TARGET_LDFLAGS)" \
 			-DCMAKE_MODULE_LINKER_FLAGS="$(TARGET_LDFLAGS)" \
 			-DCMAKE_SHARED_LINKER_FLAGS="$(TARGET_LDFLAGS)" \