1################################################################################ 2# 3# ccache 4# 5################################################################################ 6 7CCACHE_VERSION = 4.9.1 8CCACHE_SITE = https://github.com/ccache/ccache/releases/download/v$(CCACHE_VERSION) 9CCACHE_SOURCE = ccache-$(CCACHE_VERSION).tar.xz 10CCACHE_LICENSE = GPL-3.0+, others 11CCACHE_LICENSE_FILES = LICENSE.adoc GPL-3.0.txt 12HOST_CCACHE_DEPENDENCIES = host-hiredis host-zstd 13 14# We are ccache, so we can't use ccache 15HOST_CCACHE_CONF_OPTS += \ 16 -UCMAKE_C_COMPILER_LAUNCHER \ 17 -UCMAKE_CXX_COMPILER_LAUNCHER \ 18 -DCCACHE_DEV_MODE=OFF \ 19 -DZSTD_FROM_INTERNET=OFF \ 20 -DHIREDIS_FROM_INTERNET=OFF \ 21 -DENABLE_TESTING=OFF 22 23# Patch host-ccache as follows: 24# - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR 25# is already used by autotargets for the ccache package. 26# BR_CACHE_DIR is exported by Makefile based on config option 27# BR2_CCACHE_DIR. 28# - Change hard-coded last-ditch default to match path in .config, to avoid 29# the need to specify BR_CACHE_DIR when invoking ccache directly. 30# CCache replaces "home_dir" with the home directory of the current user, 31# so rewrite BR_CACHE_DIR to take that into consideration for SDK purpose 32HOST_CCACHE_DEFAULT_CCACHE_DIR = $(patsubst $(HOME)/%,%,$(BR_CACHE_DIR)) 33 34define HOST_CCACHE_PATCH_CONFIGURATION 35 sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/src/Config.cpp 36 sed -i 's,".ccache","$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp 37 sed -i 's,"/.cache/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp 38 sed -i 's,"/.config/ccache","/$(HOST_CCACHE_DEFAULT_CCACHE_DIR)",' $(@D)/src/Config.cpp 39 sed -i 's,getenv("XDG_CACHE_HOME"),nullptr,' $(@D)/src/Config.cpp 40 sed -i 's,getenv("XDG_CONFIG_HOME"),nullptr,' $(@D)/src/Config.cpp 41endef 42 43HOST_CCACHE_POST_PATCH_HOOKS += HOST_CCACHE_PATCH_CONFIGURATION 44 45define HOST_CCACHE_MAKE_CACHE_DIR 46 mkdir -p $(BR_CACHE_DIR) 47endef 48 49HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_MAKE_CACHE_DIR 50 51# Provide capability to do initial ccache setup (e.g. increase default size) 52BR_CCACHE_INITIAL_SETUP = $(call qstrip,$(BR2_CCACHE_INITIAL_SETUP)) 53ifneq ($(BR_CCACHE_INITIAL_SETUP),) 54define HOST_CCACHE_DO_INITIAL_SETUP 55 @$(call MESSAGE,"Applying initial settings") 56 $(CCACHE) $(BR_CCACHE_INITIAL_SETUP) 57 $(CCACHE) -s 58endef 59 60HOST_CCACHE_POST_INSTALL_HOOKS += HOST_CCACHE_DO_INITIAL_SETUP 61endif 62 63$(eval $(host-cmake-package)) 64 65ifeq ($(BR2_CCACHE),y) 66ccache-stats: host-ccache 67 $(Q)$(CCACHE) -s 68 69ccache-options: host-ccache 70ifeq ($(CCACHE_OPTIONS),) 71 $(Q)echo "Usage: make ccache-options CCACHE_OPTIONS=\"opts\"" 72 $(Q)echo "where 'opts' corresponds to one or more valid ccache options" \ 73 "(see ccache help text below)" 74 $(Q)echo 75endif 76 $(Q)$(CCACHE) $(CCACHE_OPTIONS) 77endif 78