#
# 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}"

# Fixed errors:
# ccache: error: Failed to create directory /run/user/0/ccache-tmp: Permission denied
export CCACHE_TEMPDIR ?= "${CCACHE_DIR}/tmp"

# 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 (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"
