aboutsummaryrefslogtreecommitdiff
path: root/docs/build-manual.tex
diff options
context:
space:
mode:
Diffstat (limited to 'docs/build-manual.tex')
-rw-r--r--docs/build-manual.tex28
1 files changed, 14 insertions, 14 deletions
diff --git a/docs/build-manual.tex b/docs/build-manual.tex
index 49be977..ca2f004 100644
--- a/docs/build-manual.tex
+++ b/docs/build-manual.tex
@@ -15,29 +15,29 @@ processes. The primary goal is to be able to replace the standard
15configure/make or cmake/make systems that have become quite popular. 15configure/make or cmake/make systems that have become quite popular.
16 16
17By default Build will work much as one would expect for compiling software, it 17By default Build will work much as one would expect for compiling software, it
18uses file exisistance and timestamps to determine what to build, and every file 18uses file existence and timestamps to determine what to build, and every file
19has a list of dependant files and input files. 19has a list of dependent files and input files.
20 20
21However, this is only the default configuration, you can use anything as the 21However, this is only the default configuration, you can use anything as the
22condition for determining what to build or rebuild, and targets do not have to 22condition for determining what to build or rebuild, and targets do not have to
23be files. 23be files.
24 24
25Build boasts a sophisticated system for chaining rules together to take files 25Build boasts a sophisticated system for chaining rules together to take files
26through as many steps as necesarry to get them in the desirable foramt for input 26through as many steps as necessary to get them in the desirable format for input
27to the final step. This may sound a little vague and confusing, but what it 27to the final step. This may sound a little vague and confusing, but what it
28means in the end is that you can list, say, a bison file as on input to an 28means in the end is that you can list, say, a bison file as on input to an
29executable target that requires object (.o) files. In this case build will 29executable target that requires object (.o) files. In this case build will
30automatically figure out that it can get a .c file from the .y input file, and 30automatically figure out that it can get a .c file from the .y input file, and
31a .o file from the .c file. It will autogenerate these targets for you and 31a .o file from the .c file. It will auto generate these targets for you and
32save a lot of time and effort on your part. 32save a lot of time and effort on your part.
33 33
34\chapter{Structure of a Build File} 34\chapter{Structure of a Build File}
35Build files contain build script along with four major types of declerations. 35Build files contain build script along with four major types of declarations.
36These are the major types that can be decared: 36These are the major types that can be declared:
37 37
38\begin{description} 38\begin{description}
39 \item[Targets] \hfill \\ 39 \item[Targets] \hfill \\
40 Explicit targets can be defined that represent units of work with a definate 40 Explicit targets can be defined that represent units of work with a definite
41 goal and possibly inputs that can be other targets. 41 goal and possibly inputs that can be other targets.
42 \item[Actions] \hfill \\ 42 \item[Actions] \hfill \\
43 Actions are triggered from the command line and determine what targets to 43 Actions are triggered from the command line and determine what targets to
@@ -68,7 +68,7 @@ target "myprogram"
68} 68}
69\end{lstlisting} 69\end{lstlisting}
70 70
71This example doesn't set any special compliation or linking flags, but it is a 71This example doesn't set any special compilation or linking flags, but it is a
72complete and valid build file. It will find all cpp files in src, generate an 72complete and valid build file. It will find all cpp files in src, generate an
73implicit target for each file to compile it into an object (.o) file, and then 73implicit target for each file to compile it into an object (.o) file, and then
74use those files as the input to the myprogram target in the end. 74use those files as the input to the myprogram target in the end.
@@ -96,14 +96,14 @@ Targets can contain the following special keywords:
96 \item[input] \hfill \\ 96 \item[input] \hfill \\
97 You can specify any expression that results in a string or list of strings. 97 You can specify any expression that results in a string or list of strings.
98 These strings will be added to the list of inputs to this target, and if 98 These strings will be added to the list of inputs to this target, and if
99 they are targets they will be added as dependancies. If you have a rule 99 they are targets they will be added as dependencies. If you have a rule
100 specified then the list of inputs will be used to generate implicit targets 100 specified then the list of inputs will be used to generate implicit targets
101 to satisfy dependancies. 101 to satisfy dependencies.
102 \item[requires] \hfill \\ 102 \item[requires] \hfill \\
103 Requires works just like input, except that the items here will not be added 103 Requires works just like input, except that the items here will not be added
104 to the list of inputs. They will be added as dependancies to figure out 104 to the list of inputs. They will be added as dependencies to figure out
105 when this target needs to be rebuilt, but will not be listed as inputs. 105 when this target needs to be rebuilt, but will not be listed as inputs.
106 This is handy for things like libraries, datafiles, et cetera. 106 This is handy for things like libraries, data files, et cetera.
107 \item[rule] \hfill \\ 107 \item[rule] \hfill \\
108 You can optionally specify a single rule name by string. This rule will be 108 You can optionally specify a single rule name by string. This rule will be
109 applied to this target before processing and used to provide the display, 109 applied to this target before processing and used to provide the display,
@@ -148,8 +148,8 @@ commands.
148 148
149There is an extra property that can be set in any profile, and that's condition. 149There is an extra property that can be set in any profile, and that's condition.
150Specifying a condition will allow you to change how build decides when it's 150Specifying a condition will allow you to change how build decides when it's
151appropriate to process that target in that profile. There are four builtin 151appropriate to process that target in that profile. There are four built-in
152conditions: always, never, filetime, and fileexists. In the future it may also 152conditions: always, never, fileTime, and fileExists. In the future it may also
153be possible to use a user-defined function as a condition. 153be possible to use a user-defined function as a condition.
154 154
155 155