diff options
Diffstat (limited to '')
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | docs/build-manual.tex | 28 |
2 files changed, 19 insertions, 19 deletions
@@ -6,18 +6,18 @@ automation process, but is intended primarily for compiling source code. | |||
6 | Features: | 6 | Features: |
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 | ||
18 | There are different requirements depending on how you got your source code and | 18 | There are different requirements depending on how you got your source code and |
19 | what you intend to do with it. If you just want to use build, then I recommend | 19 | what you intend to do with it. If you just want to use build, then I recommend |
20 | getting one of the release tarballs. They include most of the dependancies and | 20 | getting one of the release tarballs. They include most of the dependencies and |
21 | are the easiest to use. | 21 | are 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 | |||
89 | use, then creates two explicit targets. The second target, joved, also | 89 | use, then creates two explicit targets. The second target, joved, also |
90 | requires that libjove.a is up to date, but it is not treated as an input. This | 90 | requires that libjove.a is up to date, but it is not treated as an input. This |
91 | is enough to determine order of building, all source files, targets, and even | 91 | is enough to determine order of building, all source files, targets, and even |
92 | provides full dependancy tracking. | 92 | provides 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 | |||
15 | configure/make or cmake/make systems that have become quite popular. | 15 | configure/make or cmake/make systems that have become quite popular. |
16 | 16 | ||
17 | By default Build will work much as one would expect for compiling software, it | 17 | By default Build will work much as one would expect for compiling software, it |
18 | uses file exisistance and timestamps to determine what to build, and every file | 18 | uses file existence and timestamps to determine what to build, and every file |
19 | has a list of dependant files and input files. | 19 | has a list of dependent files and input files. |
20 | 20 | ||
21 | However, this is only the default configuration, you can use anything as the | 21 | However, this is only the default configuration, you can use anything as the |
22 | condition for determining what to build or rebuild, and targets do not have to | 22 | condition for determining what to build or rebuild, and targets do not have to |
23 | be files. | 23 | be files. |
24 | 24 | ||
25 | Build boasts a sophisticated system for chaining rules together to take files | 25 | Build boasts a sophisticated system for chaining rules together to take files |
26 | through as many steps as necesarry to get them in the desirable foramt for input | 26 | through as many steps as necessary to get them in the desirable format for input |
27 | to the final step. This may sound a little vague and confusing, but what it | 27 | to the final step. This may sound a little vague and confusing, but what it |
28 | means in the end is that you can list, say, a bison file as on input to an | 28 | means in the end is that you can list, say, a bison file as on input to an |
29 | executable target that requires object (.o) files. In this case build will | 29 | executable target that requires object (.o) files. In this case build will |
30 | automatically figure out that it can get a .c file from the .y input file, and | 30 | automatically figure out that it can get a .c file from the .y input file, and |
31 | a .o file from the .c file. It will autogenerate these targets for you and | 31 | a .o file from the .c file. It will auto generate these targets for you and |
32 | save a lot of time and effort on your part. | 32 | save 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} |
35 | Build files contain build script along with four major types of declerations. | 35 | Build files contain build script along with four major types of declarations. |
36 | These are the major types that can be decared: | 36 | These 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 | ||
71 | This example doesn't set any special compliation or linking flags, but it is a | 71 | This example doesn't set any special compilation or linking flags, but it is a |
72 | complete and valid build file. It will find all cpp files in src, generate an | 72 | complete and valid build file. It will find all cpp files in src, generate an |
73 | implicit target for each file to compile it into an object (.o) file, and then | 73 | implicit target for each file to compile it into an object (.o) file, and then |
74 | use those files as the input to the myprogram target in the end. | 74 | use 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 | ||
149 | There is an extra property that can be set in any profile, and that's condition. | 149 | There is an extra property that can be set in any profile, and that's condition. |
150 | Specifying a condition will allow you to change how build decides when it's | 150 | Specifying a condition will allow you to change how build decides when it's |
151 | appropriate to process that target in that profile. There are four builtin | 151 | appropriate to process that target in that profile. There are four built-in |
152 | conditions: always, never, filetime, and fileexists. In the future it may also | 152 | conditions: always, never, fileTime, and fileExists. In the future it may also |
153 | be possible to use a user-defined function as a condition. | 153 | be possible to use a user-defined function as a condition. |
154 | 154 | ||
155 | 155 | ||