diff options
-rw-r--r-- | Config.in | 7 | ||||
-rw-r--r-- | Makefile | 3 | ||||
-rw-r--r-- | package/ccache/ccache.mk | 24 |
3 files changed, 21 insertions, 13 deletions
@@ -198,6 +198,13 @@ config BR2_CCACHE ccache cache by removing the $HOME/.buildroot-ccache directory. +config BR2_CCACHE_DIR + string "Compiler cache location" + depends on BR2_CCACHE + default "$(HOME)/.buildroot-ccache" + help + Where ccache should store cached files. + config BR2_DEPRECATED bool "Show packages that are deprecated or obsolete" help @@ -252,7 +252,8 @@ TARGET_SKELETON=$(TOPDIR)/fs/skeleton ifeq ($(BR2_CCACHE),y) CCACHE:=$(HOST_DIR)/usr/bin/ccache -CCACHE_CACHE_DIR=$(HOME)/.buildroot-ccache +BUILDROOT_CACHE_DIR = $(call qstrip,$(BR2_CCACHE_DIR)) +export BUILDROOT_CACHE_DIR HOSTCC := $(CCACHE) $(HOSTCC) HOSTCXX := $(CCACHE) $(HOSTCXX) endif diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk index f71376ee8..d7106eed1 100644 --- a/package/ccache/ccache.mk +++ b/package/ccache/ccache.mk @@ -25,22 +25,22 @@ HOST_CCACHE_CONF_ENV = \ # has zero dependency besides the C library. HOST_CCACHE_CONF_OPT += ccache_cv_zlib_1_2_3=no -# We directly hardcode configuration into the binary, as it is much -# easier to handle than passing an environment variable. Our -# configuration is: -# - the cache location -# - the fact that ccache shouldn't use the compiler binary mtime to -# - detect a change in the compiler, because in the context of -# - Buildroot, that completely defeats the purpose of ccache. Of -# - course, that leaves the user responsible for purging its cache -# - when the compiler changes. -define HOST_CCACHE_FIX_CCACHE_DIR - sed -i 's,getenv("CCACHE_DIR"),"$(CCACHE_CACHE_DIR)",' $(@D)/ccache.c +# Patch host-ccache as follows: +# - Use BUILDROOT_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR +# is already used by autotargets for the ccache package. +# BUILDROOT_CACHE_DIR is exported by Makefile based on config option +# BR2_CCACHE_DIR. +# - ccache shouldn't use the compiler binary mtime to detect a change in +# the compiler, because in the context of Buildroot, that completely +# defeats the purpose of ccache. Of course, that leaves the user +# responsible for purging its cache when the compiler changes. +define HOST_CCACHE_PATCH_CONFIGURATION + sed -i 's,getenv("CCACHE_DIR"),getenv("BUILDROOT_CACHE_DIR"),' $(@D)/ccache.c sed -i 's,getenv("CCACHE_COMPILERCHECK"),"none",' $(@D)/ccache.c endef HOST_CCACHE_POST_CONFIGURE_HOOKS += \ - HOST_CCACHE_FIX_CCACHE_DIR + HOST_CCACHE_PATCH_CONFIGURATION $(eval $(call AUTOTARGETS)) $(eval $(call AUTOTARGETS,host)) |