[CFT] build: WITH_FAST_DEPEND and WITH_CCACHE_BUILD
Recently I have introduced two new features into the build. These apply
to anything using /usr/share/mk including buildworld, buildkernel,
- The first is WITH_FAST_DEPEND. Please see the commit for its full
description, benefits and discussion. It saves 16-30% in build times
without gimmicks or risk. It avoids running the preprocessor twice in
the build and only runs it during compilation. This is a feature that's
14 years overdue.
There was a problem with the GCC build, but that has been fixed. I
intend to enable this *by default* for the src buildworld/etc... build
in a few weeks.
I do need to schedule a ports exp-run with this as well to see if
anything outside of the src tree is broken by it, which I very much
doubt. If you have a downstream fork of FreeBSD, please import r290433
and r290629 and give me feedback on any issues you encounter.
There is 1 gotcha that I realized. People running 'make depend' manually
may actually want to see a .depend file generated without having to
compile first. I may add support for that somehow but am not sure yet.
It may be a 'make mkdep' target.
- The second is WITH_CCACHE_BUILD. This replaces the previous suggestion
of modifying CC and CXX in /etc/make.conf. This is purposely chosen to
match the ports name. It can save up to 65% build times when combined
with WITH_FAST_DEPEND. This fixes all known issues with
buildworld+ccache. There is a rare problem that can occur with header
detection that is documented in the ccache manpage in the DIRECT MODE
**It is only useful for frequent builders who do not use -DNO_CLEAN and
want a reliable incremental build. It is not useful for people who build
See commit for further details and stats. I do not intend to ever
support enabling this by default. I just intend to update the
devel/ccache pkg-message to suggest using it once it is known to work