bake-toolkit 1.0.24 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,18 @@
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>Known Issues</h1>
8
+
9
+ <ul>
10
+ <li><b>Issue</b>: If an archive or executable has been built successfully and one source file will be deleted without changing anything else, bake will leave the archive/executable unchanged when rebuilding.<br>
11
+ <b>Workaround 1</b>: Clean the project.<br>
12
+ <b>Workaround 2</b>: Delete the archive/executable manually.<br>
13
+ <b>Workaround 3</b>: Touch, edit, create another source file.<br>
14
+ </ul>
15
+
16
+ </body>
17
+
18
+ </html>
@@ -0,0 +1,54 @@
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>Performance Analysis</h1>
8
+
9
+ <h2>Eclipse vs. bake</h2>
10
+
11
+ Test system: Intel Xeon W3520 (4x 2.67 GHz), 4GB Ram, Windows XP, HDD Raid<br>
12
+ Real test application with ~ 200 projects<br>
13
+ <b>ruby 1.9.2</b><p>
14
+
15
+ <table border="1">
16
+ <tr><th bgcolor="#CCCCCC"></th><th bgcolor="#CCCCCC">Eclipse 3.6.1, CDT 6</th><th bgcolor="#CCCCCC">bake</th></tr>
17
+ <tr><td>Build whole workspace</td><td bgcolor="#FFCCCC">13:01 min</td><td bgcolor="#CCFFCC">7:19 min</td></tr>
18
+ <tr><td>Build again without clean</td><td bgcolor="#FFCCCC">3:05 min</td><td bgcolor="#CCFFCC">0:50 min</td></tr>
19
+ <tr><td>Clean whole workspace</td><td bgcolor="#FFCCCC">0:41 min</td><td bgcolor="#CCFFCC">0:08 min</td></tr>
20
+ <tr><td>Clean the cleaned workspace again</td><td bgcolor="#FFCCCC">0:35 min</td><td bgcolor="#CCFFCC">0:02 min</td></tr>
21
+ <tr><td>Memory consumption of build environment<br>(exclusive compiler, etc.)</td><td bgcolor="#FFCCCC">Eclipse needs additional<br>300MB, stays in memory</td><td bgcolor="#CCFFCC">35MB peak,freed after build<br></td></tr>
22
+ </table>
23
+
24
+
25
+
26
+ <h2>ruby vs. ruby</h2>
27
+
28
+ Test system: Intel Xeon W3520 (4x 2.67 GHz), 4GB Ram, Windows XP, HDD Raid<br>
29
+ Real test application with ~ 200 projects<br>
30
+ Results averaged out of 30 runs<p>
31
+
32
+ <table border="1">
33
+ <tr><th bgcolor="#CCCCCC"></th><th bgcolor="#CCCCCC">ruby 1.8.6p398</th><th bgcolor="#CCCCCC">ruby 1.8.7p352</th><th bgcolor="#CCCCCC">ruby 1.9.2p180</th><th bgcolor="#CCCCCC">ruby 1.9.3p0</th></tr>
34
+ <tr><td>Build whole workspace</td><td bgcolor="#FFCCCC">13:58 min</td><td bgcolor="#FFFFCC">8:07 min</td><td bgcolor="#CCFFCC">7:19 min</td><td bgcolor="#CCFFCC">7:28 min</td></tr>
35
+ <tr><td>Build single file</td><td bgcolor="#CCFFCC">1,20 sec</td><td bgcolor="#FFFFCC">1,87 sec</td><td bgcolor="#FFCCCC">2,38 sec</td><td bgcolor="#CCFFCC">1,29 sec</td></tr>
36
+ </table>
37
+ <br>
38
+ ruby 1.8.6 uses only ONE native thread for multiple ruby threads.<br>
39
+ ruby 1.9.2 for Windows needs very long to startup for complex applications, which is fixed in 1.9.3
40
+
41
+ <h2>CMake with Unix makefiles vs. bake</h2>
42
+
43
+ Test system: Intel Xeon W3520 (4x 2.67 GHz), 4GB Ram, Windows XP, HDD Raid<br>
44
+ Real test application with ~ 100 projects<p>
45
+
46
+ <li> Build whole workspace: bake is ~10% faster
47
+ <li> Build again without clean: bake is ~50% faster
48
+ <li> Clean whole workspace: bake is ~80% faster
49
+ <p>
50
+ More details will follow.
51
+
52
+ </body>
53
+
54
+ </html>
@@ -0,0 +1,39 @@
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>Wishes and planned features</h1>
8
+
9
+ Features listed on this page are open for discussion.
10
+ <ul>
11
+ <li>Project configurations are placed in Project.meta. If more than one meta file would be supported, different applications may edit different meta files.
12
+ <ul>
13
+ <li>Applications can change e.g. compiler flags without breaking another application.
14
+ <li>However, if e.g. a new include path is needed, all meta-files have to be adapted.
15
+ </ul>
16
+ <li>Another way to define IncludeDirs, etc. which avoids repeating the work IncludeDir for every include dir (rtext change?)
17
+ <li>meta files: "{" not only at the end of a line, should be possible to place anywhere
18
+ <li>New lines in problems view are shown as a square sign. These signs should be somehow removed without breaking the annotations in the source files.
19
+ <li>Maybe a project property page can be introduced as Project.meta-Viewer/Editor - this could be a feature for a later version.
20
+ <li>Global bake config (e.g. for -v or -a black)
21
+ <li>Support toolchain settings for files with wildcards. Clarify how to proceed with ambiguous declarations.
22
+ <li>Word wrap in colored console in Eclipse (seems a bit tricky)
23
+ <li>Build order of files currently the same as in Eclipse makefiles. Should that be changed to reflect order of "Files" tags in Project.meta?
24
+ <li>bakery shall call bake with relative pathnames, which results in nicer outputs in nightly builds
25
+ <li>Introduce background ruby process for Eclipse to workaround the require bug in ruby 1.9.x for Windows.<br>
26
+ Reason: require statements take round about two seconds before the build can be started. Two seconds is very much when building a single file.
27
+ <li>Exporter: add some more logic for exclude build directories to reduce useless definitions in Project.meta files
28
+ <li>Additional redirect from errors and warnings in a log file.
29
+ <li>Variables in main Project.meta which are usable in subprojects.
30
+ <li>Conditional variables like ifeq ($(VIDEO_MODE_12BIT_JPEG), 1)
31
+ <li>Better annotations undefined symbol errors (if e.g. filename is given in error message)
32
+ <li>Doxygen parameter to generate Doxygen, maybe with AutoOpen from Eclipse?
33
+ <li>Meta Config in Workspace root
34
+ <li>Even shorter command line options
35
+ </ul>
36
+
37
+ </body>
38
+
39
+ </html>
data/doc/index.html ADDED
@@ -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
+ </head>
6
+ <body>
7
+
8
+ <h1>bake</h1>
9
+
10
+ bake is used to build software <font color="#009900"><b>fast</b></font> and <font color="#009900"><b>easy</b></font>.
11
+
12
+ <h2>Key features</h2>
13
+ <img src="src/ok.png"/> faster than many other well known build systems<br>
14
+ <img src="src/ok.png"/> can be run on command line with colored output<br>
15
+ <img src="src/ok.png"/> Eclipse and Visual Studio integration plugins provided<br>
16
+ <img src="src/ok.png"/> configuration files easy to understand and maintain<br>
17
+
18
+ <h2>Guidelines</h2>
19
+
20
+ <h3>Concepts</h3>
21
+ <ul>
22
+ <li><a href="concepts/configfile.html">The configuration file Project.meta</a>
23
+ <li><a href="concepts/mainproject.html">The main project</a>
24
+ <li><a href="concepts/buildhierarchy.html">The build hierarchy</a>
25
+ </ul>
26
+
27
+ <h3>Command Line</h3>
28
+ <ul>
29
+ <li><a href="cmd/install.html">How to install bake command line tool</a>
30
+ <li><a href="cmd/usecmd.html">How to use bake on command line</a>
31
+ <li><a href="cmd/usecygwin.html">How to use bake in Cygwin</a>
32
+ </ul>
33
+
34
+ <h3>Eclipse</h3>
35
+ <ul>
36
+ <li><a href="eclipse/install.html">How to install bake Eclipse integration</a>
37
+ <li><a href="eclipse/use.html">How to use bake in Eclipse</a>
38
+ <li><a href="eclipse/export.html">How to convert existing CDT workspaces</a>
39
+ <li><a href="eclipse/import.html">How to create a workspace in Eclipse</a>
40
+ <li><a href="eclipse/new.html">How to create a new project in Eclipse</a>
41
+ </ul>
42
+
43
+ <h3>Visual Studio</h3>
44
+ <ul>
45
+ <li><a href="vs/install.html">How to install bake Visual Studio integration</a>
46
+ <li><a href="vs/use.html">How to use bake in Visual Studio</a>
47
+ <li><a href="vs/create.html">How to create a solution / projects in Visual Studio</a>
48
+ </ul>
49
+
50
+ <h3>Syntax</h3>
51
+ <ul>
52
+ <li><a href="syntax/syntax.html">Syntax of Project.meta</a>
53
+ <li><a href="syntax/subst.html">Variable substitution in Project.meta</a>
54
+ <li><a href="syntax/derive.html">Derive configs</a>
55
+ </ul>
56
+
57
+ <h3>Did you know?</h3>
58
+ <ul>
59
+ <li><a href="dyk/tipps.html">Tipps and Tricks</a>
60
+ </ul>
61
+
62
+ <h3>Further readings</h3>
63
+ <ul>
64
+ <li><a href="further/collections.html">Build Collections</a>
65
+ <li><a href="further/perf.html">Performance Analysis</a>
66
+ <li><a href="further/change.html">Changelog</a>
67
+ <li><a href="further/wish.html">Wishlist</a>
68
+ <li><a href="further/issues.html">Known Issues</a>
69
+ <li><a href="further/internal.html">Internal developing notes</a>
70
+ </ul>
71
+
72
+ <p>
73
+ <hr>
74
+ <table width="100%" border="0"><tr><td align="left">Described bake-toolkit version: 1.0.25</td><td align="right">January 21, 2014</td></tr></table>
75
+
76
+ </body>
77
+
78
+ </html>
data/doc/src/ok.png ADDED
Binary file
@@ -0,0 +1,89 @@
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>Derive configs</h1>
17
+
18
+ A config can be derived from another config in Project.meta like this:
19
+ <pre id="rundrum"><code>ExecutableConfig A<br>LibraryConfig B, extends: A<br>CustomConfig C, extends: B<br>ExecutableConfig D, extends: C</code></pre>
20
+
21
+ The config type of the parent config does not matter, but only settings which are valid in BOTH configs will be inherited.<br>
22
+ In the example above D gets the dependencies from A, because "Dependency" is valid in all configs, but D does not get the "Files" from A, because "Files" is not valid in CustomConfig.
23
+ <p>
24
+ The following listing shows HOW settings will be derived:
25
+
26
+ <table border="1">
27
+ <tr><th bgcolor="#CCCCCC">Setting</th><th bgcolor="#CCCCCC">Derived</th></tr>
28
+ <tr><td>Dependency</td> <td>parent + child</td></tr>
29
+ <tr><td>ExternalLibrary<br>ExternalLibrarySearchPath<br>UserLibrary</td> <td>parent + child (ordered by line number!)</td></tr>
30
+ <tr><td>PreSteps</td> <td>parent + child</td></tr>
31
+ <tr><td>PostSteps</td> <td>parent + child</td></tr>
32
+ <tr><td>Toolchain<br>DefaultToolchain</td> <td>Compiler, Archiver and Linker settings used from parent<br>if not existing in child - see below</td></tr>
33
+ <tr><td>Makefile/CommandLine<br>(in CustomConfig)</td> <td>used from parent if not in child</td></tr>
34
+ <tr><td>Files</td> <td>parent + child</td></tr>
35
+ <tr><td>ExcludeFiles</td> <td>parent + child</td></tr>
36
+ <tr><td>IncludeDir</td> <td>parent + child</td></tr>
37
+ <tr><td>LinkerScript</td> <td>used from parent if not in child</td></tr>
38
+ <tr><td>ArtifactName</td> <td>used from parent if not in child</td></tr>
39
+ <tr><td>MapFile</td> <td>used from parent if not in child</td></tr>
40
+ </table>
41
+ <br>
42
+ Example for deriving toolchains:
43
+
44
+ <pre id="rundrum"><code>ExecutableConfig A {
45
+ Toolchain {
46
+ Compiler CPP {
47
+ Define "DefA"
48
+ }
49
+ Linker {
50
+ Flags "-O3"
51
+ }
52
+ }
53
+ }
54
+
55
+ ExecutableConfig B, extends: A {
56
+ Toolchain {
57
+ Compiler CPP {
58
+ Define "DefB1"
59
+ }
60
+ Compiler ASM {
61
+ Define "DefB2"
62
+ }
63
+ Archiver {
64
+ Flags "-B"
65
+ }
66
+ }
67
+ }</code></pre>
68
+
69
+ B derives from A, but B redefines Compiler CPP, therefore "DefA" will not be defined in B. But the toolchain of B does not include a Linker tag, therefore the Linker will be inherited.<br>
70
+ The toolchain of B is treated like this:
71
+
72
+ <pre id="rundrum"><code>Toolchain {
73
+ Compiler CPP {
74
+ Define "DefB1"
75
+ }
76
+ Compiler ASM {
77
+ Define "DefB2"
78
+ }
79
+ Archiver {
80
+ Flags "-B"
81
+ }
82
+ Linker {
83
+ Flags "-O3"
84
+ }
85
+ }</code></pre>
86
+
87
+ </body>
88
+
89
+ </html>
@@ -0,0 +1,103 @@
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>Variable substitution in Project.meta</h1>
17
+
18
+ <h3>Substituted variables</h3>
19
+
20
+ <table border="1">
21
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">Example</th></tr>
22
+ <tr><td>$(MainConfigName)</td> <td>Debug</td></tr>
23
+ <tr><td>$(MainProjectName)</td> <td>bootloader</td></tr>
24
+ <tr><td>$(ConfigName)</td> <td>lib</td></tr>
25
+ <tr><td>$(ProjectName)</td> <td>canDriver</td></tr>
26
+ <tr><td>$(OutputDir)</td> <td>Debug_bootloader</td></tr>
27
+ <tr><td>$(ArtifactName)</td> <td>bootloader_1.0.elf</td></tr>
28
+ <tr><td>$(ArtifactNameBase)</td> <td>bootloader_1.0</td></tr>
29
+ <tr><td>$(Time)</td> <td>2012-12-24 20:00:00 +0200</td></tr>
30
+ <tr><td>$(Hostname)</td> <td>MY_COMPUTER</td></tr>
31
+ </table>
32
+ <br>
33
+ <table border="1">
34
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">Windows</th><th bgcolor="#CCCCCC">Other</th></tr>
35
+ <tr><td>$(/)</td> <td>\</td><td>/</td></tr>
36
+ </table>
37
+ <p>
38
+ Otherwise:
39
+ <p>
40
+ <table border="1">
41
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">Example</th></tr>
42
+ <tr><td>$(environment variable)</td> <td>whatever</td></tr>
43
+ </table>
44
+ <p>
45
+ An error will be generated if the environment variable does not exist, except
46
+ <p>
47
+ <table border="1">
48
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">Example</th></tr>
49
+ <tr><td>$(PATH_TO_CYGWIN)</td> <td>c:/tool/cygwin</td></tr>
50
+ </table>
51
+ <p>
52
+ will be substituted to an empty string if not set.
53
+
54
+ <h3>Equal variables</h3>
55
+
56
+ <h4>In main project</h4>
57
+ <table border="1">
58
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">is equal to</th></tr>
59
+ <tr><td>$(MainConfigName)</td> <td>$(ConfigName)</td></tr>
60
+ <tr><td>$(MainProjectName)</td> <td>$(ProjectName)</td></tr>
61
+ <tr><td>$(OutputDir)</td> <td>$(MainConfigName)</td></tr>
62
+ </table>
63
+
64
+ <h4>In subproject</h4>
65
+ <table border="1">
66
+ <tr><th bgcolor="#CCCCCC">Variable</th><th bgcolor="#CCCCCC">is equal to</th></tr>
67
+ <tr><td>$(OutputDir)</td> <td>$(MainConfigName)_$(MainProjectName)</td></tr>
68
+ </table>
69
+
70
+ <h3>Auto-adjustment of paths to existing projects</h3>
71
+
72
+ If paths to other projects are needed, e.g. to "bootloaderUpdater", don't write a hard coded relative path like this:<br>
73
+ <font color="red">CommandLine "../bootloaderUpdater/tools/PrimaryBootloader2Include.exe</font><br>
74
+ bootloaderUpdater might be checked out into a different workspace root. If you write<br>
75
+ <font color="green">CommandLine "bootloaderUpdater/tools/PrimaryBootloader2Include.exe</font><br>
76
+ bake recognizes that the first part of the path is a valid project name and calculates the relative path to the project automatically.<br>
77
+
78
+ <h4>Special case:</h4>
79
+ If you have a directory in the current project, which has the same name as a valid project and you need to reference the directory, write<br>
80
+ <font color="green">IncludeDir "myProjectName/bootloaderUpdater/whatever"</font><br>
81
+ which will then adjusted to<br>
82
+ <font color="green">-I"bootloaderUpdater/whatever"</font><br>
83
+ instead of<br>
84
+ <font color="red">-I"../bootloaderUpdater/whatever" (depending of the location of the project bootloaderUpdater).</font>
85
+
86
+ <h4>Supported elements for auto-adjustment:</h4>
87
+ <ul>
88
+ <li>IncludeDir
89
+ <li>ExternalLibrary
90
+ <li>ExternalLibrarySearchPath
91
+ <li>UserLibrary
92
+ <li>CommandLine
93
+ </ul>
94
+ <h3>Examples</h3>
95
+ <pre id="rundrum"><code>CommandLine "ddump -Ruv -y 0xFFFFF -o$(OutputDir)/$(ArtifactNameBase).bin $(OutputDir)/$(ArtifactName)"
96
+ ExternalLibrarySearchPath "$(PATH_TO_CYGWIN)/usr/local/lib"
97
+ IncludeDir "bspDma/include"</code></pre>
98
+
99
+
100
+
101
+ </body>
102
+
103
+ </html>
@@ -0,0 +1,587 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
2
+ "http://www.w3.org/TR/html4/strict.dtd">
3
+ <html>
4
+ <head></head>
5
+ <title>Documentation of the bake-tookit</title>
6
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
7
+
8
+ <body >
9
+
10
+ <h1>Syntax of Project.meta</h1>
11
+ <h2>Instructions for the Interactive Syntax Viewer</h2>
12
+ <ul>
13
+ <li>Move the mouse cursor over the blue elements to display more information.
14
+ <li>Three config types exist: ExecutableConfig, LibraryConfig and CustomConfig. Move the mouse cursor over these elements to display the supported content.
15
+ </ul>
16
+ <b>General Notes:</b>
17
+ <ul>
18
+ <li>Specify the paths always relative to the current project root, but keep the variable substitution in Project.meta in mind.
19
+ <li>Use double quotes (") if the strings have spaces or slashes.
20
+ <li>Use hash marks (#) for comments.
21
+ </ul>
22
+
23
+ <style type="text/css">
24
+
25
+ #dhtmltooltip{
26
+ position: absolute;
27
+ width: 150px;
28
+ border: 2px solid black;
29
+ padding: 2px;
30
+ background-color: lightyellow;
31
+ visibility: hidden;
32
+ z-index: 100;
33
+ }
34
+
35
+ </style>
36
+
37
+ <style type="text/css">
38
+ .hide {
39
+ display:none;
40
+ }
41
+ .show {
42
+ display:block
43
+ }
44
+ .showInline {
45
+ display:inline
46
+ }
47
+ .help {
48
+ color:blue
49
+ }
50
+ .showRadio {
51
+ font-weight:bold;color:blue;text-decoration:overline underline
52
+ }
53
+ .hideRadio {
54
+ color:#AAAAFF;
55
+ }
56
+ .mycomment {
57
+ color:green
58
+ }
59
+ </style>
60
+
61
+
62
+
63
+
64
+
65
+ <table border="1" style="font-family:monospace"; font-size:10><td>
66
+
67
+ <span class="help" onMouseover="showProject()" onMouseout="notip()">Project</span> {<br>
68
+ &nbsp; <br>
69
+
70
+ &nbsp; <span class="help" onMouseover="showResponsible()" onMouseout="notip()">Responsible</span> {<br>
71
+ &nbsp; &nbsp; <span class="help" onMouseover="showPerson()" onMouseout="notip()">Person</span> &#60;name&#62;,
72
+ <span class="help" onMouseover="showPersonEmail()" onMouseout="notip()">email</span>: &#60;adr&#62;<br>
73
+ &nbsp; }<br><br>
74
+
75
+ &nbsp; <span class="mycomment"># 0..n configs</span><br>
76
+ &nbsp; <span class="showRadio" onMouseover="showExecutableConfig()" onMouseout="notip()" id="executableConfig">ExecutableConfig</span> |
77
+ <span class="hideRadio" onMouseover="showLibraryConfig()" onMouseout="notip()" id="libraryConfig">LibraryConfig</span> |
78
+ <span class="hideRadio" onMouseover="showCustomConfig()" onMouseout="notip()" id="customConfig">CustomConfig</span> &#60;name&#62; <span class="help" onMouseover="showExtends()" onMouseout="notip()">extends</span>: &#60;parent&#62; {<br><br>
79
+
80
+ <span><span style="background-color:#EEEEEE;" class="show">
81
+ &nbsp; &nbsp; <span class="mycomment"># Valid for all config types</span><br><br>
82
+ &nbsp; &nbsp; <span class="help" onMouseover="showDependency()" onMouseout="notip()">Dependency</span> &#60;project&#62;,
83
+ <span class="help" onMouseover="showDependencyConfig()" onMouseout="notip()">config</span>: &#60;name&#62;<br>
84
+ &nbsp; &nbsp; <span class="help" onMouseover="showExternalLibrary()" onMouseout="notip()">ExternalLibrary</span> &#60;lib&#62;,
85
+ <span class="help" onMouseover="showExternalLibrarySearch()" onMouseout="notip()">search</span>: true|false<br>
86
+ &nbsp; &nbsp; <span class="help" onMouseover="showUserLibrary()" onMouseout="notip()">UserLibrary</span> &#60;lib&#62;<br>
87
+ &nbsp; &nbsp; <span class="help" onMouseover="showExternalLibrarySearchPath()" onMouseout="notip()">ExternalLibrarySearchPath</span> &#60;path&#62;<br>
88
+ &nbsp; &nbsp; <span class="help" onMouseover="showPreSteps()" onMouseout="notip()">PreSteps</span> {<br>
89
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showMakefile()" onMouseout="notip()">Makefile</span> &#60;file&#62;,
90
+ <span class="help" onMouseover="showMakefileLib()" onMouseout="notip()">lib</span>: &#60;lib&#62;,
91
+ <span class="help" onMouseover="showMakefileTarget()" onMouseout="notip()">target</span>: &#60;target&#62;,
92
+ <span class="help" onMouseover="showMakefilePathTo()" onMouseout="notip()">pathTo</span>: &#60;paths&#62;,
93
+ <span class="help" onMouseover="showStepDefault()" onMouseout="notip()">default</span>: on|off,
94
+ <span class="help" onMouseover="showStepFilter()" onMouseout="notip()">filter</span>: &#60;name&#62; {<br>
95
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showMakefileFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;<br>
96
+ &nbsp; &nbsp; &nbsp; }<br>
97
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showCommandLine()" onMouseout="notip()">CommandLine</span> &#60;line&#62;,
98
+ <span class="help" onMouseover="showStepDefault()" onMouseout="notip()">default</span>: on|off,
99
+ <span class="help" onMouseover="showStepFilter()" onMouseout="notip()">filter</span>: &#60;name&#62;<br>
100
+ &nbsp; &nbsp; }<br>
101
+ &nbsp; &nbsp; <span class="help" onMouseover="showPostSteps()" onMouseout="notip()">PostSteps</span> {<br>
102
+ &nbsp; &nbsp; &nbsp; <span class="mycomment"># Same as for PreSteps</span><br>
103
+ &nbsp; &nbsp; }<br>
104
+ &nbsp; &nbsp; <span class="help" onMouseover="showDefaultToolchain()" onMouseout="notip()">DefaultToolchain</span> &#60;basedOn&#62; {<br>
105
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultCompiler()" onMouseout="notip()">Compiler</span> ASM | CPP | C,
106
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
107
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;<br>
108
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultDefine()" onMouseout="notip()">Define</span> &#60;define&#62;<br>
109
+ &nbsp; &nbsp; &nbsp; }<br>
110
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultArchiver()" onMouseout="notip()">Archiver</span>
111
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
112
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;<br>
113
+ &nbsp; &nbsp; &nbsp; }<br>
114
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultLinker()" onMouseout="notip()">Linker</span>
115
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
116
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;<br>
117
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showLibPrefixFlags()" onMouseout="notip()">LibPrefixFlags</span> &#60;flags&#62;<br>
118
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showLibPostfixFlags()" onMouseout="notip()">LibPostfixFlags</span> &#60;flags&#62;<br>
119
+ &nbsp; &nbsp; &nbsp; }<br>
120
+ &nbsp; &nbsp; }<br></span><br></span>
121
+
122
+ <span id="libExe_part"><span class="show" style="background-color:#EEEEEE;">
123
+ &nbsp; &nbsp; <span class="mycomment"># Valid for ExecutableConfig and LibraryConfig</span><br><br>
124
+ &nbsp; &nbsp; <span class="help" onMouseover="showFiles()" onMouseout="notip()">Files</span> &#60;pattern&#62; {<br>
125
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showFilesFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62;<br>
126
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showFilesDefine()" onMouseout="notip()">Define</span> &#60;define&#62;<br>
127
+ &nbsp; &nbsp; }<br>
128
+ &nbsp; &nbsp; <span class="help" onMouseover="showExcludeFiles()" onMouseout="notip()">ExcludeFiles</span> &#60;pattern&#62;<br>
129
+ &nbsp; &nbsp; <span class="help" onMouseover="showIncludeDir()" onMouseout="notip()">IncludeDir</span> &#60;dir&#62;<br>
130
+ &nbsp; &nbsp; <span class="help" onMouseover="showToolchainProject()" onMouseout="notip()">Toolchain</span> {<br>
131
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showCompiler()" onMouseout="notip()">Compiler</span> ASM | CPP | C,
132
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
133
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62;<br>
134
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showDefine()" onMouseout="notip()">Define</span> &#60;define&#62;<br>
135
+ &nbsp; &nbsp; &nbsp; }<br>
136
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showArchiver()" onMouseout="notip()">Archiver</span>
137
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
138
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62;<br>
139
+ &nbsp; &nbsp; &nbsp; }<br>
140
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showLinker()" onMouseout="notip()">Linker</span>
141
+ <span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: &#60;cmd&#62; {</i><br>
142
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62<br>
143
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showLibPrefixFlags()" onMouseout="notip()">LibPrefixFlags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62<br>
144
+ &nbsp; &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showLibPostfixFlags()" onMouseout="notip()">LibPostfixFlags</span> &#60;flags&#62;, add: &#60;flags&#62;, remove: &#60;flags&#62<br>
145
+ &nbsp; &nbsp; &nbsp; }<br>
146
+ &nbsp; &nbsp; }<br></span><br></span>
147
+
148
+ <span id="exe_part"><span class="show" style="background-color:#EEEEEE;">
149
+ &nbsp; &nbsp; <span class="mycomment"># Valid for ExecutableConfig</span><br><br>
150
+ &nbsp; &nbsp; <span class="help" onMouseover="showLinkerScript()" onMouseout="notip()">LinkerScript</span> &#60;script&#62;<br>
151
+ &nbsp; &nbsp; <span class="help" onMouseover="showMapFile()" onMouseout="notip()">MapFile</span> &#60;name&#62;<br>
152
+ &nbsp; &nbsp; <span class="help" onMouseover="showArtifactName()" onMouseout="notip()">ArtifactName</span> &#60;name&#62;<br></span><br></span>
153
+
154
+ <span id="custom_part" class="hide"><span style="background-color:#EEEEEE;" class="show">
155
+ &nbsp; &nbsp; <span class="mycomment"># Valid for CustomConfig</span><br><br>
156
+ &nbsp; &nbsp; <span class="showRadio" id="makefile" onMouseover="showMakefileCustom()" onMouseout="notip()">Makefile</span> |
157
+ <span class="hideRadio" id="commandline" onMouseover="showCommandlineCustom()" onMouseout="notip()">CommandLine</span>
158
+ <span style="background-color:#DDDDDD;" id="makefile_part" class="showInline"> &#60;name&#62;,
159
+ <span class="help" onMouseover="showMakefileLib()" onMouseout="notip()">lib</span>: &#60;lib&#62;,
160
+ <span class="help" onMouseover="showMakefileTarget()" onMouseout="notip()">target</span>: &#60;target&#62;,
161
+ <span class="help" onMouseover="showMakefilePathTo()" onMouseout="notip()">pathTo</span>: &#60;paths&#62; {<br>
162
+ &nbsp; &nbsp; &nbsp; <span class="help" onMouseover="showMakefileFlags()" onMouseout="notip()">Flags</span> &#60;flags&#62;<br>
163
+ &nbsp; &nbsp; }<br>
164
+ </span>
165
+ <span style="background-color:#DDDDDD;" id="commandline_part" class="hide">&#60;line&#62;</span>
166
+ &nbsp; &nbsp; <br></span><br></span>
167
+ &nbsp; }<br>
168
+ }<br>
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+ <div id="dhtmltooltip"></div>
177
+
178
+ <script type="text/javascript">
179
+
180
+
181
+ function showProject() {
182
+ str = 'A bake project is very similiar to a project in Eclipse, Visual Studio, etc.<br>'+
183
+ 'The name of the project is the directory name of the Project.meta file.'
184
+ ddrivetip("Project", "Yes", "1", "-",str)
185
+ }
186
+
187
+ function showResponsible() {
188
+ str = "Specify all responsible persons of the project."
189
+ ddrivetip("Responsible", "Not yet, but in future,", "0..1", "-",str)
190
+ }
191
+
192
+ function showPerson() {
193
+ str = 'Person who is responsible for the project.'
194
+ ddrivetip("Person", "Not yet, but in future", "0..1", "-",str)
195
+ }
196
+
197
+ function showPersonEmail() {
198
+ str = 'Use always double quotes (") for the email address.'
199
+ ddrivetip("email", "Not yet, but in future", "-", "-",str)
200
+ }
201
+
202
+ function showExecutableConfig() {
203
+ document.getElementById('libExe_part').className="show"
204
+ document.getElementById('exe_part').className="show"
205
+ document.getElementById('custom_part').className="hide"
206
+ document.getElementById('executableConfig').className="showRadio"
207
+ document.getElementById('libraryConfig').className="hideRadio"
208
+ document.getElementById('customConfig').className="hideRadio"
209
+
210
+ str = 'This is the main config of an application. This is the only config type which has dependencies.'
211
+ ddrivetip("ExecutableConfig", "No","0..n","-",str)
212
+ }
213
+
214
+ function showLibraryConfig() {
215
+ document.getElementById('libExe_part').className="show"
216
+ document.getElementById('exe_part').className="hide"
217
+ document.getElementById('custom_part').className="hide"
218
+ document.getElementById('executableConfig').className="hideRadio"
219
+ document.getElementById('libraryConfig').className="showRadio"
220
+ document.getElementById('customConfig').className="hideRadio"
221
+
222
+ str = 'This config is used for a source library. The library will be linked automatically to the executable.'
223
+ ddrivetip("LibraryConfig", "No","0..n","-",str)
224
+ }
225
+
226
+ function showCustomConfig() {
227
+ document.getElementById('libExe_part').className="hide"
228
+ document.getElementById('exe_part').className="hide"
229
+ document.getElementById('custom_part').className="show"
230
+ document.getElementById('executableConfig').className="hideRadio"
231
+ document.getElementById('libraryConfig').className="hideRadio"
232
+ document.getElementById('customConfig').className="showRadio"
233
+
234
+ str = 'This config is used for special projects, e.g. for Makefile projects.<br>'+
235
+ 'It is valid to leave a CustomConfig completely empty - nothing will be done in that case.'
236
+ ddrivetip("CustomConfig", "No","0..n","-",str)
237
+ }
238
+
239
+ function showExternalLibrary() {
240
+ str = 'Every config can specify libs which have to be linked to the executable.<br>'+
241
+ 'It\'s possible to add a path, e.g.:<br>'+
242
+ '<i> &nbsp; &nbsp; ExternalLibrary "xy/z/ab"</i><br>'+
243
+ 'In this case the lib "ab" is added to the linker command line as well as the lib search path "xy/z".<br>'+
244
+ 'Note, that the linker will look for "libab.a".'
245
+ ddrivetip("ExternalLibrary", "No","0..n","-",str)
246
+ }
247
+
248
+ function showExternalLibrarySearch() {
249
+ str = 'If the attribute "search: false" is specified, the lib will not be searched but linked with the full name, e.g.<br>'+
250
+ '<i> &nbsp; &nbsp; ExternalLibrary "xy/z/libpq.a", search: false</i><br>'+
251
+ 'will link "xy/z/libpq.a" to the executable.<br>'+
252
+ 'It is also possible to specify an object file when using "search: false".'
253
+ ddrivetip("search", "No","-","true",str)
254
+ }
255
+
256
+ function showUserLibrary() {
257
+ str = 'A user library will be linked <i>before</i> any other libraries or objects to the executable.<br>'+
258
+ 'It is also possible to specify an object file.<br>'+
259
+ 'The library will be searched like an ExternalLibrary, but with the full name, e.g.<br>'+
260
+ '<i> &nbsp; &nbsp; UserLibrary "xy/z/libUser.a"</i><br>'+
261
+ '<i> &nbsp; &nbsp; UserLibrary "xy/z/something.o"</i><br>'+
262
+ 'will link "libUser.a" and "something.o" before regular objects and libraries.<br>'+
263
+ '"xy/z" will be added as an ExternalLibrarySearchPath.'
264
+ ddrivetip("UserLibrary", "No","0..n","-",str)
265
+ }
266
+
267
+ function showExternalLibrarySearchPath() {
268
+ str = 'The linker looks for libraries in search paths.<br>'+
269
+ 'Search paths can be defined implicitly by ExternalLibrary/UserLibrary or explicitly by this tag.'
270
+ ddrivetip("ExternalLibrarySearchPath", "No","0..n","-",str)
271
+ }
272
+
273
+ function showPreSteps() {
274
+ str = 'PreSteps are executed before compiling files of the project.<br>'+
275
+ 'The number of steps are not limited.<br>'+
276
+ 'If a step fails, all further steps of the project will be skipped.'
277
+ ddrivetip("PreSteps", "No","0..1","-",str)
278
+ }
279
+
280
+ function showPostSteps() {
281
+ str = 'PostSteps are executed after the main task of the project, e.g. linking an executable.<br>'+
282
+ 'The number of steps are not limited.<br>'+
283
+ 'If a step fails, all further steps of the project will be skipped.'
284
+ ddrivetip("PostSteps", "No","0..1","-",str)
285
+ }
286
+
287
+ function showStepDefault() {
288
+ str = 'Specifies if a step will be executed by default.<br>'+
289
+ 'Disabling a step by default is useful if the step shall not be executed every build, e.g. special steps for releasing a software or some kind of developer test steps.'
290
+ ddrivetip("default", "No","-","on",str)
291
+ }
292
+
293
+ function showStepFilter() {
294
+ str = 'A step can be switched on or off explicitly regardless of the "default" attribute with the command line options<br>'+
295
+ '<i> &nbsp; &nbsp; --include_filter &#60;filter name&#62;</i><br>'+
296
+ '<i> &nbsp; &nbsp; --exclude_filter &#60;filter name&#62;</i><br>'
297
+ ddrivetip("filter", "No","-","-",str)
298
+ }
299
+
300
+ function getMakefileDesc() {
301
+ return 'Makefile to be started, e.g.:<br>'+
302
+ '<i> &nbsp; &nbsp; Makefile "subDir/makefile"</i><br>'
303
+ }
304
+
305
+ function showMakefile() {
306
+ ddrivetip("Makefile", "No","0..n","-",getMakefileDesc())
307
+ }
308
+
309
+ function showMakefileLib() {
310
+ str = 'If the result of the makefile is a library which shall be linked to the executable, name it here.'
311
+ ddrivetip("lib", "No","-","-",str)
312
+ }
313
+
314
+ function showMakefileTarget() {
315
+ str = 'The target of the makefile.'
316
+ ddrivetip("target", "No","-","all",str)
317
+ }
318
+
319
+ function showMakefilePathTo() {
320
+ str = 'Comma separated list, e.g. "common, abc, xy".<br>'+
321
+ 'The makefile can use variables like $(PATH_TO_common). This is very useful if paths to other projects are needed in the makefile.<br>'+
322
+ 'Remember that more than one workspace root can exist and a hardcoded "../common" is not reliable in that case.<br>'+
323
+ '$(PATH_TO_common) will result in the path from the parent directory of the current project to the common project without the common directory itself. '+
324
+ 'So if the current project and the common project have the same parent folder, the string will be empty.<br>'+
325
+ 'Example:<br>'+
326
+ 'makefile: c:\\workspaceroot\\yourProject\\makefile<br>'+
327
+ 'usage in makefile: gcc -I$../../$(PATH_TO_common)common/include ...<br>'+
328
+ 'It\'s done like this due to compatibility reasons.'
329
+ ddrivetip("pathTo", "No","-","-",str)
330
+ }
331
+
332
+ function showMakefileFlags() {
333
+ ddrivetip("Flags", "No","0..n","-j","Additional makefile flags.")
334
+ }
335
+
336
+ function getCommandLineDesc() {
337
+ return 'A command to execute, e.g.:<br>'+
338
+ '<i> &nbsp; &nbsp; CommandLine "ddump -Ruv -y 0xFFFFF -oRelease/application.bin Release/application.elf"</i><br>'+
339
+ '<i> &nbsp; &nbsp; CommandLine "echo Hello world!"</i><br>'
340
+ }
341
+
342
+ function showCommandLine() {
343
+ ddrivetip("CommandLine", "No","0..n","-",getCommandLineDesc())
344
+ }
345
+
346
+ function showExtends() {
347
+ ddrivetip("extends", "No","0..1","-","Inherit settings from a parent config.<br>For more information see docu page 'Derive configs'.")
348
+ }
349
+
350
+ function showFiles() {
351
+ str = 'Specifies the files to build.<br>'+
352
+ 'It\'s valid to specify a single file, e.g.<br>'+
353
+ '<i> &nbsp; &nbsp; Files "src/abc/def.asm"</i><br>'+
354
+ 'or a pattern, e.g.<br>'+
355
+ '<i> &nbsp; &nbsp; Files "*/**/.cpp"</i><br>'+
356
+ 'which builds all files with the ending ".cpp" in all subdirectories.<br>'+
357
+ 'Note: ".." is not allowed in the file path. All files must be located within the project.<br>'+
358
+ 'Note: if patterns are used, Flags and Define are ignored.'
359
+ ddrivetip("Files", "No","0..n","-",str)
360
+ }
361
+
362
+ function showExcludeFiles() {
363
+ str = 'Used to ignore files or directories.<br>'+
364
+ 'ExcludeFiles has higher priority than Files.'
365
+ ddrivetip("ExcludeFiles", "No","0..n","-",str)
366
+ }
367
+
368
+ function showIncludeDir() {
369
+ str = 'Specifies the include directories for the assembler, C and C++ compiler.<p>'+
370
+ 'Use always relative paths, not absolute paths due to portability.<p>'+
371
+ 'Use always "/" and not "\\".<p>'+
372
+ 'It is possible to work with different workspace roots. Do not include something like this: <br>'+
373
+ '<i> &nbsp; &nbsp; IncludeDir "../abc/include"</i><br>'+
374
+ 'but<br>'+
375
+ '<i> &nbsp; &nbsp; IncludeDir "abc/include"</i><br>'+
376
+ 'because it may happen, that abc does not exist in the same root as the current project. The path to abc will be calculated automatically.<p>'+
377
+ 'To include directories of the current project, the project name can be omitted like this:<br>'+
378
+ '<i> &nbsp; &nbsp; IncludeDir "include"</i><br>'+
379
+ '<i> &nbsp; &nbsp; IncludeDir "generated/include"</i><br>'
380
+ ddrivetip("IncludeDir", "No","0..n","-",str)
381
+ }
382
+
383
+ function showDependency() {
384
+ str = 'Specifies another project to be built before this project.<br>'+
385
+ 'The archive, linker libs and search paths are imported from this project to the this project automatically.'
386
+ ddrivetip("Dependency", "No","0..n","-",str)
387
+ }
388
+
389
+ function showDependencyConfig() {
390
+ str = 'Config name of the project to build.'
391
+ ddrivetip("config", "Yes","-","-",str)
392
+ }
393
+
394
+ function showLinkerScript() {
395
+ str = 'Specifies the name including path of the linker script.'
396
+ ddrivetip("Dependency", "No","0..1","-",str)
397
+ }
398
+
399
+ function showMapFile() {
400
+ str = 'A mapfile will be written by the linker.'
401
+ ddrivetip("MapFile", "No","0..1","If name attribute is omitted: $(OutputDir)/$(ArtifactNameBase).map",str)
402
+ }
403
+
404
+ function showArtifactName() {
405
+ str = 'The artifact name inclusive file ending.<br>'+
406
+ 'The artifact will be placed in the output directory.'
407
+ ddrivetip("ArtifactName","No","0..1","The project name and as file ending the default linker file ending.",str)
408
+ }
409
+
410
+ function showMakefileCustom() {
411
+ document.getElementById('makefile_part').className="showInline"
412
+ document.getElementById('commandline_part').className="hide"
413
+ document.getElementById('makefile').className="showRadio"
414
+ document.getElementById('commandline').className="hideRadio"
415
+ ddrivetip("Makefile", "No","0..1 - Either Makefile or CommandLine","-",getMakefileDesc())
416
+ }
417
+
418
+ function showCommandlineCustom() {
419
+ document.getElementById('makefile_part').className="hide"
420
+ document.getElementById('commandline_part').className="showInline"
421
+ document.getElementById('makefile').className="hideRadio"
422
+ document.getElementById('commandline').className="showRadio"
423
+ ddrivetip("CommandLine", "No","0..1 - Either Makefile or CommandLine","-",getCommandLineDesc())
424
+ }
425
+
426
+ function flagExample() {
427
+ return "<br>For removing flags use regular expressions which can be interpreted by ruby.<br>"+
428
+ "Regex options for start and stop string are automatically added in order to avoid substring matches.<br><br>"+
429
+ "Flag strings are always splitted at spaces and computed individually.<br><br>"+
430
+ "<b>Examples:</b><br>"+
431
+ "&nbsp;&nbsp; <i>Flags \"-x -y\"</i> overwrites the inherited flags<br><br>"+
432
+ "&nbsp;&nbsp; <i>Flags add: \"-x -y\"</i> adds -x and -y if not exist<br><br>"+
433
+ "&nbsp;&nbsp; <i>Flags remove: \"-x -y\"</i> removes -x and -y if exist<br><br>"+
434
+ "&nbsp;&nbsp; It is possible to combine the attributes like this:<br>"+
435
+ "&nbsp;&nbsp; <i>Flags remove: \"-x\", add: \"-y\"</i><br><br>"+
436
+ "&nbsp;&nbsp; To remove -g followed by any string, e.g. -g3, the command is:<br>"+
437
+ "&nbsp;&nbsp; <i>Flags remove: \"-g.*\"</i><br>"+
438
+ "&nbsp;&nbsp; An inherited flag string \"-abc -g3 -xy\" will end up in \"-abc -xy\"."
439
+ }
440
+
441
+
442
+ function showToolchainProject() {
443
+ str = 'Toolchain adaptions for a project.'
444
+ ddrivetip("Toolchain", "No","0..1","The DefaultToolchain settings from the main project",str)
445
+ }
446
+
447
+ function showDefaultToolchain() {
448
+ str = 'Settings which are valid for all projects and files unless they will be overwritten.<br>'+
449
+ 'The attribute "basedOn" specifies the basic toolchain configuration provided by bake, e.g. "GCC", "Diab", etc.'
450
+ ddrivetip("DefaultToolchain", "In main project","0..1","-",str)
451
+ }
452
+
453
+ function showFilesFlags() {
454
+ ddrivetip("Flags", "No","0..n","Flags from project","Flags from the project can be overwritten, extended or (partly) removed.<br>"+flagExample())
455
+ }
456
+
457
+ function showFilesDefine() {
458
+ ddrivetip("Define", "No","0..n","-","Defines which are valid only for a specific file.")
459
+ }
460
+
461
+ function showFlags() {
462
+ ddrivetip("Flags", "No","0..n","Flags from DefaultToolchain","Flags from the DefaultToolchain can be overwritten, extended or (partly) removed.<br>"+flagExample())
463
+ }
464
+
465
+ function showDefine() {
466
+ ddrivetip("Define", "No","0..n","-","Defines valid for all files in the project.")
467
+ }
468
+
469
+ function showLibPrefixFlags() {
470
+ ddrivetip("LibPrefixFlags", "No","0..n","-","Linker libs can be prefixed if needed, e.g. with \"-Wl,--whole-archive\".")
471
+ }
472
+
473
+ function showLibPostfixFlags() {
474
+ ddrivetip("LibPostfixFlags", "No","0..n","-","Linker libs can be postfixed if needed, e.g. with \"-Wl,--no-whole-archive\".")
475
+ }
476
+
477
+ function showCompiler() {
478
+ ddrivetip("Compiler", "No","0..3 (for each compiler type: ASM, CPP, C)","-","Flags and defines can be specified independently for each compiler type.")
479
+ }
480
+
481
+ function showArchiver() {
482
+ ddrivetip("Archiver", "No","0..1","-","Settings for the archiver.")
483
+ }
484
+
485
+ function showLinker() {
486
+ ddrivetip("Linker", "No","0..1","-","Makes sense only for ExecutableConfigs.")
487
+ }
488
+
489
+ function showDefaultFlags() {
490
+ ddrivetip("Flags", "No","0..n","-","Default flags.")
491
+ }
492
+
493
+ function showDefaultDefine() {
494
+ ddrivetip("Define", "No","0..n","-","Defines which are valid for all files.")
495
+ }
496
+
497
+ function showDefaultCompiler() {
498
+ ddrivetip("Compiler", "No","0..3 (for each compiler type: ASM, CPP, C)","-","Default compiler settings.")
499
+ }
500
+
501
+ function showDefaultArchiver() {
502
+ ddrivetip("Archiver", "No","0..1","-","Default settings for the archiver.")
503
+ }
504
+
505
+ function showDefaultLinker() {
506
+ ddrivetip("Linker", "No","0..1","-","Default settings for the linker.")
507
+ }
508
+
509
+ function showCommand() {
510
+ ddrivetip("command", "No","-","Depending on toolchain, e.g. \"gcc\"","Change command, e.g. \"$(PATH_TO_EXE)/gcc_speciale.exe\"")
511
+ }
512
+
513
+
514
+
515
+ var offsetxpoint=20 //Customize x offset of tooltip
516
+ var offsetypoint=20 //Customize y offset of tooltip
517
+ var ie=document.all
518
+ var ns6=document.getElementById && !document.all
519
+ var enabletip=false
520
+ if (ie||ns6)
521
+ var tipobj=document.all? document.all["dhtmltooltip"] : document.getElementById? document.getElementById("dhtmltooltip") : ""
522
+
523
+ function ietruebody(){
524
+ return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
525
+ }
526
+
527
+ function ddrivetip(item, manda, quan, def, desc){
528
+ if (ns6||ie){
529
+
530
+ var abc=ie&&!window.opera? ietruebody().clientWidth : window.innerWidth
531
+
532
+ tipobj.style.width=(abc/2-offsetxpoint*2).toString()+"px"
533
+ tipobj.style.backgroundColor="#DDFFDD"
534
+ tipobj.innerHTML="<b><u>"+item+"</u><br><br>Mandatory:</b> "+manda+"<br><b>Quantity</b>: "+quan+"<br><b>Default</b>: "+def+"<br><br><b>Description</b>:<br>"+desc
535
+ enabletip=true
536
+ return false
537
+ }
538
+ }
539
+
540
+ function positiontip(e){
541
+ if (enabletip){
542
+ var curX=(ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
543
+ var curY=(ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
544
+ //Find out how close the mouse is to the corner of the window
545
+ var rightedge=ie&&!window.opera? ietruebody().clientWidth-event.clientX-offsetxpoint : window.innerWidth-e.clientX-offsetxpoint
546
+ var bottomedge=ie&&!window.opera? ietruebody().clientHeight-event.clientY-offsetypoint*2 : window.innerHeight-e.clientY-offsetypoint
547
+ var bottom=ie&&!window.opera? ietruebody().clientHeight : window.innerHeight
548
+
549
+ var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
550
+
551
+ //if the horizontal distance isn't enough to accomodate the width of the context menu
552
+ if (rightedge<tipobj.offsetWidth+offsetxpoint/2)
553
+ //move the horizontal position of the menu to the left by it's width
554
+ tipobj.style.left=ie? ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth-offsetxpoint+"px" : window.pageXOffset+e.clientX-tipobj.offsetWidth-offsetxpoint+"px"
555
+ else if (curX<leftedge)
556
+ tipobj.style.left="5px"
557
+ else
558
+ //position the horizontal position of the menu where the mouse is positioned
559
+ tipobj.style.left=curX+offsetxpoint+"px"
560
+
561
+ //same concept with the vertical position
562
+ if (bottomedge<tipobj.offsetHeight)
563
+ tipobj.style.top=ie? ietruebody().scrollTop+bottom-tipobj.offsetHeight-offsetypoint+"px" : window.pageYOffset+bottom-tipobj.offsetHeight-offsetypoint+"px"
564
+ else
565
+ tipobj.style.top=curY+offsetypoint+"px"
566
+ tipobj.style.visibility="visible"
567
+ }
568
+ }
569
+
570
+ function notip(){
571
+ if (ns6||ie){
572
+ enabletip=false
573
+ tipobj.style.visibility="hidden"
574
+ tipobj.style.left="-1000px"
575
+ tipobj.style.backgroundColor=''
576
+ tipobj.style.width=''
577
+ }
578
+ }
579
+
580
+ document.onmousemove=positiontip
581
+
582
+ </script>
583
+
584
+ </td></table>
585
+
586
+ </body>
587
+ </html>