aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/build.15
-rw-r--r--docs/build.784
-rw-r--r--docs/buildm3notes.txt99
3 files changed, 188 insertions, 0 deletions
diff --git a/docs/build.1 b/docs/build.1
new file mode 100644
index 0000000..118c744
--- /dev/null
+++ b/docs/build.1
@@ -0,0 +1,5 @@
1.TH build 1 "October 30, 2009" "Xagasoft" "Geekgene"
2Build is awesome, try it out
3.P
4This is a new paragraph
5.SH SYNOPSIS
diff --git a/docs/build.7 b/docs/build.7
new file mode 100644
index 0000000..5d6ab34
--- /dev/null
+++ b/docs/build.7
@@ -0,0 +1,84 @@
1.TH build 1 "October 30, 2009" "Xagasoft" "Geekgene"
2.SH NAME
3.P
4build.conf configuration files.
5.SH SYNOPSIS
6.P
7These files describe how to build something, generally software from source
8code, but it can really be anything.
9.SH DESCRIPTION
10.P
11For now, I'm just going to list some things here, here are the functions
12available to you for general use at the moment:
13.TP
14.B
15dirs()
16Takes any number of string parameters, matches the file system based on glob
17patterns and returns all directories that match the given patterns.
18.TP
19.B
20files()
21Takes any number of string parameters, matches the file system based on glob
22patterns and returns all files that match the given patterns.
23.TP
24.B
25execute()
26Takes one string parameter, and executes it as a command using your shell.
27.TP
28.B
29exists()
30Checks to see if the given file/directory/etc exists on the file system, if it
31does, true is returned, otherwise, false.
32.TP
33.B
34matches()
35Checks the input of the function to see if it matches a given wildcard pattern,
36the pattern may include any number of * (meaning match any number of any
37character) or ? (meaning match one of any character) symbols. If the input is
38a string, then true or false is returned. If the input is a list, a filtered
39version of the list is returned, containing only the elements that matched the
40pattern.
41.TP
42.B
43replace()
44Takes two string parameters and replaces all occurances of the first with the
45second in the input string or list of strings.
46.TP
47.B
48targets()
49Returns a list of target outputs, this will return every output for any target
50that it finds seperately, so targets with multiple outputs will be in the list
51more than once. With no parametrs it returns a list of all explicitly defined
52targets, with a string parameter it returns all targets that have the given
53tag.
54.TP
55.B
56toString()
57Takes the input and converts it to a string, with no parameters it uses default
58formatting, this means that for lists it puts a space between each element.
59.TP
60.B
61unlink()
62Unlinks (deletes) the given file or files from the filesystem. It can take any
63number of string or string list parameters.
64.TP
65.B
66getMakeDeps()
67Returns a list of files ready for use in a requires statement from the stdout of the command provided in the only string parameter. The command should output the dependancies in makefile format.
68.TP
69.B
70fileName()
71Returns the file portion of the string provided as input. That is, it returns everything after the last '/' character. This may not always be a file, it could be a directory, or even just an arbitrary part of a string that may or may not have '/' in it. If the input ends with a slash this will return an empty string.
72.TP
73.B
74dirName()
75Returns the directory portion of the string provided as input. That is, it returns everything before the last '/' character. Read the caveat for fileName about what this really means. If the input ends with a slash this will return the entire string, except the trailing slash.
76.P
77Here, lets list functions we wish we had...
78.SH ENVIRONMENT
79.SH FILES
80.SH CONFORMING TO
81.SH NOTES
82.SH BUGS
83.SH EXAMPLE
84.SH SEE ALSO
diff --git a/docs/buildm3notes.txt b/docs/buildm3notes.txt
new file mode 100644
index 0000000..72e68e4
--- /dev/null
+++ b/docs/buildm3notes.txt
@@ -0,0 +1,99 @@
1Rules
2Targets
3 Profiles
4 Build
5 Clean
6 Install
7 Package
8 etc.
9 Dependancies
10 Force Ruleset / mode
11 Input
12 Produces / Output
13Actions (functions)
14 Execute
15 Delete
16 Download
17 GetDependencies
18 ExecuteTest
19 RunTarget
20
21Mode Variables - switch modes for a variety of things (debug/release, platforms)
22
23Includes (including default includes)
24
25Bash style variable replacements / execute / etc.
26
27Functions?
28 files() returns list (globbing)
29 querySystemParam()
30
31if blocks can be anywhere.
32
33semi-typed variables, default to string
34
35variables in a target: INPUT, OUTPUT (by default instead of target and match)
36
37---- ast processing order ----
381) import all environment variables
392) import all cached data
403) set all variables specified on the command line
414) root level "script"
424.1) execute root level items, for target, rule, and non-auto, non-global config
43 this means building the target, rule, and config tables.
44 for global config and auto-config, run them as we hit them.
455) execute specified target(s) with specified profile
46
47---- pseudo code -----
48
49set CXXFLAGS += "param"; // ensure there are spaces so it works for a command
50set CXXFLAGS << "param"; // append like you'd expect, no extra changes
51
52unset PREFIX; // may be handy to be able to unset things
53
54include "otherbuild.h"; // oh yeah includes
55
56notice "something good?"; // display a notice to the user, just info...
57warning "yeah yeah yeah..."; // display a warning message, but don't exit
58error "something or other"; // exit immediately with an error message
59
60target "libbu++.a"
61{
62 input files("src/*.cpp");
63 set CXXFLAGS="-ggdb";
64 condition file;
65 requires [];
66
67 hidden; // Hides this from the user, but still callable
68}
69
70target ["file a", files("src/*.cpp), files("src/*y")].replace("bob", "sam")...
71{
72 condition always;
73}
74
75auto config "X"
76{
77}
78
79config "EXTRA_DEBUG"
80{
81 display "Debugging/Extra debugging";
82 type int; (or string, or bool, or list, or version)
83 default 0;
84 allow ["0-5","6"];
85
86}
87
88rule "cpp"
89{
90 input glob("*.cpp"); // or just a string, pretend it's a glob
91 output "${INPUT}".replace(".cpp",".o");
92 requires getDeps("g++ ${CXXFLAGS} -M ${OUTPUT} ${INPUT}", "make");
93 profile "build"
94 {
95 fnc1() tag "c++";
96 fnc2();
97 }
98}
99