# # 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" # ccahe removes CCACHE_BASEDIR from file path, so that hashes will be the same # in different builds. export CCACHE_BASEDIR ?= "${TMPDIR}" # Used for sharing cache files after compiler is rebuilt export CCACHE_COMPILERCHECK ?= "%compiler% -dumpspecs" export CCACHE_CONFIGPATH ?= "${COREBASE}/meta/conf/ccache.conf" export CCACHE_DIR ?= "${CCACHE_TOP_DIR}/${MULTIMACH_TARGET_SYS}/${PN}" # We need to stop ccache considering the current directory or the # debug-prefix-map target directory to be significant when calculating # its hash. Without this the cache would be invalidated every time # ${PV} or ${PR} change. export CCACHE_NOHASHDIR ?= "1" python() { """ Enable ccache for the recipe """ pn = d.getVar('PN') # quilt-native doesn't need ccache since no c files if not (pn in ('ccache-native', 'quilt-native') 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"