-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaker.doc
More file actions
94 lines (63 loc) · 2.94 KB
/
maker.doc
File metadata and controls
94 lines (63 loc) · 2.94 KB
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
Takes one argument being the file name. You can also have switches.
=== Switches ===
-a
Force execution of all rules regardless of file modification time.
-g #
Specify the goal to use; if omitted, then "$" is the default.
-i
Ignore objects that are unexisting files, and try to continue anyways.
-l
List all objects and rules and their dependencies, instead of executing
any commands.
-n
Only display commands to be executed, and assume they are successful,
instead of executing them. Does not touch any files, but will still check
the modification times unless -a is also specified.
-q
Do not display commands to be executed.
-t
Measure time usage (not implemented yet).
-v
Verbose mode.
=== File format ===
A line can be blank or starting with # if it is a comment.
A line starting with ! is a command to execute and its output is included
as though it were present in the file (allowing dynamic rules).
A line starting with = sets an environment variable or option. Any option
name starts with * and these are listed in a below section. For all
environment variables and most options, the name is followed by = and then
the value, but some options do not require a value (omit the second =).
Other lines are rules and consist of input object names with spaces in
between, and then -> and then the output object names with spaces in
between and then : and then a command to execute which is intended to
produce the output objects from the input objects. There must be spaces
before and after the -> and : tokens.
An object name cannot occur as output for multiple rules.
Object names can be a file name, or a special name with $ or * at first.
The names with * at first have no inherent meaning but do not correspond
to any files; you can use that to group objects. The names with $ at
first have special meanings; see the below section. They are still ordinary
objects other than whatever special properties each one has.
If a command to execute starts with * then it is a built-in operation. It
is assumed that having all of the dependencies satisfied is sufficient to
satisfy all of the objects listed as the output for this rule, unless the
built-in operation specification overrides this. The built-in operation is
zero or more of the characters described in the below section.
=== Special objects ===
$
This object is the default goal object if the -g switch is not used.
=== Options ===
*a
Has the same effect as the -a switch if present.
*i
Has the same effect as the -i switch if present.
*re
Causes it to reread the modification time of all output files of a rule
after that rule is executed.
=== Built-in operations ===
T
Attempt to update the modification time of the output files of this rule,
to match the latest modification time of any of the inputs of this rule.
(It is not an error if this fails.) (Even if this is not specified, the
internal modification time is set, which will affect the operation of
further rules.)