From: Ross Burton Date: Mon, 19 May 2025 12:59:30 +0000 (+0100) Subject: ccache: enable ccache for all recipes if it is in HOSTTOOLS X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc91a0f6500e88dd96a56307226fcfd16c60c342;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git ccache: enable ccache for all recipes if it is in HOSTTOOLS At the moment we don't allow ccache for native recipes to avoid the dependency loop of native recipes needing ccache-native which then depends on itself. One way to avoid this dependency loop is to just provide a host ccache, so enable ccache globally if ccache is in HOSTTOOLS. This isn't set out of the box, but does work. Signed-off-by: Ross Burton Signed-off-by: Mathieu Dubois-Briand Signed-off-by: Richard Purdie --- diff --git a/meta/classes/ccache.bbclass b/meta/classes/ccache.bbclass index 7daaa7e3aa..5ce23e50f3 100644 --- a/meta/classes/ccache.bbclass +++ b/meta/classes/ccache.bbclass @@ -12,17 +12,22 @@ # # - Disable ccache for a recipe # Add the following line to the recipe if it can't be built with ccache: -# CCACHE_DISABLE = '1' +# CCACHE_DISABLE = "1" # # - Share ccache files between different builds # Set CCACHE_TOP_DIR to a shared dir -# CCACHE_TOP_DIR = /path/to/shared_ccache/ +# CCACHE_TOP_DIR = "/path/to/shared_ccache/" # -# - TO debug ccahe +# - To debug ccache # export CCACHE_DEBUG = "1" # export CCACHE_LOGFILE = "${CCACHE_DIR}/logfile.log" # And also set PARALLEL_MAKE = "-j 1" to get make the log in order # +# By default this class will only use ccache for target builds, and build +# our own ccache-native. It is possible to use a host-provided ccache that +# can then be used by native recipes too by setting: +# ASSUME_PROVIDED += "ccache-native" +# HOSTTOOLS += "ccache" # Set it to a shared location for different builds, so that cache files can # be shared between different builds. @@ -46,7 +51,8 @@ python() { Enable ccache for the recipe """ pn = d.getVar('PN') - if (pn in d.getVar('CCACHE_NATIVE_RECIPES_ALLOWED') or + if ("ccache" in d.getVar("HOSTTOOLS").split() or + pn in d.getVar('CCACHE_NATIVE_RECIPES_ALLOWED') or not (bb.data.inherits_class("native", d) or bb.utils.to_boolean(d.getVar('CCACHE_DISABLE')))): d.appendVar('DEPENDS', ' ccache-native')