bake-toolkit 1.0.24 → 1.0.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9ca9ccfe3056eb950562ce0ff7dfa59989a4241f
4
+ data.tar.gz: 80a039718903f6c56726910850b754f56d03e0f8
5
+ SHA512:
6
+ metadata.gz: 62ba7c9c7a3c79c611d2005e5454fb2fb8fde97a556e0f4f068dc739551e594c4f08913ef0bf59d1f87da90801646147a65c43208970c1ba02e26ec5d81d9f21
7
+ data.tar.gz: ae15cc72a84f9e6283fe14652b150bc8f09031fbf4a71b75d5a0fd1b468007c8f7aa857773da2a822193ef8812fbfc470f5df5a10dcf353be3007dd959751c75
data/bin/bake-doc ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ link = File.expand_path(File.dirname(__FILE__)+"/../doc/index.html")
4
+ if RUBY_PLATFORM =~ /mswin|mingw|cygwin/
5
+ system "start #{link}"
6
+ elsif RUBY_PLATFORM =~ /darwin/
7
+ system "open #{link}"
8
+ elsif RUBY_PLATFORM =~ /linux|bsd/
9
+ system "xdg-open #{link}"
10
+ else
11
+ puts "Please open #{link} manually in your browser."
12
+ end
@@ -0,0 +1,78 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ <style type="text/css">
6
+ #rundrum {
7
+ border-width:1px;
8
+ border-style:dashed;
9
+ border-color:blue;
10
+ padding:0.2cm;
11
+ text-align:justify; }
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <h1>How to install bake command line tool</h1>
17
+
18
+ bake is a ruby gem. It runs with ruby 1.8.6 and above. However, it is <b>highly recommended</b>, that you use <b>ruby 1.9.x</b>, because of a <b>significant speed improvement</b>.
19
+ <p>
20
+ bake and its depedencies can be found on rubygems, which is configured as ruby source per default. Type "gem sources" if you wish to check that.<br>
21
+ Installing bake is very easy:
22
+ <pre id="rundrum"><code>gem install bake-toolkit</code></pre>
23
+ <p>
24
+
25
+ This is how the installation could look like:
26
+
27
+
28
+ <pre id="rundrum"><code>>>> gem install bake-toolkit
29
+ Fetching: highline-1.6.15.gem (100%)
30
+ Fetching: colored-1.2.gem (100%)
31
+ Fetching: progressbar-0.11.0.gem (100%)
32
+ Fetching: cxxproject-0.5.59.gem (100%)
33
+ Fetching: rgen-0.6.0.gem (100%)
34
+ Fetching: rtext-0.2.0.gem (100%)
35
+ Fetching: bake-toolkit-1.0.2.gem (100%)
36
+ Successfully installed highline-1.6.15
37
+ Successfully installed colored-1.2
38
+ Successfully installed progressbar-0.11.0
39
+ Successfully installed cxxproject-0.5.59
40
+ Successfully installed rgen-0.6.0
41
+ Successfully installed rtext-0.2.0
42
+ Successfully installed bake-toolkit-1.0.2
43
+ 7 gems installed
44
+ Installing ri documentation for highline-1.6.15...
45
+ Installing ri documentation for colored-1.2...
46
+ Installing ri documentation for progressbar-0.11.0...
47
+ Installing ri documentation for cxxproject-0.5.59...
48
+ Installing ri documentation for rgen-0.6.0...
49
+ Installing ri documentation for rtext-0.2.0...
50
+ Installing ri documentation for bake-toolkit-1.0.2...
51
+ Installing RDoc documentation for highline-1.6.15...
52
+ Installing RDoc documentation for colored-1.2...
53
+ Installing RDoc documentation for progressbar-0.11.0...
54
+ Installing RDoc documentation for cxxproject-0.5.59...
55
+ Installing RDoc documentation for rgen-0.6.0...
56
+ Installing RDoc documentation for rtext-0.2.0...
57
+ Installing RDoc documentation for bake-toolkit-1.0.2...</code></pre>
58
+
59
+ <h2>Problems</h2>
60
+ <ul>
61
+ <li>If the installation does not start, it might be a problem of a password protected internet proxy. Unlock the proxy by opening an external webpage e.g. google.
62
+
63
+ <li>Note, that the error parsers in bake assume English language. It depends on the system and compiler how to switch the language. One possibility is to set the environment variable LC_ALL:
64
+
65
+ <pre id="rundrum"><code>LC_ALL=en_US</code></pre>
66
+
67
+ <li>Don't worry if you get an error like this:
68
+
69
+ <pre id="rundrum"><code>ERROR: While generating documentation for ...
70
+ ... MESSAGE: Error while evaluating ...
71
+ undefined method `gsub' for nil:NilClass ...</code></pre>
72
+ It's a ruby bug. However, the gems were installed correctly. You can avoid building the documentation by installing bake like this:
73
+
74
+ <pre id="rundrum"><code> gem install bake-toolkit --no-rdoc --no-ri</code></pre>
75
+ </ul>
76
+ </body>
77
+
78
+ </html>
data/doc/cmd/mount.png ADDED
Binary file
data/doc/cmd/ruby.png ADDED
Binary file
data/doc/cmd/tty.png ADDED
Binary file
@@ -0,0 +1,56 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ <style type="text/css">
6
+ #rundrum {
7
+ border-width:1px;
8
+ border-style:dashed;
9
+ border-color:blue;
10
+ padding:0.2cm;
11
+ text-align:justify; }
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <h1>How to use bake on command line</h1>
17
+ Call <b>bake -h</b> to display the command line options.
18
+ <p>
19
+ The most important options are:
20
+ <ul>
21
+ <li><b>-b</b> the build configuration name
22
+ <li><b>-m</b> the main project directory (default is current directory)
23
+ <li><b>-p</b> the project to build (if not specified, the main project will be built with all dependencies)
24
+ </ul>
25
+
26
+ <h2>Examples</h2>
27
+
28
+ If you want to build your application, switch to the directory of the main project and call (assuming "Debug" is a valid build setup name):
29
+
30
+ <pre id="rundrum"><code>bake -b Debug</code></pre>
31
+
32
+ If you are not in the directory of the main project you want to build:
33
+
34
+ <pre id="rundrum"><code>bake -b Debug -m w:/root/mainProj</code></pre>
35
+
36
+ Code has been checked out into two roots, the console supports ansi colors, you want to stop on first error and build only the project bspAbc:
37
+
38
+ <pre id="rundrum"><code>bake -b Debug -m w:/root1/myProj -w w:/root1 -w w:/root2 -r -a black -p bspAbc</code></pre>
39
+
40
+ To clean the project(s), just add "-c".
41
+
42
+ <h2>roots.bake</h2>
43
+
44
+ Workspace roots can be defined in a file called "roots.bake", which will be searched from main project directory to root folder. Example:
45
+
46
+ <pre id="rundrum"><code>../..
47
+ C:/another/root
48
+ something/else</code></pre>
49
+
50
+ If -w and roots.bake are not specified, the default workspace root is the parent directory of the main project.
51
+
52
+
53
+
54
+ </body>
55
+
56
+ </html>
@@ -0,0 +1,49 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ <style type="text/css">
6
+ #rundrum {
7
+ border-width:1px;
8
+ border-style:dashed;
9
+ border-color:blue;
10
+ padding:0.2cm;
11
+ text-align:justify; }
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <h1>How to use bake in Cygwin</h1>
17
+
18
+ Why using Cygwin on Windows instead of the built-in command shell? There is one major reason: Cygwin supports <b>colored output</b> via ansi escape sequences.
19
+ <br>
20
+ Note, that these steps differ depending on the Cygwin version, installed packages and configuration.
21
+
22
+ <h2>Get rid of the cygdrive prefix</h2>
23
+ <img src="mount.png"/><br>
24
+ As you see, "c:" is now "/c" and not "/cygdrive/c" anymore.
25
+ <br>
26
+ <b>In newer Cygwin versions, this is not permanent.</b> To make it permanent, add the following line to <b>/etc/fstab</b> (can be found in your Cygwin installation directory):
27
+
28
+ <pre id="rundrum"><code>none / cygdrive binary,posix=0,user 0 0</code></pre>
29
+
30
+ <h2>Get rid of the Cygwin ruby</h2>
31
+ <img src="ruby.png"/><br>
32
+ Easiest way is to rename the Cygwin ruby, which makes the original ruby visible. This is only necessary if you have ruby installed in our Cygwin environment.
33
+
34
+ <h2>Add tty to CYGWIN option</h2>
35
+ <img src="tty.png"/><br>
36
+ "tty" must be added to the CYGWIN system variable.
37
+
38
+ <h2>Start the build</h2>
39
+
40
+ Use the parameter "-a black" or "-a white" depending on the background color of your shell.
41
+ <p>
42
+ Depending on your Cygwin installation, you have to call "bake.bat" instead of "bake". To avoid this, create an alias, e.g:
43
+
44
+ <pre id="rundrum"><code>alias bake=/c/Programme/_dev/Ruby192/bin/bake.bat</code></pre>
45
+
46
+
47
+ </body>
48
+
49
+ </html>
@@ -0,0 +1,42 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ </head>
6
+ <body>
7
+ <h1>The build hierarchy</h1>
8
+
9
+ <h2>Build graph</h2>
10
+
11
+ Depending on the contents of the Project.meta files, a build graph will be generated.
12
+ <ul>
13
+ <li>An ExecutableConfig usally specifies files to compile, dependencies to other projects and linker stuff.
14
+ <li>A LibraryConfig usally specifies files to compile and archive.
15
+ <li>A CustomConfig usually defines a custom step.
16
+ </ul>
17
+ Every config type can be equipped with pre and post steps like shell commands or makefiles.
18
+
19
+ All these steps will be combined to a build graph.
20
+
21
+ <h2>Example</h2>
22
+
23
+ The main project has dependencies to the projects A, B and C:<br>
24
+ <img src="hier.png"/>
25
+ <br>
26
+ Steps are executed bottom-up. If one step fails, all steps above won't be executed.
27
+ <p>
28
+ If e.g.
29
+ <ul>
30
+ <li>PreStepMain 2 fails
31
+ <li>at least one file of library B does not compile
32
+ </ul>
33
+ then
34
+ <ul>
35
+ <li>library B will not be created
36
+ <li>files of the main project will not be compiled
37
+ <li>main project will not be linked
38
+ <li>post step of main project will not be executed
39
+ </ul>
40
+ </body>
41
+
42
+ </html>
@@ -0,0 +1,102 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ <style type="text/css">
6
+ #rundrum {
7
+ border-width:1px;
8
+ border-style:dashed;
9
+ border-color:blue;
10
+ padding:0.2cm;
11
+ text-align:justify; }
12
+ }
13
+ </style>
14
+ </head>
15
+ <body>
16
+ <h1>The configuration file Project.meta</h1>
17
+ <ul>
18
+ <li>Every project has a Project.meta file in the project root directory.
19
+ <li>A Project.meta file contains one or more build configurations.
20
+ <li>A build configuration consists of toolchain settings, files to build, custom steps, etc.
21
+ </ul>
22
+ <h2>Example</h2>
23
+
24
+ <table border="1">
25
+ <tr>
26
+ <th bgcolor="#CCCCCC">Project.meta of Main</th>
27
+ <th bgcolor="#CCCCCC">Project.meta of Sub</th>
28
+ </tr>
29
+ <tr>
30
+ <td><pre><code>Project {
31
+ ExecutableConfig Debug {
32
+ Dependency Sub, config: Debug
33
+ Files "**/*.cpp"
34
+ IncludeDir "include"
35
+ DefaultToolchain GCC {
36
+ Compiler CPP {
37
+ Flags "-Wall"
38
+ }
39
+ }
40
+ PostSteps {
41
+ CommandLine "echo $(ArtifactName) built."
42
+ }
43
+ }
44
+ }</code></pre></td>
45
+ <td><pre><code>Project {
46
+ LibraryConfig Debug {
47
+ Files "**/*.cpp"
48
+ IncludeDir "include"
49
+ IncludeDir "Main/include"
50
+ ExternalLibrarySearchPath "lib"
51
+ ExternalLibrary "a"
52
+ ExternalLibrary "b"
53
+ Toolchain {
54
+ Compiler CPP {
55
+ Flags add: "-g3"
56
+ }
57
+ }
58
+ }
59
+ }</code></pre></td>
60
+ </tr>
61
+ </table>
62
+ <br>
63
+ Let's assume that Main and Sub are located in the same workspace root. To build the executable, bake can be called from the Main directory:
64
+
65
+ <pre id="rundrum"><code>bake -b Debug</code></pre>
66
+
67
+ What happens now?
68
+
69
+ <ol>
70
+ <li>Reading Project.meta of Main
71
+ <li>Reading Project.meta of dependencies (Sub)
72
+ <li>Compiling sources of Sub, e.g.:
73
+
74
+ <pre id="rundrum"><code>g++ -c -Wall -g3 -Iinclude -I../Main/include -o Debug_Main/src/xy.o src/xy.cpp</code></pre>
75
+ <ul>
76
+ <li>-Wall is taken from the DefaultToolchain and -g3 is added by the toolchain of the Sub project.
77
+ <li>The include path to Main is automatically adjusted.
78
+ <li>The order of includes is the same as in Project.meta.
79
+ <li>g++, -c and -I are used, because GCC was specified in the DefaultToolchain.
80
+ </ul>
81
+
82
+ <li>Archiving the library, e.g.:
83
+
84
+ <pre id="rundrum"><code>ar -rc Debug_Main/libSub.a Debug_Main/src/xy.o</code></pre>
85
+
86
+ <li>Compiling sources of Main, e.g.:
87
+
88
+ <pre id="rundrum"><code>g++ -c -Wall -Iinclude -o Debug/src/main.o src/main.cpp</code></pre>
89
+
90
+ <li>Linking executable, e.g.:
91
+
92
+ <pre id="rundrum"><code>g++ -o Debug/Main.exe Debug/src/main.o ../Sub/Debug_Main/libSub.a -L../Sub/lib -la -lb</code></pre>
93
+
94
+ The library search paths and libraries are added in the specified order.
95
+ <li>Executing the post step
96
+
97
+ <pre id="rundrum"><code>echo Main.exe built.</code></pre>
98
+ The variable was automatically substituted.
99
+
100
+ </body>
101
+
102
+ </html>
Binary file
@@ -0,0 +1,87 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+ <html>
3
+ <head>
4
+ <title>Documentation of the bake-tookit</title>
5
+ </head>
6
+ <body>
7
+ <h1>The main project</h1>
8
+ The concept of the main project is different to many other build systems like Eclipse CDT.<br>
9
+ In these build systems everything which is needed for a project is configured in the project itself.<br>
10
+ In bake the main project can predefine stuff for all subprojects.
11
+ <p>
12
+ The main project can have a DefaultToolchain definition, which is valid for all projects and files referenced by the main project. Subprojects can overwrite or adjust these definitions.
13
+ <p>
14
+ Projects are always built in context of the main project.
15
+ <p>
16
+ To build a project, you have to specify
17
+ <ul>
18
+ <li>the main project
19
+ <li>the config of the main project which references the project to build
20
+ <li>the (sub)project to build if applicable
21
+ </ul>
22
+ <h2>Advantages</h2>
23
+ <ul>
24
+ <li>Reducing the number of build configurations (toolchain settings like debug or release flags can be set outside of the project)
25
+ <li>Most projects do not have any compiler definitions anymore
26
+ <li>Only flags which must be used or flags which must not be used have to be specified in the projects
27
+ <li>Changing compiler definitions for all projects can be done easily in the main project build configuration
28
+ </ul>
29
+ <h2>Example</h2>
30
+ <table border="1">
31
+ <tr>
32
+ <th bgcolor="#CCCCCC">Project.meta of Main (Debug and Release) </th>
33
+ <th bgcolor="#CCCCCC">Project.meta of Sub (only one build config!) </th>
34
+ </tr>
35
+ <tr>
36
+ <td><pre><code>Project {
37
+
38
+ ExecutableConfig Debug {
39
+ Dependency Sub, config: Lib
40
+ Files "**/*.cpp"
41
+ IncludeDir "include"
42
+ DefaultToolchain GCC {
43
+ Compiler CPP {
44
+ Flags "... whatever -debug_info"
45
+ Define "DEBUG"
46
+ }
47
+ }
48
+ }
49
+
50
+ ExecutableConfig Release {
51
+ Dependency Sub, config: Lib
52
+ Files "**/*.cpp"
53
+ IncludeDir "include"
54
+ DefaultToolchain GCC {
55
+ Compiler CPP {
56
+ Flags "... whatever -optimize"
57
+ Define "NDEBUG"
58
+ }
59
+ }
60
+ }
61
+
62
+ }</code></pre></td>
63
+ <td><pre><code>Project {
64
+
65
+ LibraryConfig Lib {
66
+ Files "**/*.cpp"
67
+ IncludeDir "include"
68
+ }
69
+
70
+ }</code></pre></td>
71
+ </tr>
72
+ </table>
73
+
74
+ A main project must have a DefaultToolchain - but it's allowed to leave that definition empty.
75
+
76
+ <h2>Output directory</h2>
77
+
78
+ A project in a specific build configuration can be build in different contexts. That's why the output directory of a project cannot be simply the build configuration name of the project to avoid inconsistencies.
79
+ Therefore the output directory names are:
80
+ <ul>
81
+ <li>Main project: $(MainConfigName) like in regular Eclipse CDT builds
82
+ <li>Subprojects: $(MainConfigName)_$(MainProjectName) instead of the config name of the subproject
83
+ </ul>
84
+
85
+ </body>
86
+
87
+ </html>