wiki:PlanningWiki/BuildSystem

Requirements for a better buildsystem

  • be usable without autoconf
  • be usable on any platform that has gmake (thinking of native mingw here)
  • automatic dependency generation
  • no ANSI colours to display stuff
  • hide compiler and link stages with CC & LINK (like current)
  • query git for branch name and commit id and include this when building
  • use fewer makefiles
  • allows multiple dist targets: osx, src, windows
                Makefile.nds    Makefile.osx   Makefile.std   Makefile.win
                      |   |          |               |            |
                      |   |          |               |            |
      Makefile <------'   '-------.  |  .------------'            |
          | |                     |  |  |   .---------------------'
          | |                     v  v  v   v
          | |                    Makefile.inc                Makefile.nmake
          | |                        |                              |
          | '------------------.     |                              |
          |                    |     |                              |
          |                    |     |                              |
          |                    |     |                              |
          v                    v     v                              |
      mk/buildsys.mk          Makefile.src <------------------------'

Build system design

The existing configure/make/package system relies on autoconf and atheme's buildsys. Unfortunately, documentation for the latter is scant. See an oook thread discussing it, or atheme's github repository for buildsys. Note that Angband forked from atheme, which in turn forked from Midar (Jonathan Schleifer). Aerdan brought in buildsys in June 2009, and merged from atheme in August 2011. While the original import was compatible with BSD make, it was slow. The current version is definitely reliant on GNU make extensions, and most likely cannot be made portable to other makes without extreme effort, if at all.

Some documents of note:

Buildbot

Todos:

  • document how buildbot works, including slave dependencies (rst, sqlite, doxygen, ncursesw, SDL)
  • extract the doxygen build step from the Linux builder and create a utility builder that runs doxygen, builds and runs stats, etc.
Last modified 3 years ago Last modified on 03/27/14 02:52:48