Date: Tue, 20 Oct 2015 15:32:41 +0200 From: Juan =?iso-8859-1?b?UmFt824=?= Molina Menor <listjm@club.fr> To: freebsd-current@freebsd.org Subject: [CFT] Buildworld ccache support Message-ID: <56264279.7020504@club.fr>
next in thread | raw e-mail | index | archive | help
Hi!
I’m certainly doing it wrong, because CCACHE does not kick in after
applying the patch and modifying make.conf. CCACHE stats ('ccache -z'
followed by 'ccache -s') remain at zero during buildworld while they
used to reflect the cache miss/hits before.
# cat /etc/make.conf
WITH_CCACHE_BUILD=
# svn diff /usr/src/share/mk/local.init.mk
Index: /usr/src/share/mk/local.init.mk
===================================================================
--- /usr/src/share/mk/local.init.mk (revision 289627)
+++ /usr/src/share/mk/local.init.mk (working copy)
@@ -38,3 +38,37 @@
HOST_CFLAGS+= -DHOSTPROG
CFLAGS+= ${HOST_CFLAGS}
.endif
+
+# Handle ccache after CC is determined. If CC is at some specific path
then
+# we must prepend the ccache wrapper. Otherwise we can just prepend
PATH with
+# the wrapper location, which is a more safe solution since it avoids
spaces
+# and compiler type guessing based on filename.
+LOCALBASE?= /usr/local
+CCACHE_WRAPPER_PATH?= ${LOCALBASE}/libexec/ccache
+CCACHE_PATH?= ${LOCALBASE}/bin/ccache
+.if defined(WITH_CCACHE_BUILD) && !defined(NOCCACHE) && \
+ ${CC:M*ccache*} == "" && exists(${CCACHE_PATH})
+# Handle compiler changes properly. This avoids needing to use the 'world'
+# wrappers.
+CCACHE_COMPILERCHECK?= content
+.export CCACHE_COMPILERCHECK
+.if ${CC:M/*} == ""
+# Can use PATH.
+PATH:= ${CCACHE_WRAPPER_PATH}:${PATH}
+.export PATH
+.else
+# Must prepend CC.
+CC:= ${CCACHE_PATH} ${CC}
+CXX:= ${CCACHE_PATH} ${CXX}
+CPP:= ${CCACHE_PATH} ${CPP}
+.if defined(HOST_CC)
+HOST_CC:= ${CCACHE_PATH} ${HOST_CC}
+.endif
+.if defined(HOST_CXX)
+HOST_CXX:= ${CCACHE_PATH} ${HOST_CXX}
+.endif
+.if defined(HOST_CPP)
+HOST_CPP:= ${CCACHE_PATH} ${HOST_CPP}
+.endif
+.endif
+.endif # WITH_CCACHE_BUILD
If I recover the old make.conf, CCACHE works again for a buildworld.
# cat /etc/make.conf.old
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE) && exists(/usr/local/libexec/ccache/world/cc)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif
Maybe I misconfigured CCACHE when I first installed it?
Best regards,
Juan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?56264279.7020504>
