<!-- Mail as an attachment to: monthly@freebsd.org -->
<project cat='bin'>
  <title>Src build system improvements</title>

  <contact>
    <person>
      <name>
        <given>Bryan</given>
        <common>Drewery</common>
      </name>
      <email>bdrewery@FreeBSD.org</email>
    </person>
  </contact>

  <links>
    <url href="https://lists.freebsd.org/pipermail/freebsd-arch/2015-December/017571.html">FreeBSD-Arch post describing full work and plans</url>
    <url href="http://www.bsdcan.org/2014/schedule/events/460.en.html">BSDCan 2014 META_MODE presentation</url>
    <url href="https://svnweb.freebsd.org/base?view=revision&revision=290433">WITH_FAST_DEPEND details</url>
    <url href="https://svnweb.freebsd.org/base?view=revision&revision=290526">WITH_CCACHE_BUILD details</url>
  </links>

  <body>
    <p>
      Bryan Drewery (bdrewery) has been working to improve the build framework as well as buildworld build times.  The build system has largely been unchanged for large-scale changes for many years.  Most of the effort has been improving the recent META_MODE merge that was presented at BSDCan 2014.  This is a new build system that is not currently enabled by default but brings many benefits.  Beyond that some highlights of work done in buildworld are:
      
      - WITH_FAST_DEPEND which avoids calling 'mkdep' during the 'make depend' phase and instead generates dependency files during compilation.  This was pre-processing all source files twice.  This saves 16-35% in build times.
      - WITH_CCACHE_BUILD adds built-in ccache support which avoids many of the historical pitfalls of changing CC in make.conf to achieve it.
      - Many improvements for parallelization of the build.
      - LIBADD improvements to ensure proper usage.  Work undergoing to reduce overlinking.
      - A lot of cleanup of improper framework usage.
      - Ensuring files installed from the build fail if the destination directory is missing, rather than install a file as the directory name.
    </p>
  </body>

  <sponsor>
    EMC / Isilon Storage Division
  </sponsor>

  <help>
    <task>
      See the FreeBSD-arch mail for more information on planned work.
    </task>
  </help>
</project>
