summaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
Diffstat (limited to 'package')
-rw-r--r--package/ccache/ccache.mk5
-rw-r--r--package/gcc/gcc.mk29
2 files changed, 27 insertions, 7 deletions
diff --git a/package/ccache/ccache.mk b/package/ccache/ccache.mk
index 3bd28039e2..52cf309fc9 100644
--- a/package/ccache/ccache.mk
+++ b/package/ccache/ccache.mk
@@ -26,15 +26,10 @@ HOST_CCACHE_CONF_OPTS += --with-bundled-zlib
# is already used by autotargets for the ccache package.
# BR_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.
# - Change hard-coded last-ditch default to match path in .config, to avoid
# the need to specify BR_CACHE_DIR when invoking ccache directly.
define HOST_CCACHE_PATCH_CONFIGURATION
sed -i 's,getenv("CCACHE_DIR"),getenv("BR_CACHE_DIR"),' $(@D)/ccache.c
- sed -i 's,conf->compiler_check = x_strdup("mtime"),conf->compiler_check = x_strdup("none"),' $(@D)/conf.c
sed -i 's,"%s/.ccache","$(BR_CACHE_DIR)",' $(@D)/conf.c
endef
diff --git a/package/gcc/gcc.mk b/package/gcc/gcc.mk
index b9da39812a..103cbe17b7 100644
--- a/package/gcc/gcc.mk
+++ b/package/gcc/gcc.mk
@@ -23,9 +23,10 @@ GCC_SOURCE ?= gcc-$(GCC_VERSION).tar.bz2
# Xtensa special hook
#
+HOST_GCC_XTENSA_OVERLAY_TAR = $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(call qstrip,$(BR2_XTENSA_CORE_NAME)).tar
+
define HOST_GCC_XTENSA_OVERLAY_EXTRACT
- tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(call qstrip,\
- $(BR2_XTENSA_CORE_NAME)).tar -C $(@D) --strip-components=1 gcc
+ tar xf $(HOST_GCC_XTENSA_OVERLAY_TAR) -C $(@D) --strip-components=1 gcc
endef
#
@@ -237,6 +238,30 @@ endif
HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".real"'
+ifeq ($(BR2_CCACHE),y)
+HOST_GCC_COMMON_CCACHE_HASH_FILES += $(DL_DIR)/$(GCC_SOURCE)
+# Cfr. PATCH_BASE_DIRS in .stamp_patched, but we catch both versioned and
+# unversioned patches unconditionally
+HOST_GCC_COMMON_CCACHE_HASH_FILES += \
+ $(wildcard \
+ package/gcc/$(GCC_VERSION)/*.patch \
+ $(addsuffix $((PKG)_RAWNAME)/$(GCC_VERSION)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))) \
+ $(addsuffix $((PKG)_RAWNAME)/*.patch,$(call qstrip,$(BR2_GLOBAL_PATCH_DIR))))
+ifeq ($(BR2_xtensa),y)
+HOST_GCC_COMMON_CCACHE_HASH_FILES += $(HOST_GCC_XTENSA_OVERLAY_TAR)
+endif
+ifeq ($(ARCH),powerpc)
+ifneq ($(BR2_SOFT_FLOAT),)
+HOST_GCC_COMMON_CCACHE_HASH_FILES += package/gcc/$(GCC_VERSION)/1000-powerpc-link-with-math-lib.patch.conditional
+endif
+endif
+
+HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CCACHE_HASH=\"`\
+ printf '%s' $($(PKG)_CONF_OPTS) $(GCC_VERSION) \
+ | sha256sum - $(HOST_GCC_COMMON_CCACHE_HASH_FILES) \
+ | cut -c -64 | tr -d '\n'`\"
+endif # BR2_CCACHE
+
# The LTO support in gcc creates wrappers for ar, ranlib and nm which load
# the lto plugin. These wrappers are called *-gcc-ar, *-gcc-ranlib, and
# *-gcc-nm and should be used instead of the real programs when -flto is
OpenPOWER on IntegriCloud