mirror of
https://git.yoctoproject.org/poky
synced 2026-02-07 01:06:37 +01:00
This variable controls how ccache determines if the cache is valid or not for a given compiler. By default, ccache looks at the mtime of the compiler binary. This should be sufficient for our purposes as the mtime is preserved from sstate and will only be changed on rebuilds if the binary is actually different. (From OE-Core rev: 27aec0bab6fcb19c5d5be30763f4038a46922e8f) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
69 lines
1.9 KiB
Plaintext
69 lines
1.9 KiB
Plaintext
#
|
|
# Copyright OpenEmbedded Contributors
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
#
|
|
|
|
#
|
|
# Usage:
|
|
# - Enable ccache
|
|
# Add the following line to a conffile such as conf/local.conf:
|
|
# INHERIT += "ccache"
|
|
#
|
|
# - Disable ccache for a recipe
|
|
# Add the following line to the recipe if it can't be built with ccache:
|
|
# CCACHE_DISABLE = '1'
|
|
#
|
|
# - Share ccache files between different builds
|
|
# Set CCACHE_TOP_DIR to a shared dir
|
|
# CCACHE_TOP_DIR = /path/to/shared_ccache/
|
|
#
|
|
# - TO debug ccahe
|
|
# 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
|
|
#
|
|
|
|
# Set it to a shared location for different builds, so that cache files can
|
|
# be shared between different builds.
|
|
CCACHE_TOP_DIR ?= "${TMPDIR}/ccache"
|
|
|
|
# ccache-native and cmake-native have a circular dependency
|
|
# that affects other native recipes, but not all.
|
|
# Allows to use ccache in specified native recipes.
|
|
CCACHE_NATIVE_RECIPES_ALLOWED ?= ""
|
|
|
|
# ccahe removes CCACHE_BASEDIR from file path, so that hashes will be the same
|
|
# in different builds.
|
|
export CCACHE_BASEDIR ?= "${TMPDIR}"
|
|
|
|
export CCACHE_CONFIGPATH ?= "${COREBASE}/meta/conf/ccache.conf"
|
|
|
|
export CCACHE_DIR ?= "${CCACHE_TOP_DIR}/${MULTIMACH_TARGET_SYS}/${PN}"
|
|
|
|
python() {
|
|
"""
|
|
Enable ccache for the recipe
|
|
"""
|
|
pn = d.getVar('PN')
|
|
if (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')
|
|
d.setVar('CCACHE', 'ccache ')
|
|
}
|
|
|
|
addtask cleanccache after do_clean
|
|
python do_cleanccache() {
|
|
import shutil
|
|
|
|
ccache_dir = d.getVar('CCACHE_DIR')
|
|
if os.path.exists(ccache_dir):
|
|
bb.note("Removing %s" % ccache_dir)
|
|
shutil.rmtree(ccache_dir)
|
|
else:
|
|
bb.note("%s doesn't exist" % ccache_dir)
|
|
}
|
|
addtask cleanall after do_cleanccache
|
|
do_cleanccache[nostamp] = "1"
|