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 +7 -0
- data/bin/bake-doc +12 -0
- data/doc/cmd/install.html +78 -0
- data/doc/cmd/mount.png +0 -0
- data/doc/cmd/ruby.png +0 -0
- data/doc/cmd/tty.png +0 -0
- data/doc/cmd/usecmd.html +56 -0
- data/doc/cmd/usecygwin.html +49 -0
- data/doc/concepts/buildhierarchy.html +42 -0
- data/doc/concepts/configfile.html +102 -0
- data/doc/concepts/hier.png +0 -0
- data/doc/concepts/mainproject.html +87 -0
- data/doc/dyk/keys.png +0 -0
- data/doc/dyk/tipps.html +51 -0
- data/doc/eclipse/export.html +39 -0
- data/doc/eclipse/import.html +29 -0
- data/doc/eclipse/install.html +26 -0
- data/doc/eclipse/new.html +17 -0
- data/doc/eclipse/use.html +56 -0
- data/doc/further/change.html +160 -0
- data/doc/further/collections.html +21 -0
- data/doc/further/internal.html +42 -0
- data/doc/further/issues.html +18 -0
- data/doc/further/perf.html +54 -0
- data/doc/further/wish.html +39 -0
- data/doc/index.html +78 -0
- data/doc/src/ok.png +0 -0
- data/doc/syntax/derive.html +89 -0
- data/doc/syntax/subst.html +103 -0
- data/doc/syntax/syntax.html +587 -0
- data/doc/vs/create.html +16 -0
- data/doc/vs/install.html +28 -0
- data/doc/vs/use.html +24 -0
- data/lib/bake/mergeConfig.rb +108 -0
- data/lib/bake/model/metamodel.rb +1 -0
- data/lib/bake/version.rb +2 -2
- data/lib/tocxx.rb +39 -12
- metadata +95 -58
@@ -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
|
+
<br>
|
69
|
+
|
70
|
+
<span class="help" onMouseover="showResponsible()" onMouseout="notip()">Responsible</span> {<br>
|
71
|
+
<span class="help" onMouseover="showPerson()" onMouseout="notip()">Person</span> <name>,
|
72
|
+
<span class="help" onMouseover="showPersonEmail()" onMouseout="notip()">email</span>: <adr><br>
|
73
|
+
}<br><br>
|
74
|
+
|
75
|
+
<span class="mycomment"># 0..n configs</span><br>
|
76
|
+
<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> <name> <span class="help" onMouseover="showExtends()" onMouseout="notip()">extends</span>: <parent> {<br><br>
|
79
|
+
|
80
|
+
<span><span style="background-color:#EEEEEE;" class="show">
|
81
|
+
<span class="mycomment"># Valid for all config types</span><br><br>
|
82
|
+
<span class="help" onMouseover="showDependency()" onMouseout="notip()">Dependency</span> <project>,
|
83
|
+
<span class="help" onMouseover="showDependencyConfig()" onMouseout="notip()">config</span>: <name><br>
|
84
|
+
<span class="help" onMouseover="showExternalLibrary()" onMouseout="notip()">ExternalLibrary</span> <lib>,
|
85
|
+
<span class="help" onMouseover="showExternalLibrarySearch()" onMouseout="notip()">search</span>: true|false<br>
|
86
|
+
<span class="help" onMouseover="showUserLibrary()" onMouseout="notip()">UserLibrary</span> <lib><br>
|
87
|
+
<span class="help" onMouseover="showExternalLibrarySearchPath()" onMouseout="notip()">ExternalLibrarySearchPath</span> <path><br>
|
88
|
+
<span class="help" onMouseover="showPreSteps()" onMouseout="notip()">PreSteps</span> {<br>
|
89
|
+
<span class="help" onMouseover="showMakefile()" onMouseout="notip()">Makefile</span> <file>,
|
90
|
+
<span class="help" onMouseover="showMakefileLib()" onMouseout="notip()">lib</span>: <lib>,
|
91
|
+
<span class="help" onMouseover="showMakefileTarget()" onMouseout="notip()">target</span>: <target>,
|
92
|
+
<span class="help" onMouseover="showMakefilePathTo()" onMouseout="notip()">pathTo</span>: <paths>,
|
93
|
+
<span class="help" onMouseover="showStepDefault()" onMouseout="notip()">default</span>: on|off,
|
94
|
+
<span class="help" onMouseover="showStepFilter()" onMouseout="notip()">filter</span>: <name> {<br>
|
95
|
+
<span class="help" onMouseover="showMakefileFlags()" onMouseout="notip()">Flags</span> <flags><br>
|
96
|
+
}<br>
|
97
|
+
<span class="help" onMouseover="showCommandLine()" onMouseout="notip()">CommandLine</span> <line>,
|
98
|
+
<span class="help" onMouseover="showStepDefault()" onMouseout="notip()">default</span>: on|off,
|
99
|
+
<span class="help" onMouseover="showStepFilter()" onMouseout="notip()">filter</span>: <name><br>
|
100
|
+
}<br>
|
101
|
+
<span class="help" onMouseover="showPostSteps()" onMouseout="notip()">PostSteps</span> {<br>
|
102
|
+
<span class="mycomment"># Same as for PreSteps</span><br>
|
103
|
+
}<br>
|
104
|
+
<span class="help" onMouseover="showDefaultToolchain()" onMouseout="notip()">DefaultToolchain</span> <basedOn> {<br>
|
105
|
+
<span class="help" onMouseover="showDefaultCompiler()" onMouseout="notip()">Compiler</span> ASM | CPP | C,
|
106
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
107
|
+
<span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> <flags><br>
|
108
|
+
<span class="help" onMouseover="showDefaultDefine()" onMouseout="notip()">Define</span> <define><br>
|
109
|
+
}<br>
|
110
|
+
<span class="help" onMouseover="showDefaultArchiver()" onMouseout="notip()">Archiver</span>
|
111
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
112
|
+
<span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> <flags><br>
|
113
|
+
}<br>
|
114
|
+
<span class="help" onMouseover="showDefaultLinker()" onMouseout="notip()">Linker</span>
|
115
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
116
|
+
<span class="help" onMouseover="showDefaultFlags()" onMouseout="notip()">Flags</span> <flags><br>
|
117
|
+
<span class="help" onMouseover="showLibPrefixFlags()" onMouseout="notip()">LibPrefixFlags</span> <flags><br>
|
118
|
+
<span class="help" onMouseover="showLibPostfixFlags()" onMouseout="notip()">LibPostfixFlags</span> <flags><br>
|
119
|
+
}<br>
|
120
|
+
}<br></span><br></span>
|
121
|
+
|
122
|
+
<span id="libExe_part"><span class="show" style="background-color:#EEEEEE;">
|
123
|
+
<span class="mycomment"># Valid for ExecutableConfig and LibraryConfig</span><br><br>
|
124
|
+
<span class="help" onMouseover="showFiles()" onMouseout="notip()">Files</span> <pattern> {<br>
|
125
|
+
<span class="help" onMouseover="showFilesFlags()" onMouseout="notip()">Flags</span> <flags>, add: <flags>, remove: <flags><br>
|
126
|
+
<span class="help" onMouseover="showFilesDefine()" onMouseout="notip()">Define</span> <define><br>
|
127
|
+
}<br>
|
128
|
+
<span class="help" onMouseover="showExcludeFiles()" onMouseout="notip()">ExcludeFiles</span> <pattern><br>
|
129
|
+
<span class="help" onMouseover="showIncludeDir()" onMouseout="notip()">IncludeDir</span> <dir><br>
|
130
|
+
<span class="help" onMouseover="showToolchainProject()" onMouseout="notip()">Toolchain</span> {<br>
|
131
|
+
<span class="help" onMouseover="showCompiler()" onMouseout="notip()">Compiler</span> ASM | CPP | C,
|
132
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
133
|
+
<span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> <flags>, add: <flags>, remove: <flags><br>
|
134
|
+
<span class="help" onMouseover="showDefine()" onMouseout="notip()">Define</span> <define><br>
|
135
|
+
}<br>
|
136
|
+
<span class="help" onMouseover="showArchiver()" onMouseout="notip()">Archiver</span>
|
137
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
138
|
+
<span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> <flags>, add: <flags>, remove: <flags><br>
|
139
|
+
}<br>
|
140
|
+
<span class="help" onMouseover="showLinker()" onMouseout="notip()">Linker</span>
|
141
|
+
<span class="help" onMouseover="showCommand()" onMouseout="notip()">command</span>: <cmd> {</i><br>
|
142
|
+
<span class="help" onMouseover="showFlags()" onMouseout="notip()">Flags</span> <flags>, add: <flags>, remove: <flags><br>
|
143
|
+
<span class="help" onMouseover="showLibPrefixFlags()" onMouseout="notip()">LibPrefixFlags</span> <flags>, add: <flags>, remove: <flags><br>
|
144
|
+
<span class="help" onMouseover="showLibPostfixFlags()" onMouseout="notip()">LibPostfixFlags</span> <flags>, add: <flags>, remove: <flags><br>
|
145
|
+
}<br>
|
146
|
+
}<br></span><br></span>
|
147
|
+
|
148
|
+
<span id="exe_part"><span class="show" style="background-color:#EEEEEE;">
|
149
|
+
<span class="mycomment"># Valid for ExecutableConfig</span><br><br>
|
150
|
+
<span class="help" onMouseover="showLinkerScript()" onMouseout="notip()">LinkerScript</span> <script><br>
|
151
|
+
<span class="help" onMouseover="showMapFile()" onMouseout="notip()">MapFile</span> <name><br>
|
152
|
+
<span class="help" onMouseover="showArtifactName()" onMouseout="notip()">ArtifactName</span> <name><br></span><br></span>
|
153
|
+
|
154
|
+
<span id="custom_part" class="hide"><span style="background-color:#EEEEEE;" class="show">
|
155
|
+
<span class="mycomment"># Valid for CustomConfig</span><br><br>
|
156
|
+
<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"> <name>,
|
159
|
+
<span class="help" onMouseover="showMakefileLib()" onMouseout="notip()">lib</span>: <lib>,
|
160
|
+
<span class="help" onMouseover="showMakefileTarget()" onMouseout="notip()">target</span>: <target>,
|
161
|
+
<span class="help" onMouseover="showMakefilePathTo()" onMouseout="notip()">pathTo</span>: <paths> {<br>
|
162
|
+
<span class="help" onMouseover="showMakefileFlags()" onMouseout="notip()">Flags</span> <flags><br>
|
163
|
+
}<br>
|
164
|
+
</span>
|
165
|
+
<span style="background-color:#DDDDDD;" id="commandline_part" class="hide"><line></span>
|
166
|
+
<br></span><br></span>
|
167
|
+
}<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> 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> 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> UserLibrary "xy/z/libUser.a"</i><br>'+
|
261
|
+
'<i> 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> --include_filter <filter name></i><br>'+
|
296
|
+
'<i> --exclude_filter <filter name></i><br>'
|
297
|
+
ddrivetip("filter", "No","-","-",str)
|
298
|
+
}
|
299
|
+
|
300
|
+
function getMakefileDesc() {
|
301
|
+
return 'Makefile to be started, e.g.:<br>'+
|
302
|
+
'<i> 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> CommandLine "ddump -Ruv -y 0xFFFFF -oRelease/application.bin Release/application.elf"</i><br>'+
|
339
|
+
'<i> 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> Files "src/abc/def.asm"</i><br>'+
|
354
|
+
'or a pattern, e.g.<br>'+
|
355
|
+
'<i> 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> IncludeDir "../abc/include"</i><br>'+
|
374
|
+
'but<br>'+
|
375
|
+
'<i> 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> IncludeDir "include"</i><br>'+
|
379
|
+
'<i> 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
|
+
" <i>Flags \"-x -y\"</i> overwrites the inherited flags<br><br>"+
|
432
|
+
" <i>Flags add: \"-x -y\"</i> adds -x and -y if not exist<br><br>"+
|
433
|
+
" <i>Flags remove: \"-x -y\"</i> removes -x and -y if exist<br><br>"+
|
434
|
+
" It is possible to combine the attributes like this:<br>"+
|
435
|
+
" <i>Flags remove: \"-x\", add: \"-y\"</i><br><br>"+
|
436
|
+
" To remove -g followed by any string, e.g. -g3, the command is:<br>"+
|
437
|
+
" <i>Flags remove: \"-g.*\"</i><br>"+
|
438
|
+
" 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>
|