1 @c -*- coding: utf-8; mode: texinfo; -*-
4 @node Build system notes
5 @chapter Build system notes
7 @warning{This chapter is in high flux, and is being run in a
8 @qq{wiki-like} fashion. Do not trust anything you read in this
12 * Build system overview::
18 @node Build system overview
19 @section Build system overview
21 Build system is currently GNU make, with an extra "stepmake" layer
22 on top. Look at files in @file{make/} and @file{stepmake/} and
23 all @file{GNUmakefile}s.
25 There is wide-spread dissatisfaction with this system, and we are
26 considering changing. This would be a huge undertaking (estimated
27 200+ hours). This change will probably involve not using GNU make
28 any more -- but a discussion about the precise build system will
29 have to wait. Before we reach that point, we need to figure out
30 (at least approximately) what the current build system does.
32 Fundamentally, a build system does two things:
36 Constructs command-line commands, for example:
40 --tons --of --options \
43 --more --imperial --and --metric --tons --of --options \
48 If there was a previous build, it decides which parts of the
49 system need to be rebuilt.
53 When I try to do anything in the build system, it helps to remind
54 myself of this. The "end result" is just a series of command-line
55 commands. All the black magick is just an attempt to construct
63 * Building a bibliography::
66 @node Building a bibliography
67 @subsection Building a bibliography
72 @section Website build
74 Start here: @file{make/website.make}
76 Website build includes @ref{Building a bibliography}.