aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2012-11-09 16:33:06 +0000
committerMike Buland <eichlan@xagasoft.com>2012-11-09 16:33:06 +0000
commit279f79ffb79da7e0793b6b3d5707251e148264b8 (patch)
tree065d3dbd11de941db338913b1b14a0621b8aab08
parentbf0ca10aef46f7004a551a00a9849fa6231d3071 (diff)
downloadbuild-279f79ffb79da7e0793b6b3d5707251e148264b8.tar.gz
build-279f79ffb79da7e0793b6b3d5707251e148264b8.tar.bz2
build-279f79ffb79da7e0793b6b3d5707251e148264b8.tar.xz
build-279f79ffb79da7e0793b6b3d5707251e148264b8.zip
Ouch, I forgot to spellcheck. That's less embarassing now.
-rw-r--r--README.md10
-rw-r--r--docs/build-manual.tex28
2 files changed, 19 insertions, 19 deletions
diff --git a/README.md b/README.md
index 3b055fb..e361b68 100644
--- a/README.md
+++ b/README.md
@@ -6,18 +6,18 @@ automation process, but is intended primarily for compiling source code.
6Features: 6Features:
7 7
8 * Does _NOT_ rely on make of any sort. 8 * Does _NOT_ rely on make of any sort.
9 * Can auto-generate targets based on builtin and user proided rules. 9 * Can auto-generate targets based on builtin and user provided rules.
10 * Contains it's own turing complete scripting language. 10 * Contains it's own Turing complete scripting language.
11 * Provides a variety of output modes to make errors easier to see. 11 * Provides a variety of output modes to make errors easier to see.
12 * Supports plugins. 12 * Supports plugins.
13 * Write much, much less and do more. 13 * Write much, much less and do more.
14 * Builtin understanding of dependancy tracking. 14 * Builtin understanding of dependency tracking.
15 15
16## Requirements 16## Requirements
17 17
18There are different requirements depending on how you got your source code and 18There are different requirements depending on how you got your source code and
19what you intend to do with it. If you just want to use build, then I recommend 19what you intend to do with it. If you just want to use build, then I recommend
20getting one of the release tarballs. They include most of the dependancies and 20getting one of the release tarballs. They include most of the dependencies and
21are the easiest to use. 21are the easiest to use.
22 22
23### Tarball Releases 23### Tarball Releases
@@ -89,4 +89,4 @@ This example is slightly more complex. It sets some flags that all targets will
89use, then creates two explicit targets. The second target, joved, also 89use, then creates two explicit targets. The second target, joved, also
90requires that libjove.a is up to date, but it is not treated as an input. This 90requires that libjove.a is up to date, but it is not treated as an input. This
91is enough to determine order of building, all source files, targets, and even 91is enough to determine order of building, all source files, targets, and even
92provides full dependancy tracking. 92provides full dependency tracking.
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