summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAngelo Ribeiro <Angelo.Ribeiro@criticaltechworks.com>2023-08-17 10:01:15 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2023-08-21 11:34:12 +0100
commit8f98a81394312bc7d25503e91a1e4af1fa7767ff (patch)
tree7de1b50e4966ac6715ee4db1f5f4ad6b395aa772
parent853e98f54b7fe06fb68951aa514b5c4efcc19b0c (diff)
downloadpoky-8f98a81394312bc7d25503e91a1e4af1fa7767ff.tar.gz
ccache.bbclass: Add allowed list for native recipes
Native recipes are not able to use ccache currently, due to a circular dependency between ccache-native and cmake-native. This affects also other native recipes, but not all, imposing a limitation in build time optimizations. The introduction of CCACHE_NATIVE_RECIPES_ALLOWED allows the user to specify which native recipes should use ccache, keeping it disable by default for all native recipes. (From OE-Core rev: 87cb2be71e0c0c123eaae6a5ae135900c95535db) Signed-off-by: Angelo Ribeiro <Angelo.Ribeiro@criticaltechworks.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/ccache.bbclass11
-rw-r--r--meta/conf/documentation.conf1
2 files changed, 9 insertions, 3 deletions
diff --git a/meta/classes/ccache.bbclass b/meta/classes/ccache.bbclass
index 34becb69d1..262db6672c 100644
--- a/meta/classes/ccache.bbclass
+++ b/meta/classes/ccache.bbclass
@@ -28,6 +28,11 @@
28# be shared between different builds. 28# be shared between different builds.
29CCACHE_TOP_DIR ?= "${TMPDIR}/ccache" 29CCACHE_TOP_DIR ?= "${TMPDIR}/ccache"
30 30
31# ccache-native and cmake-native have a circular dependency
32# that affects other native recipes, but not all.
33# Allows to use ccache in specified native recipes.
34CCACHE_NATIVE_RECIPES_ALLOWED ?= ""
35
31# ccahe removes CCACHE_BASEDIR from file path, so that hashes will be the same 36# ccahe removes CCACHE_BASEDIR from file path, so that hashes will be the same
32# in different builds. 37# in different builds.
33export CCACHE_BASEDIR ?= "${TMPDIR}" 38export CCACHE_BASEDIR ?= "${TMPDIR}"
@@ -54,9 +59,9 @@ python() {
54 Enable ccache for the recipe 59 Enable ccache for the recipe
55 """ 60 """
56 pn = d.getVar('PN') 61 pn = d.getVar('PN')
57 # quilt-native doesn't need ccache since no c files 62 if (pn in d.getVar('CCACHE_NATIVE_RECIPES_ALLOWED') or
58 if not (bb.data.inherits_class("native", d) or 63 not (bb.data.inherits_class("native", d) or
59 bb.utils.to_boolean(d.getVar('CCACHE_DISABLE'))): 64 bb.utils.to_boolean(d.getVar('CCACHE_DISABLE')))):
60 d.appendVar('DEPENDS', ' ccache-native') 65 d.appendVar('DEPENDS', ' ccache-native')
61 d.setVar('CCACHE', 'ccache ') 66 d.setVar('CCACHE', 'ccache ')
62} 67}
diff --git a/meta/conf/documentation.conf b/meta/conf/documentation.conf
index 66b8e2f24f..fc1b4978fd 100644
--- a/meta/conf/documentation.conf
+++ b/meta/conf/documentation.conf
@@ -106,6 +106,7 @@ BUSYBOX_SPLIT_SUID[doc] = "For the BusyBox recipe, specifies whether to split th
106#C 106#C
107 107
108CACHE[doc] = "The directory holding the cache of the metadata." 108CACHE[doc] = "The directory holding the cache of the metadata."
109CCACHE_NATIVE_RECIPES_ALLOWED[doc] = "A list of native recipes to use Ccache, this variable is useful to bypass a circular dependency between ccache-native and cmake-native that inhibits to use Ccache in other native recipes."
109CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as TARGET_CFLAGS." 110CFLAGS[doc] = "Flags passed to the C compiler for the target system. This variable evaluates to the same as TARGET_CFLAGS."
110CLASSOVERRIDE[doc] = "An internal variable specifying the special class override that should currently apply (e.g. "class-target", "class-native", and so forth)." 111CLASSOVERRIDE[doc] = "An internal variable specifying the special class override that should currently apply (e.g. "class-target", "class-native", and so forth)."
111CLEANBROKEN[doc] = "Specifies if 'make clean' does not work for a recipe (and therefore the build system should not try to use it during do_configure)" 112CLEANBROKEN[doc] = "Specifies if 'make clean' does not work for a recipe (and therefore the build system should not try to use it during do_configure)"