aboutsummaryrefslogtreecommitdiff
path: root/build.1
blob: c7c68b3ad881e662bd39c93c6cddfbb1c47e4906 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
.Dd $Mdocdate$
.Dt BUILD 1
.Os
.Sh NAME
.Nm build
.Nd follow embedded build instructions
.Sh SYNOPSIS
.Nm
.Op Fl d
.Op Fl d
.Op Fl d
.Ar file
.Op Ar ...
.Sh DESCRIPTION
.Pp
.Nm
is a program which follows simple build instructions
embedded in source files.
The number of
.Fl d
flags control the printing of debugging information.
.Pp
.Nm
is decidedly not a
.Xr make 1
replacement, except in trivial cases.
In such cases, however,
it is quite a nice and simple solution.
It is originally designed for generating
.Xr troff 1
documents,
but can be used with arbitrary source files.
.Pp
The first twenty lines of each
.Ar file
are scanned for build information.
Build information is encoded in two ways:
.Bl -tag -width indent
.It command line
[anything] <whitespace> "$ " <shell command> [">" <target>]
.It dependency line
[anything] <whitespace> "% " <files separated by whitespace>
.El
.Pp
There can be multiple command lines,
but only one dependency line.
The last target read is regarded as the true target.
.Pp
Unlike
.Xr make 1 ,
.Nm
executes all command lines,
joined by newlines,
in the same shell process.
This means that you can keep state across multiple commands.
Note that all commands are executed
regardless of the exit status of previous commands.
.
.Sh EXAMPLES
.Pp
Assuming that the file
.Pa doc.t
starts with the following text,
.Bd -literal -offset indent
\&.\\" This document is built with the following shell commands:
\&.\\"   $ refer -p refs doc.t | troff -ms | dpost > doc.ps &&
\&.\\"   $ ps2pdf doc.ps > doc.pdf &&
\&.\\"   $ rm doc.ps
\&.
\&.\\" Apart from this file, it depends on the following files:
\&.\\"   % refs x.tmac
.Ed
.Pp
the invocation
.Bd -literal -offset indent
$ build doc.t
.Ed
.Pp
will generate
.Pa doc.pdf
by running the given commands,
depending on the relative modification times of
.Pa doc.t ,
.Pa doc.pdf
and
.Pa x.tmac .
.\" .Sh DIAGNOSTICS
.\" .Sh SEE ALSO
.\" .Sh STANDARDS
.\" .Sh HISTORY
.Sh AUTHORS
.Nm
is written by John Ankarström
.Aq Mt "john (at) ankarstrom.se" .
.\" .Sh BUGS