This allows ccache usage for recipes which inherit cmake.bbclass. Since cmake v3.4, it can be enabled using some "-D" options.
Here below are some metrics while using it for webkitgtk recipe. (machine is a 4x core i7 @ 3.4GHz) $ bitbake -c fetchall webkitgtk $ time bitbake webkitgtk <snip> real 56m25.191s user 359m32.003s sys 34m49.356s $ bitbake -c clean webkitgtk $ bitbake -c cleansstate webkitgtk $ time bitbake webkitgtk <snip> real 25m19.298s user 17m57.861s sys 6m20.157s Signed-off-by: Yannick Gicquel <yannick.gicq...@iot.bzh> --- meta/classes/cmake.bbclass | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index 9e74599..737a4e0 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -4,12 +4,9 @@ OECMAKE_SOURCEPATH ?= "${S}" DEPENDS_prepend = "cmake-native " B = "${WORKDIR}/build" -# We need to unset CCACHE otherwise cmake gets too confused -CCACHE = "" - # C/C++ Compiler (without cpu arch/tune arguments) -OECMAKE_C_COMPILER ?= "`echo ${CC} | sed 's/^\([^ ]*\).*/\1/'`" -OECMAKE_CXX_COMPILER ?= "`echo ${CXX} | sed 's/^\([^ ]*\).*/\1/'`" +OECMAKE_C_COMPILER ?= "${@'${CC}'.replace('${CCACHE}','',1).split(' ')[0]}" +OECMAKE_CXX_COMPILER ?= "${@'${CXX}'.replace('${CCACHE}','',1).split(' ')[0]}" OECMAKE_AR ?= "${AR}" # Compiler flags @@ -108,9 +105,16 @@ cmake_do_configure() { OECMAKE_SITEFILE="" fi + if [ -n "${CCACHE}" ]; then + OECMAKE_CCACHE="-DCMAKE_C_COMPILER_LAUNCHER=${CCACHE} -DCMAKE_CXX_COMPILER_LAUNCHER=${CCACHE}" + else + OECMAKE_CCACHE="" + fi + cmake \ ${OECMAKE_SITEFILE} \ ${OECMAKE_SOURCEPATH} \ + ${OECMAKE_CCACHE} \ -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \ -DCMAKE_INSTALL_BINDIR:PATH=${@os.path.relpath(d.getVar('bindir'), d.getVar('prefix'))} \ -DCMAKE_INSTALL_SBINDIR:PATH=${@os.path.relpath(d.getVar('sbindir'), d.getVar('prefix'))} \ -- 1.9.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core