On 1/26/17 1:57 AM, Yannick Gicquel wrote: > 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
This looks lucerative. However, does this work with cmake in all cmake based recipes would be interesting to know. > > 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'))} \ > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core